ConvolverNode

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

付記: 線形畳み込みの理論的な側面については、 W3C Web Audio API の仕様中の Linear Effects Using Convolution をごらんください。また Wikipedia の「畳み込み」にも解説があります。

入力数 1
出力数 1
チャンネルカウントモード "clamped-max"
チャンネルカウント 2
チャンネルの意味 "speakers"

属性

 AudioNode の属性を継承しています。

ConvolverNode.buffer (en-US)
畳み込みに用いる AudioBuffer です。モノラル、ステレオ、4 チャンネルのバッファを使用できます。ConvolverNode.normalize (en-US)
ブール値。出力の強さを、バッファと同じになるよう正規化するかどうかをコントロールできます。

メソッド

固有のメソッドはありません。継承しているメソッドは AudioNode をご覧ください。

使用例

The following example shows basic usage of an AudioContext to create a convolver node. The basic premise is that you create an AudioBuffer containing a sound sample to be used as an ambience to shape the convolution (called the impulse response,) and apply that to the convolver. The example below uses a short sample of a concert hall crowd, so the reverb effect applied is really deep and echoey.

For applied examples/information, check out our Voice-change-O-matic demo (see app.js for relevant code).

var audioCtx = new (window.AudioContext || window.webkitAudioContext)();
var convolver = audioCtx.createConvolver();

  ...

// grab audio track via XHR for convolver node

var soundSource, concertHallBuffer;

ajaxRequest = new XMLHttpRequest();
ajaxRequest.open('GET', 'concert-crowd.ogg', true);
ajaxRequest.responseType = 'arraybuffer';

ajaxRequest.onload = function() {
  var audioData = ajaxRequest.response;
  audioCtx.decodeAudioData(audioData, function(buffer) {
      concertHallBuffer = buffer;
      soundSource = audioCtx.createBufferSource();
      soundSource.buffer = concertHallBuffer;
    }, function(e){"Error with decoding audio data" + e.err});
}

ajaxRequest.send();

  ...

convolver.buffer = concertHallBuffer;

仕様

仕様 状態 コメント
Web Audio API
ConvolverNode の定義
勧告  

ブラウザ互換性

BCD tables only load in the browser

関連情報