5

Web Audio APIのバンドパスフィルター機能を使用しようとしていますが、私の質問はもっと一般的だと思います。バンドパスフィルターの「Q」値がわかりません。中間周波数XヘルツのYヘルツ以内の周波数を通過させるようにフィルターを構成できるようにしたいと思います。

私はオーディオプログラミングに非常に慣れていないので、Qを計算するために考慮する必要がある他の変数はありますか?

4

1 に答える 1

11

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。

お役に立てば幸いです。

于 2013-03-26T04:39:57.213 に答える