ConvolverNode

ConvolverNodeAudioNode の一種で、与えられた AudioBuffer を用いて線形畳み込みを行います。リバーブの実装によく用いられます。 ConvolverNode は常に 1 つの入力と、1 つの出力を持ちます。

メモ: 線形畳み込みの理論的な側面については、Wikipedia の「畳み込み」を参照してください。

EventTarget AudioNode ConvolverNode
入力数 1
出力数 1
チャンネルカウントモード "clamped-max"
チャンネル数 1, 2, 4
チャンネルの解釈 "speakers"

コンストラクター

ConvolverNode() (en-US)

ConvolverNode オブジェクトの新しいインスタンスを生成します。

プロパティ

親である AudioNode からプロパティを継承しています

ConvolverNode.buffer (en-US)

モノラル、ステレオ、 4 チャンネルの AudioBuffer で、 ConvolververNode がリバーブ効果を生成するために使用する(おそらくマルチチャンネルの)インパルス応答を含みます。

ConvolverNode.normalize (en-US)

論理値で、 buffer 属性が設定されているときに、バッファーからのインパルス応答を等力正規化でスケーリングするかどうかを制御します。

メソッド

固有のメソッドはありません。親である AudioNode からメソッドを継承しています

ConvolverNode の例

次の例は、コンボルバーノードを作成するための AudioContext の基本的な使い方を示しています。

メモ: 以下の例を完成させるために、インパルス応答を求める必要があります。応用例はこちらの Codepen をご覧ください。

js
let audioCtx = new window.AudioContext();

async function createReverb() {
    let convolver = audioCtx.createConvolver();

    // load impulse response from file
    let response     = await fetch("path/to/impulse-response.wav");
    let arraybuffer  = await response.arrayBuffer();
    convolver.buffer = await audioCtx.decodeAudioData(arraybuffer);

    return convolver;
}

...

let reverb = await createReverb();

// someOtherAudioNode -> reverb -> destination
someOtherAudioNode.connect(reverb);
reverb.connect(audioCtx.destination);

仕様書

Specification
Web Audio API
# ConvolverNode

ブラウザーの互換性

BCD tables only load in the browser

関連情報