Bell EQ Frequency Response Visualizer
Bell EQのCenter Frequency、Gain、Qを動かしながら、周波数応答と正規化済みbiquad係数を確認できるブラウザツールを作りました。20 Hz〜20 kHzのカーブをリアルタイムに描画し、各パラメーターがフィルターの形へどう影響するかを視覚的に追えます。
Bell EQ Frequency Response Visualizerを開く →
Node.jsや外部ライブラリは必要ありません。リポジトリのindex.html、biquad.js、visualizer.jsを同じフォルダーへ置き、index.htmlをChromeで開くと使えます。
Bell EQ coefficients
係数計算はRBJ Audio EQ Cookbookのpeaking EQをもとにしています。Center Frequencyをf₀、GainをG、Sample Rateをfₛとして、まず次の値を求めます。
A = 10^(G / 40)
ω₀ = 2πf₀ / fₛ
α = sin(ω₀) / (2Q)
分母の先頭が1になるよう、全係数をa₀で正規化します。JavaScriptでは、RNBOのbiquad.next()へ役割を対応づけやすいようにfeedforward0..2とfeedback1..2という名前で返しています。
const a0 = 1 + alpha / amplitude;
return {
feedforward0: (1 + alpha * amplitude) / a0,
feedforward1: (-2 * cosine) / a0,
feedforward2: (1 - alpha * amplitude) / a0,
feedback1: (-2 * cosine) / a0,
feedback2: (1 - alpha / amplitude) / a0,
};
Frequency response
グラフ表示では、計算した係数を伝達関数へ代入し、単位円上のz = eʲωで振幅を評価します。各周波数の複素数としての分子と分母を実部・虚部に分け、振幅比をdBへ変換します。
magnitudeDb = 20 log₁₀ |H(eʲω)|
20 Hz〜20 kHzを対数スケールで500点サンプリングし、その結果をSVGのカーブとして描画しています。低域から高域まで、オクターブごとの見た目の幅を自然に保てるため、オーディオ用EQの確認に向いた表示になります。
Controls
- Center Frequency — 20 Hz〜20 kHz。対数スケールで中心周波数を移動
- Gain — -18 dB〜+18 dB。ブーストとカットの量を調整
- Q / Bandwidth — 0.1〜10。山や谷の帯域幅を調整
- Sample Rate — 48 kHz固定
Qを上げると中心周波数の周辺だけが狭く変化し、Qを下げると広い帯域へ緩やかに作用します。Gainを0 dBにすると、係数値は変化しても周波数応答はフラットになります。
Visualizer only
このツールは音声を再生・加工するEQプラグインではありません。Web Audio APIのBiquadFilterNodeやサンプル単位の差分方程式は使わず、グラフ表示に必要な係数計算と振幅評価だけを行います。
DSPを実装する前の係数確認、RNBOパッチと数値を照合するとき、Qと帯域幅の関係を説明するときに、すぐ開ける小さなリファレンスとして使えるようにしました。