files/en-us/web/api/baseaudiocontext/createconvolver/index.md
{{ APIRef("Web Audio API") }}
The createConvolver() method of the {{ domxref("BaseAudioContext") }}
interface creates a {{ domxref("ConvolverNode") }}, which is commonly used to apply
reverb effects to your audio. See the spec definition of Convolution for more information.
[!NOTE] The {{domxref("ConvolverNode.ConvolverNode", "ConvolverNode()")}} constructor is the recommended way to create a {{domxref("ConvolverNode")}}; see Creating an AudioNode.
createConvolver()
None.
A {{domxref("ConvolverNode")}}.
The following example shows how to use an AudioContext to create a convolver node. You create an {{domxref("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 for the code that is excerpted below).
const audioCtx = new AudioContext();
// …
const convolver = audioCtx.createConvolver();
// …
// Grab audio track via fetch() for convolver node
try {
const response = await fetch(
"https://mdn.github.io/voice-change-o-matic/audio/concert-crowd.ogg",
);
const arrayBuffer = await response.arrayBuffer();
const decodedAudio = await audioCtx.decodeAudioData(arrayBuffer);
convolver.buffer = decodedAudio;
} catch (error) {
console.error(
`Unable to fetch the audio file: ${name} Error: ${err.message}`,
);
}
{{Specifications}}
{{Compat}}