1

標準の DJ ミキサーを模倣した 3 バンド EQ の実装を検討しています。

残念ながら、私はあまり運がありません。BiquadFilter ノードを作成し、それらをゲイン ノードに接続する必要があることはわかっています。残念ながら、私は望ましい結果に近づくことはできません。

私がこれまでに得た唯一の成功は、トラックの音量を制御するための gainNode だけです。

どんな援助でも大歓迎です。

ありがとう、スタン

4

1 に答える 1

6

先に進み、idbehold の質問に対する私の回答を詳しく説明します。

タイプ 5 (ピーキング) のフィルターを使用することをお勧めします。これにより、すべての周波数が通過し、それぞれの filter.frequency.value を設定した周波数でのみ増幅/縮小されます。これにより、フィルターを直列に接続できるため、個別のオーディオ パスは必要ありません。ローシェルフ フィルターを最初のフィルターとして使用し、ハイシェルフ フィルターを 3 番目のフィルターとして使用することも検討できます。これは、3 バンド イコライザーではかなり一般的です。

一連のピーキング フィルターを使用する場合、周波数ごとに個別のゲイン ノードは必要なく、特定のフィルターに filter.gain.value を設定するだけです。

コードは次のようになります。

var lowshelf = context.createBiquadFilter(),
    mid = context.createBiquadFilter(),
    highshelf = context.createBiquadFilter();

 //set the filter types (you could set all to 5, for a different result, feel free to experiment)
 lowshelf.type = 3;
 mid.type = 5;
 highshelf.type = 4;

 //connect 'em in order
 yourInput.connect(lowshelf);
 lowshelf.connect(mid);
 mid.connect(highshelf);
 highshelf.connect(yourOutput);

次に、各帯域をそれぞれの Q、周波数、およびゲイン値で調整できます ( https://dvcs.w3.org/hg/audio/raw-file/tip/webaudio/specification.html#BiquadFilterNodeをチェックして、どのパラメーターが機能するかを確認してください)。フィルタの種類)、例:

 lowshelf.gain.value = 0.6;
 lowshelf.frequency.value = 300;

編集

別のゲインを追加するには、次のようにします

  var gainNode = context.createGainNode();

そして、どちらかを行います

gainNode.connect(lowshelf); //pre EQ

また

highshelf.connect(gainNode); //post EQ

EQ の前か後かによって異なります。することでゲインを制御します

gainNode.gain.value = 0.6;
于 2012-12-10T08:42:57.743 に答える