Я пытаюсь разделить каждое подразделение барабанной последовательности на отдельный массив внутри двумерного массива (строки для какого подразделения, столбцы для данных в каждом подразделении). Я определяю, сколько сэмплов на подразделение ранее в коде с пользовательскими спецификациями по темпу и желаемому подразделению. Я чувствую, что у меня есть несколько разумный метод для определения размера входного файла в примерах (показан первый раздел). Мой вопрос: как есть, цикл sf_read_double while не будет работать. Цикл запускается только тогда, когда я умножаю «буфлен» на 2 (возможно, количество каналов). И когда он запускается, цикл превышает общее количество рассчитанных выборок и приводит к ошибке sug. Что я делаю неправильно в этом коде?
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++;
}