This article needs a technical review. How you can help.
The reduction
property of the DynamicsCompressorNode
interface is a float representing the amount of gain reduction currently applied by the compressor to the signal.
Note: Some browsers implement this as a k-rate AudioParam
. The current version of the spec specifies it as a float.
Intended for metering purposes, it returns a value in dB, or 0
(no gain reduction) if no signal is fed into the DynamicsCompressorNode
. The range of this value is between -20
and 0
(in dB).
Syntax
var audioCtx = new AudioContext(); var compressor = audioCtx.createDynamicsCompressor();
Value
An AudioParam
.
Note: Though the AudioParam
returned is read-only, the value it represents is not.
Example
The below code demonstrates a simple usage of createDynamicsCompressor()
to add compression to an audio track. For a more complete example, have a look at our basic Compressor example (view the source code).
// Create a MediaElementAudioSourceNode // Feed the HTMLMediaElement into it var source = audioCtx.createMediaElementSource(myAudio); // Create a compressor node var compressor = audioCtx.createDynamicsCompressor(); compressor.threshold.value = -50; compressor.knee.value = 40; compressor.ratio.value = 12; compressor.reduction.value = -20; compressor.attack.value = 0; compressor.release.value = 0.25; // connect the AudioBufferSourceNode to the destination source.connect(audioCtx.destination); button.onclick = function() { var active = button.getAttribute('data-active'); if(active == 'false') { button.setAttribute('data-active', 'true'); button.innerHTML = 'Remove compression'; source.disconnect(audioCtx.destination); source.connect(compressor); compressor.connect(audioCtx.destination); } else if(active == 'true') { button.setAttribute('data-active', 'false'); button.innerHTML = 'Add compression'; source.disconnect(compressor); compressor.disconnect(audioCtx.destination); source.connect(audioCtx.destination); } }
Specifications
Specification | Status | Comment |
---|---|---|
Web Audio API The definition of 'reduction' in that specification. |
Working Draft |
Browser compatibility
Feature | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari (WebKit) |
---|---|---|---|---|---|
Basic support | 10.0webkit (Yes) (unprefixed) [1] |
25.0 (25.0) | No support | 15.0webkit 22 (unprefixed) [1] |
6.0webkit |
Feature | Android | Android Webview | Firefox Mobile (Gecko) | Firefox OS | IE Mobile | Opera Mobile | Safari Mobile | Chrome for Android |
---|---|---|---|---|---|---|---|---|
Basic support | ? | (Yes) (unprefixed) [1] | 26.0 | 1.2 | ? | ? [1] | ? | 33.0 [1] |
[1] Before Chrome 52 and Opera 39, this was an AudioParam