ConvolverNode

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2021.

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

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

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

コンストラクター

ConvolverNode()

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

プロパティ

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

ConvolverNode.buffer

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

ConvolverNode.normalize

論理値で、 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

関連情報