2017-02-18 62 views
-1

我已阅读关于AnalyserNode的MDN Article,并试图展开W3C文档的解锁。 我有一个工作代码:Javascript AnalyserNode低频(低音)

Frequency Canvas

但非常低的“低音”频率仅占5条左右.. 是否可以更详细地显示较低的频率?

+2

代码无法从图像运行,因此请包含您的代码而不是图像。 –

回答

0

不,不是没有为分析仪使用更大的FFT。数学运算在FFT中的方式是,分箱线性展开;如果你想了解更多细节,你需要在整个频谱中获得更多的细节(当然,在相应的CPU成本下)。

1

@cwilso基本上是正确的。

但是,这里有一个替代方案,可以得到你想要的(相当)一些工作,分析和思考。

低通滤波信号以获得您感兴趣的低频。对信号进行抽样。将此信号保存在AudioBuffer中。用AudioBufferSourceAnalyserNode创建一个OfflineAudioContext。运行离线环境并从分析仪中获取频率数据。

作为一个例子,假设上下文运行在48 kHz。我们想改进3 kHz以下的频率。因此,创建截止频率为3 kHz的低通滤波器。 (使用单个IIRFilter或多个双二阶滤波器级联)。将滤波后的音频发送到AudioWorklet或ScriptProcessor。该节点将通过仅保留每第16个采样来将信号抽取因子8(48 /(2 * 3))。收集足够的数据并将其保存在采样率为6 kHz的AudioBuffer中。这种抽取以6 kHz的采样速率产生带宽为3 kHz的信号。因此,信号的有趣部分占用整个带宽。

现在我们有了这个缓冲区,创建一个采样率为3 kHz的离线上下文。在此上下文中使用该缓冲区创建一个AudioBufferSourceNode,并将其传递给AnalyserNode。从分析仪获取频率数据。如果您使用1024点,则每个频率箱现在为3 kHz/1024或约3 Hz宽。你已经完善了低频。

+0

我想了解一些关于这种方法的更多细节。我仍然在学习很多关于音频的知识,但我在理解您的指示方面遇到了一些麻烦。 – adamk33n3r

+0

啊,我的回答是不正确的。这是为了改善高频。我会很快更新一个更好的答案。 –