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.
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).
const audioCtx = new (window.AudioContext || window.webkitAudioContext)();
const convolver = audioCtx.createConvolver();
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;