BiquadFilterを聴きくらべる
Web Audio APIのBiquadFilterNodeで設定するQの効きが悪いと思ったことがある。もしくは、Max/MSPのパッチを渡されてJavaScriptで再現しないといけないっ!!となった時に、音の雰囲気がどうも違ってて悩むというウェブオーディオあるあるの噂を聞いたことがあるかも知れない。
そういう諸兄のために、いくつかのフィルタレスポンスを比較して視聴できるページを作った。
係数計算の部分はそれぞれ npm package として使える。
デモページでは以下の4種類を比較できる。
- Audio-EQ-Cookbook.txt - フィルタ係数計算式の定番。他のやつもこれがベースになっている。
- Max/MSP filtergraph~ - Max/MSPで使われるやつ。
- Web Audio API v1 - Web Audio API で Firefox, Safari で使われているやつ。
- Web Audio API v2 - Web Audio API のアップデート版。今のところ Chrome のみ対応している。
ついでにCookbookと比較したそれぞれの違いをまとめる。グラフは横軸が周波数(100Hz, 1000Hz, 10000Hzに線が引いてある)で縦軸が強度(dB)となっている。
lowpass, highpass
- Web Audio API の
Q
は効きが悪い。(仕様に記述あり、デシベルとほぼ一致する) - Web Audio API の v1 と v2 でちょっとだけ違う。
- Max/MSP は
gain
でグラフ全体を持ち上げることができる。
(lowpass, freq: 1000, Q: 6, gain: 2)
bandpass, notch, allpass
(bandpass, freq: 1000, Q: 6, gain: 2)
peaking
(peaking, freq: 1000, Q: 6, gain: 2)
lowshelf, highshelf
- Web Audio API は
Q
が無効で、スロープを作れない。 - Web Audio API の v1 と v2 で違いはない。
- Max/MSP は
Q
の計算方法が違っていて、他のよりも強めになる。
(lowshelf, freq: 1000, Q: 6, gain: 2)
resonant
- Max/MSP にのみあって便利。
(resonant, freq: 1000, Q: 6, gain: 2)