如何使用 低音库为给定的音频文件绘制频谱
我指的是类似于Audacity生成的图表:

我知道我可以在给定的时间(当我播放音频时)获得快速傅立叶变换的数据:
float fft[1024];
BASS_ChannelGetData(chan, fft, BASS_DATA_FFT2048); // get the FFT data这样,每次t的数组中就有1024个值。那个阵列中的值是信号振幅(dB),对吗?如果是,频率(Hz)是如何与这些值相关联的?根据指数?
我是一个程序员,但我对音频处理完全没有经验。所以我不知道该怎么做,用我掌握的数据来绘制所需的光谱。
我正在使用C++版本,但其他语言中的示例很好(我可以转换它们)。
发布于 2015-03-17 22:15:01
从文档中,该标志将导致计算FFT的幅度,从它的声音,它是线性的幅度。
dB = 10 * log10(intensity);
dB = 20 * log10(pressure);(我不确定音频文件样本是强度测量还是压力测量。传声器输出与什么线性相关?)
同时,它指示输入的长度和FFT匹配的长度,但是有一半的FFT (对应于负频率)被丢弃。因此,最高的FFT频率将是一半的采样频率。这发生在N/2上。
例如,使用2048样本FFT,将返回1024个浮点值.如果使用BASS_DATA_FIXED标志,那么FFT值将是8.24定点形式,而不是浮点。每个值,或"bin",范围从0到1(如果样本数据是浮点而不是剪裁的话,实际上可以更高)。第一桶含有直流分量,第二桶含有通道采样率的1/2048幅度,其次是2/2048,3/2048等
这似乎很清楚。
https://stackoverflow.com/questions/29110288
复制相似问题