標準の DJ ミキサーを模倣した 3 バンド EQ の実装を検討しています。
残念ながら、私はあまり運がありません。BiquadFilter ノードを作成し、それらをゲイン ノードに接続する必要があることはわかっています。残念ながら、私は望ましい結果に近づくことはできません。
私がこれまでに得た唯一の成功は、トラックの音量を制御するための gainNode だけです。
どんな援助でも大歓迎です。
ありがとう、スタン
標準の DJ ミキサーを模倣した 3 バンド EQ の実装を検討しています。
残念ながら、私はあまり運がありません。BiquadFilter ノードを作成し、それらをゲイン ノードに接続する必要があることはわかっています。残念ながら、私は望ましい結果に近づくことはできません。
私がこれまでに得た唯一の成功は、トラックの音量を制御するための gainNode だけです。
どんな援助でも大歓迎です。
ありがとう、スタン
先に進み、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;