将 FFT 应用于 WAV 文件数据的 C++

c++ applying FFT to wav file data

本文关键字:数据 C++ 文件 WAV FFT 应用于      更新时间:2023-10-16

这是我第一次使用 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;
}

我假设数据指针包含我需要的信息,但我不知道如何辨别这些信息。我将其用作参考,但我不知道如何看待"右通道左通道"方面以及如何准备这些数据以用于 FFT。如果您有任何关于此的良好文档的参考,我将不胜感激,到目前为止,我的搜索工作导致了 NILL。

编辑:另外,如果有人能指出我在这个级别上操作wav格式文件的好指南,我将不胜感激。提前谢谢你。

您拥有的数据位于 PCM 数据包中。

尝试以下问题作为起点:

  • 音频如何用数字表示?
  • 如何分析 PCM 或 WAV 样本的基频?
  • 从原始波数据中检测特定频率/音调.

对于您问题的FFT部分,您可能需要考虑 https://dsp.stackexchange.com/。