Tag: fftw libsndfile

WAV文件分析C(libsndfile,fftw3)

我正在尝试开发一个简单的C应用程序,它可以在WAV文件中的给定时间戳下在特定频率范围内给出0-100的值。 示例:我的频率范围为44.1kHz(典型的MP3文件),我想将该范围分成n个范围(从0开始)。 然后我需要得到每个范围的幅度,从0到100。 到目前为止我管理的内容: 使用libsndfile我现在能够读取WAV文件的数据。 infile = sf_open(argv [1], SFM_READ, &sfinfo); float samples[sfinfo.frames]; sf_read_float(infile, samples, 1); 但是,我对FFT的理解相当有限。 但我知道为了使振幅达到我需要的范围是必需的。 但是我该如何继续前进呢? 我找到了FFTW-3库,它似乎适用于此目的。 我在这里找到了一些帮助: https : //stackoverflow.com/a/4371627/1141483 并在这里查看了FFTW教程: http ://www.fftw.org/fftw2_doc/fftw_2.html 但由于我不确定FFTW的行为,我不知道从这里开始。 另一个问题,假设你使用libsndfile:如果强制读取单引导(使用立体声文件)然后读取样本。 那么你真的只会阅读整个文件的一半样本吗? 其中一半来自频道1,还是自动过滤出来? 非常感谢你的帮助。 编辑:我的代码可以在这里看到: double blackman_harris(int n, int N){ double a0, a1, a2, a3, seg1, seg2, seg3, w_n; a0 = 0.35875; a1 = 0.48829; a2 = […]