我已使用Web Audio API中的getByteFrequencyData
方法使用了来自Analyzer节点的FFT数据来创建频谱可视化器,如下所示:
在这种情况下,我有256个数据箱。这个数字到底对应什么?是每个频率分量的分贝电平。如果是这样,我怎么知道每个仓的频率值对应于什么?
我想知道,因此我可以尝试构建图形方程,因此想知道在哪些点指示滤波器带。理想情况下,我想表示20Hz至20kHz的频率,并相应绘制出它们之间的间隔。
谢谢你的帮助。
最佳答案
是的,getByteFrequencyData
会导致0到255之间的值标准化数组。
(它将数据复制到传递给它的数组中)。
频带被均分,因此数组的每个元素N对应于:
N * samplerate/fftSize
因此,第一个bin为0。
并假设采样率为44100,且
<analyzerNode>.fftSize
为512,则秒为:86.13 Hz,依此类推...您会在dsp和SO上找到这两个有用的问题和答案:
请注意,样本数据的长度是
<analyzerNode>.fftSize
的一半,有效地将频率范围限制为采样率的一半。关于audio - Web Audio API中的FFT数据对应什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14789283/