BaseAudioContext: createConvolver() method

The createConvolver() method of the BaseAudioContext interface creates a ConvolverNode, which is commonly used to apply reverb effects to your audio. See the spec definition of Convolution for more information.

Note: The ConvolverNode() constructor is the recommended way to create a ConvolverNode; see Creating an AudioNode.

Syntax

js

createConvolver()

Parameters

None.

Return value

Examples

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 more complete applied examples/information, check out our Voice-change-O-matic demo (see app.js lines 108–193 for relevant code).

js

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

// …

// grab audio track via XHR for convolver node

let soundSource, concertHallBuffer;

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

ajaxRequest.onload = () => {
  const audioData = ajaxRequest.response;
  audioCtx.decodeAudioData(
    audioData,
    (buffer) => {
      concertHallBuffer = buffer;
      soundSource = audioCtx.createBufferSource();
      soundSource.buffer = concertHallBuffer;
    },
    (e) => console.error(`Error with decoding audio data: ${e.err}`)
  );
};

ajaxRequest.send();

// …

convolver.buffer = concertHallBuffer;

Specifications

Specification
Web Audio API
# dom-baseaudiocontext-createconvolver

Browser compatibility

BCD tables only load in the browser

See also