2017-02-18 100 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

啊,我的回答是不正確的。這是爲了改善高頻。我會很快更新一個更好的答案。 –