Web Audio APIのバンドパスフィルター機能を使用しようとしていますが、私の質問はもっと一般的だと思います。バンドパスフィルターの「Q」値がわかりません。中間周波数XヘルツのYヘルツ以内の周波数を通過させるようにフィルターを構成できるようにしたいと思います。
私はオーディオプログラミングに非常に慣れていないので、Qを計算するために考慮する必要がある他の変数はありますか?
Web Audio APIのバンドパスフィルター機能を使用しようとしていますが、私の質問はもっと一般的だと思います。バンドパスフィルターの「Q」値がわかりません。中間周波数XヘルツのYヘルツ以内の周波数を通過させるようにフィルターを構成できるようにしたいと思います。
私はオーディオプログラミングに非常に慣れていないので、Qを計算するために考慮する必要がある他の変数はありますか?
1000Hzにフィルターがあり、500Hzで開始し、2000Hzで終了するとします。
まず、各方向に同じヘルツ数が拡張されていないことに気付くでしょう。これは、フィルターの帯域幅が周波数ではなくオクターブに基づいているためです。したがって、この場合は、1オクターブ下と1オクターブ上に伸びます。言い換えると、周波数はローエンドで2で除算され、ハイエンドで2で乗算されます。これにより、2オクターブの帯域幅が得られます。
とにかく、頻度を知っていると仮定して、これを計算する方法は次のとおりです。
Q = center_frequency / (top_frequency - bottom_frequency)
この場合、これは1000 / ( 2000 - 500 )
、または0.667になります。
ターゲット帯域幅(オクターブ単位)を念頭に置いている限り、上限周波数と下限周波数を知らなくても計算できます。
function getQ( bandwidth ){
return Math.sqrt( Math.pow(2, bandwidth) ) / ( Math.pow(2, bandwidth) - 1 )
}
繰り返しますが2
、帯域幅の引数として渡すと、同じ結果が得られます:Q=0.667。
お役に立てば幸いです。