Javascript AnalyserNode低频(低音)

时间:2017-02-18 10:34:44

标签: javascript web html5-audio web-audio web-audio-api

我已阅读有关AnalyserNode的MDN Article,并尝试取消W3C文档。 我有一个工作代码:

Frequency Canvas

但非常低的低音"频率只占5巴左右.. 是否可以更详细地显示较低频率?

2 个答案:

答案 0 :(得分:1)

@cwilso基本上是正确的。

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

低通滤波信号以获得您感兴趣的低频。对信号进行抽取。将此信号保存在AudioBuffer中。使用OfflineAudioContextAudioBufferSource创建AnalyserNode。运行离线上下文并从分析仪中获取频率数据。

例如,让我们说上下文以48 kHz运行。我们希望改善3 kHz以下的频率。因此,创建截止频率为3 kHz的低通滤波器。 (使用单个IIRFilter或几个双二阶滤波器的级联。)获取经过滤的音频并将其发送到AudioWorklet或ScriptProcessor。该节点仅通过保留每个第16个样本将信号抽取8倍(48 /(2 * 3))。收集足够的数据并将其保存在AudioBuffer中,采样率为6 kHz。该抽取导致在6kHz的采样率下带宽为3kHz的信号。因此,信号的有趣部分占据了整个带宽。

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

答案 1 :(得分:0)

不,不是没有为分析仪使用更大的FFT。数学在FFT中的工作方式,这些分档是线性分布的;如果你想要更多细节,你需要在整个频谱上获得更多细节(当然,以相应的CPU成本)。