BaseAudioContext: createDynamicsCompressor() method
  
  
   The createDynamicsCompressor() method of the BaseAudioContext Interface is used to create a DynamicsCompressorNode, which can be used to apply compression to an audio signal.
   Compression lowers the volume of the loudest parts of the signal and raises the volume of the softest parts. Overall, a louder, richer, and fuller sound can be achieved. It is especially important in games and musical applications where large numbers of individual sounds are played simultaneously, where you want to control the overall signal level and help avoid clipping (distorting) of the audio output.
   
   
  Syntax
  
   
    
    createDynamicsCompressor()
    
   
  Parameters
  
  Return value
  
  Examples
  
   The code below 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).
   
    
    
const source = audioCtx.createMediaElementSource(myAudio);
const 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);
source.connect(audioCtx.destination);
button.onclick = () => {
  const active = button.getAttribute("data-active");
  if (active === "false") {
    button.setAttribute("data-active", "true");
    button.textContent = "Remove compression";
    source.disconnect(audioCtx.destination);
    source.connect(compressor);
    compressor.connect(audioCtx.destination);
  } else if (active === "true") {
    button.setAttribute("data-active", "false");
    button.textContent = "Add compression";
    source.disconnect(compressor);
    compressor.disconnect(audioCtx.destination);
    source.connect(audioCtx.destination);
  }
};
    
   
  Specifications
  
  Browser compatibility
  
   
    
     
      
        | 
       Desktop | 
       Mobile | 
      
      
        | 
       Chrome | 
       Edge | 
       Firefox | 
       Internet Explorer | 
       Opera | 
       Safari | 
       WebView Android | 
       Chrome Android | 
       Firefox for Android | 
       Opera Android | 
       Safari on IOS | 
       Samsung Internet | 
      
     
     
      
       createDynamicsCompressor | 
       14 | 
       12 | 
       25 | 
       No | 
       15 | 
       6 | 
       4.4.3 | 
       18 | 
       25 | 
       14 | 
       6 | 
       1.0 | 
      
     
    
    
   
  See also