在 AnalyserNode 的 FFT 分析数据中,我如何知道哪一个对应于什么频率?

How do I know which one corresponds to what frequency, in `AnalyserNode`'s FFT analysis data?

Web Audio APIAnalyserNode's getFloatFrequencyData() and getByteFrequencyData() methods give us FFT analysis data, whose domain is frequency and codomain is amplitude, within a typed array that has AnalyserNode.frequencyBinCount 元素中,根据 Mozilla Developer Network.

对于阵列,我如何知道哪个元素映射到什么频率?

AnalyserNode 的频域输出相当简单。 设数组长度为 N,设 f 为数组。那么 f[0] 就是 直流分量,f[N-1]对应频率为 context.sampleRate / 2. 其余点数均等分布 在这些值之间。

由于分析器的工作方式,还有一些额外的复杂性 作品。在计算之前将 window 应用于信号 转换,这导致频率值的 "smearing", 因此纯正弦波可能没有非零的变换 正好一个值。