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
The compatibility table on this page is generated from structured data. If you'd like to contribute to the data, please check out https://github.com/mdn/browser-compat-data and send us a pull request.
Update compatibility data on GitHub
Desktop | Mobile | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
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 Full support 55 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 Full support 55 Notes' Before version 59, the default values were not supported. |
Chrome Android Full support 55 Full support 55 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 Full support 6.0 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 Full support 14 Notes' Before version 52, this was an |
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 Full support Yes Notes' Before version 52, this was an |
Chrome Android Full support 18 Full support 18 Notes' Before version 52, this was an |
Firefox Android
Full support 26 |
Opera Android
Full support 14 |
Safari iOS
Full support Yes |
Samsung Internet Android Full support 1.0 Full support 1.0 Notes' Before Samsung Internet 6.0, this was an |
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
DynamicsCompressorNode by Mozilla Contributors is licensed under CC-BY-SA 2.5.