音の鳴るブログ

鳴らないこともある

BiquadFilterを聴きくらべる

Web Audio APIのBiquadFilterNodeで設定するQの効きが悪いと思ったことがある。もしくは、Max/MSPのパッチを渡されてJavaScriptで再現しないといけないっ!!となった時に、音の雰囲気がどうも違ってて悩むというウェブオーディオあるあるの噂を聞いたことがあるかも知れない。

そういう諸兄のために、いくつかのフィルタレスポンスを比較して視聴できるページを作った。

係数計算の部分はそれぞれ npm package として使える。

デモページでは以下の4種類を比較できる。

ついでにCookbookと比較したそれぞれの違いをまとめる。グラフは横軸が周波数(100Hz, 1000Hz, 10000Hzに線が引いてある)で縦軸が強度(dB)となっている。

lowpass, highpass

  • Web Audio APIQ は効きが悪い。(仕様に記述あり、デシベルとほぼ一致する)
  • Web Audio API の v1 と v2 でちょっとだけ違う。
  • Max/MSPgain でグラフ全体を持ち上げることができる。

(lowpass, freq: 1000, Q: 6, gain: 2) f:id:mohayonao:20161002104508p:plain

bandpass, notch, allpass

  • Web Audio API は Cookbook と同じ。
  • Web Audio API の v1 と v2 で違いはない。
  • Max/MSPgain でグラフ全体を持ち上げることができる。

(bandpass, freq: 1000, Q: 6, gain: 2) f:id:mohayonao:20161002104934p:plain

peaking

  • Web Audio API は Cookbook と同じ。
  • Web Audio API の v1 と v2 で違いはない。
  • Max/MSPQ の計算方法が違っていて、他のよりも強めになる。

(peaking, freq: 1000, Q: 6, gain: 2) f:id:mohayonao:20161002105211p:plain

lowshelf, highshelf

  • Web Audio APIQ が無効で、スロープを作れない。
  • Web Audio API の v1 と v2 で違いはない。
  • Max/MSPQ の計算方法が違っていて、他のよりも強めになる。

(lowshelf, freq: 1000, Q: 6, gain: 2) f:id:mohayonao:20161002105551p:plain

resonant

  • Max/MSP にのみあって便利。

(resonant, freq: 1000, Q: 6, gain: 2) f:id:mohayonao:20161002105639p:plain