Я пытаюсь отделить каждое подразделение барабанной последовательности от отдельного массива внутри массива 2d (строки, для которых подразделение, столбцы для данных в каждом подразделении). Я определяю, сколько выборок на подразделение ранее в коде с пользовательскими спецификациями по темпу и желаемому подразделению. Я считаю, что у меня есть несколько разумный метод для определения размера входного файла в образцах (показан первый раздел). Мой вопрос: как есть, цикл sf_read_double while не будет запущен. Только когда я умножаю «buflen» на 2 (возможно, количество каналов), что цикл работает. И когда он запустит , цикл проходит мимо общего количества вычисленных отсчетов и приводит к сбою в отключении. Что я делаю неправильно в этом коде?Почему этот звуковой файл не читается с помощью sf_read_double?
double framesArray[sfinfo.frames];
int numframes = (sizeof(framesArray)/sizeof(double));
int totalSamps = numframes * sfinfo.channels;
int totalSubdivisions = totalSamps/sampsPerSubdivision;
int buflen = sampsPerSubdivision;
int i;
double** choppeddata = (double**) malloc(totalSubdivisions * sizeof(double**));
for (i = 0; i < totalSubdivisions; i++)
choppeddata[i] = (double*) malloc(buflen * sizeof(double*));
double* buffereddata = (double*) malloc(buflen * sizeof(double*));
double* outdata = (double*) malloc(totalSamps * sizeof(double*));
int j = 0, k = 0, sampnum = 0;
while ((readcount = sf_read_double (infile, buffereddata, buflen)))
{
for (k = 0; k < buflen; k++)
{
choppeddata[j][k] = buffereddata[k];
sampnum++;
}
j++;
}
Я немного начинающий программист, поэтому, я думаю, я этого не знал и не знал, зачем мне это нужно. Что касается буфера, когда я распечатываю то, что делает цикл, длина буфера работает хорошо. – pritchardsmith
История броска связана с целым делением (если вы не бросаете в двойник). В остальном вы сказали, что 'как есть, цикл sf_read_double while не будет работать. Только когда я умножу «buflen» на 2 (возможно, количество каналов), что цикл работает, что заставило меня вывести, что 'sf_read_double' возвращался в нуль в начале ... Правильно ли? –
Другая мысль: что произойдет, если вы прочтете образцы один за одним, а не блоками размера 'buflen'? Попытка этого даст вам реальное количество доступных образцов ('sampnum'), и, таким образом, вы сможете убедиться, что это число правильно ... Извините, но мне придется уйти. Держите меня в петле, если вы узнаете что-то новое. –