ConvolverNode

The ConvolverNode interface is an AudioNode that performs a Linear Convolution on a given AudioBuffer, often used to achieve a reverb effect. A ConvolverNode always has exactly one input and one output.

Note: For more information on the theory behind Linear Convolution, see the Convolution article on Wikipedia.

Number of inputs 1
Number of outputs 1
Channel count mode "clamped-max"
Channel count 1, 2, or 4
Channel interpretation "speakers"

Constructor

ConvolverNode()
Creates a new ConvolverNode object instance.

Properties

Inherits properties from its parent, AudioNode.

ConvolverNode.buffer
A mono, stereo, or 4-channel AudioBuffer containing the (possibly multichannel) impulse response used by the ConvolverNode to create the reverb effect.
ConvolverNode.normalize
A boolean that controls whether the impulse response from the buffer will be scaled by an equal-power normalization when the buffer attribute is set, or not.

Methods

No specific method; inherits methods from its parent, AudioNode.

ConvolverNode Example

The following example shows basic usage of an AudioContext to create a convolver node.

Note: You will need to find an impulse response to complete the example below. See this Codepen for an applied example.

 

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

function base64ToArrayBuffer(base64) {
    var binaryString = window.atob(base64);
    var len = binaryString.length;
    var bytes = new Uint8Array(len);
    for (var i = 0; i < len; i++)        {
        bytes[i] = binaryString.charCodeAt(i);
    }
    return bytes.buffer;
}

...

var reverbSoundArrayBuffer = base64ToArrayBuffer(impulseResponse);
audioCtx.decodeAudioData(reverbSoundArrayBuffer, function(buffer) {
  reverb.buffer = buffer;
},
function(e) {
  alert('Error when decoding audio data ' + e.err);
})

 

Specifications

Specification Status Comment
Web Audio API
The definition of 'ConvolverNode' in that specification.
Working Draft  

Browser compatibility

FeatureChromeEdgeFirefoxInternet ExplorerOperaSafari
Basic support14 Yes25 No156
ConvolverNode() constructor55 ?53 No42 ?
buffer141225 No156
normalize141225 No156
FeatureAndroid webviewChrome for AndroidEdge mobileFirefox for AndroidOpera AndroidiOS SafariSamsung Internet
Basic support1414 Yes2615 ? Yes
ConvolverNode() constructor5555 ?5342 ?6.0
buffer1414 Yes2615 ? Yes
normalize1414 Yes2615 ? Yes

See also

Document Tags and Contributors

Last updated by: chrisdavidmills,