Web/API/DynamicsCompressorNode

From Get docs

The DynamicsCompressorNode interface provides a compression effect, which lowers the volume of the loudest parts of the signal in order to help prevent clipping and distortion that can occur when multiple sounds are played and multiplexed together at once. This is often used in musical production and game audio. DynamicsCompressorNode is an AudioNode that has exactly one input and one output; it is created using the AudioContext.createDynamicsCompressor() method.


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

Constructor

DynamicsCompressorNode()
Creates a new instance of an DynamicsCompressorNode object.

Properties

Inherits properties from its parent, AudioNode.

DynamicsCompressorNode.threshold Read only
Is a k-rate AudioParam representing the decibel value above which the compression will start taking effect.
DynamicsCompressorNode.knee Read only
Is a k-rate AudioParam containing a decibel value representing the range above the threshold where the curve smoothly transitions to the compressed portion.
DynamicsCompressorNode.ratio Read only
Is a k-rate AudioParam representing the amount of change, in dB, needed in the input for a 1 dB change in the output.
DynamicsCompressorNode.reduction Read only
Is a float representing the amount of gain reduction currently applied by the compressor to the signal.
DynamicsCompressorNode.attack Read only
Is a k-rate AudioParam representing the amount of time, in seconds, required to reduce the gain by 10 dB.
DynamicsCompressorNode.release Read only
Is a k-rate AudioParam representing the amount of time, in seconds, required to increase the gain by 10 dB.

Methods

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

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 [[../../../../../../mdn.github.io/webaudio-examples/compressor-example/index|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.setValueAtTime(-50, audioCtx.currentTime);
compressor.knee.setValueAtTime(40, audioCtx.currentTime);
compressor.ratio.setValueAtTime(12, audioCtx.currentTime);
compressor.attack.setValueAtTime(0, audioCtx.currentTime);
compressor.release.setValueAtTime(0.25, audioCtx.currentTime);

// 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 APIThe definition of 'DynamicsCompressorNode' in that specification. Working Draft

Browser compatibility

Update compatibility data on GitHub

Desktop Mobile
Chrome Edge Firefox Internet Explorer Opera Safari Android webview Chrome for Android Firefox for Android Opera for Android Safari on iOS Samsung Internet
DynamicsCompressorNode Chrome

Full support 14

Edge

Full support 12

Firefox

Full support 25

IE

No support No

Opera

Full support 15

Safari

Full support 6

WebView Android

Full support Yes

Chrome Android

Full support 18

Firefox Android

Full support 26

Opera Android

Full support 14

Safari iOS

Full support Yes

Samsung Internet Android

Full support 1.0

DynamicsCompressorNode() constructor

Chrome Full support 55

Notes'

Full support 55

Notes'

Notes' Before Chrome 59, the default values were not supported.

Edge

Full support 79

Firefox

Full support 53

IE

No support No

Opera

Full support 42

Safari

No support No

WebView Android Full support 55

Notes'

Full support 55

Notes'

Notes' Before version 59, the default values were not supported.

Chrome Android Full support 55

Notes'

Full support 55

Notes'

Notes' Before Chrome 59, the default values were not supported.

Firefox Android

Full support 53

Opera Android

Full support 42

Safari iOS

No support No

Samsung Internet Android Full support 6.0

Notes'

Full support 6.0

Notes'

Notes' Before Samsung Internet 7.0, the default values were not supported.

attack Chrome

Full support 14

Edge

Full support 12

Firefox

Full support 25

IE

No support No

Opera

Full support 15

Safari

Full support 6

WebView Android

Full support Yes

Chrome Android

Full support 18

Firefox Android

Full support 26

Opera Android

Full support 14

Safari iOS

Full support Yes

Samsung Internet Android

Full support 1.0

knee Chrome

Full support 14

Edge

Full support 12

Firefox

Full support 25

IE

No support No

Opera

Full support 15

Safari

Full support 6

WebView Android

Full support Yes

Chrome Android

Full support 18

Firefox Android

Full support 26

Opera Android

Full support 14

Safari iOS

Full support Yes

Samsung Internet Android

Full support 1.0

ratio Chrome

Full support 14

Edge

Full support 12

Firefox

Full support 25

IE

No support No

Opera

Full support 15

Safari

Full support 6

WebView Android

Full support Yes

Chrome Android

Full support 18

Firefox Android

Full support 26

Opera Android

Full support 14

Safari iOS

Full support Yes

Samsung Internet Android

Full support 1.0

reduction

Chrome Full support 14

Notes'

Full support 14

Notes'

Notes' Before version 52, this was an AudioParam..

Edge

Full support 12

Firefox

Full support 25

IE

No support No

Opera

Full support 15

Safari

Full support 6

WebView Android Full support Yes

Notes'

Full support Yes

Notes'

Notes' Before version 52, this was an AudioParam..

Chrome Android Full support 18

Notes'

Full support 18

Notes'

Notes' Before version 52, this was an AudioParam..

Firefox Android

Full support 26

Opera Android

Full support 14

Safari iOS

Full support Yes

Samsung Internet Android Full support 1.0

Notes'

Full support 1.0

Notes'

Notes' Before Samsung Internet 6.0, this was an AudioParam..

release Chrome

Full support 14

Edge

Full support 12

Firefox

Full support 25

IE

No support No

Opera

Full support 15

Safari

Full support 6

WebView Android

Full support Yes

Chrome Android

Full support 18

Firefox Android

Full support 26

Opera Android

Full support 14

Safari iOS

Full support Yes

Samsung Internet Android

Full support 1.0

threshold Chrome

Full support 14

Edge

Full support 12

Firefox

Full support 25

IE

No support No

Opera

Full support 15

Safari

Full support 6

WebView Android

Full support Yes

Chrome Android

Full support 18

Firefox Android

Full support 26

Opera Android

Full support 14

Safari iOS

Full support Yes

Samsung Internet Android

Full support 1.0

Legend

Full support  
Full support
No support  
No support
See implementation notes.'
See implementation notes.


See also