2013-01-11 28 views
2

我正在學習使用web audio api來合成和處理聲音。我發現我有一個BiquadFilterNode類可以使用,但它只允許指定一個定義的過濾器類型("lowpass", "highpass", "bandpass", "lowshelf", "highshelf", "peaking", "notch", "allpass")並通過這些過濾器的元參數來控制它:Q,gaincenter-frequency網絡音頻API和濾波器係數

有沒有辦法指定數字濾波器的實際係數?換句話說,對於形式的過濾器:

 b_0 + b_1*z^(-1) + b_2*z^(-2) 
H(z) = ----------------------------- 
     1 + a_1*z^(-1) + a_2*z^(-2) 

我可以採用某種直接指定的b_0, b_1, b_2, a_1, a_2值是多少?

我問,因爲雖然預定義的過濾器類型非常方便,但它們不一定涵蓋所有用例。通過指定係數可以實現一階濾波器,參數部分等。

+0

這似乎是不可能的。但是[這裏](https://dvcs.w3.org/hg/audio/raw-file/tip/webaudio/specification.html#BiquadFilterNode)被寫入'多個BiquadFilterNode過濾器可以被組合以形成更復雜的過濾器'。也許這有幫助..其他方面,你必須自己實現過濾器。 – bitWorking

+0

感謝您的建議@redreggae。我知道我可以直接在JavaScript中實現過濾器(使用[ScriptProcessorNode](http://www.w3.org/TR/webaudio/#ScriptProcessorNode-section)),但這樣效率很低,我很確定所有的東西都需要已經在'BiquadFilterNode'的低層實現了。只是通過API公開係數的問題。 – jorgeh

回答

0

目前尚不可能,但它是一個簡單的API添加。

至少,很明顯我們需要添加對一階濾波器的支持。

+0

好吧,如果WebAudio後面的人告訴我是不可能,我想不是。 我知道你可能有很多更重要的東西在WebAudio上工作,但對於它的價值來說,可以通過我的投票直接暴露濾波器係數;-) – jorgeh

0

這是不可能的。工作組中有一個完全獨立的DSP API提案,但尚未完全推出。

+0

感謝分享!我不知道有一個DSP API的提議,但這聽起來很酷。也就是說,在這個特定的用例中使用另一個API可能是一種矯枉過正,因爲這可以很容易地添加到webAudio API中(請參閱上面的@ChrisRogers註釋) – jorgeh