Я впервые работаю с файлами wav и fft. Учитывая следующий код:
char* loadWAV(const char* fn, int& chan, int& samplerate, int& bps, int& size){
char buffer[4];
ifstream in(fn, ios::binary);
in.read(buffer, 4); //ChunkID "RIFF"
if(strncmp(buffer, "RIFF", 4) != 0){
cerr << "this is not a valid wave file";
return NULL;
}
in.read(buffer,4); //ChunkSize
in.read(buffer,4); //Format "WAVE"
in.read(buffer,4); // "fmt "
in.read(buffer,4); // 16
in.read(buffer,2); // 1
in.read(buffer,2); // NUMBER OF CHANNELS
chan = convertToInt(buffer,2);
in.read(buffer,4); // SAMPLE RATE
samplerate = convertToInt(buffer,4);
in.read(buffer,4); // ByteRate
in.read(buffer,2); // BlockAlign
in.read(buffer,2); // bits per sample
bps = convertToInt(buffer,2);
in.read(buffer,4); // "data"
in.read(buffer,4);
size = convertToInt(buffer,4);
char * data = new char[size];
in.read(data,size);
return data;
}
Я предполагаю, что указатель данных содержит нужную мне информацию, но я не знаю, как распознать эту информацию. Я использую это как ссылку, но я не знаю, что сделать из аспекта «правый канал - левый канал» и как подготовить эти данные для использования в БПФ. Если у вас есть какие-либо ссылки на хорошую документацию по этому поводу, я ценю это, мои усилия по поиску пока привели к NILL.
edit: также Если бы кто-нибудь мог указать мне на хорошее руководство по работе с файлами формата wav на этом уровне, я был бы очень признателен. Заранее спасибо.