BaseAudioContext: createDynamicsCompressor()-Methode

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2021.

Die createDynamicsCompressor()-Methode der BaseAudioContext-Schnittstelle wird verwendet, um einen DynamicsCompressorNode zu erstellen, der zur Kompression eines Audiosignals verwendet werden kann.

Kompression verringert die Lautstärke der lautesten Teile des Signals und erhöht die Lautstärke der leisesten Teile. Insgesamt kann ein lauterer, reicherer und vollerer Klang erreicht werden. Dies ist besonders wichtig in Spielen und musikalischen Anwendungen, bei denen viele einzelne Klänge gleichzeitig abgespielt werden, wo Sie das gesamte Signalpegel kontrollieren und das Übersteuern (Verzerren) der Audioausgabe vermeiden möchten.

Hinweis: Der DynamicsCompressorNode()-Konstruktor ist die empfohlene Methode, um einen DynamicsCompressorNode zu erstellen; siehe Erstellen eines AudioNode.

Syntax

js
createDynamicsCompressor()

Parameter

Keine.

Rückgabewert

Beispiele

Der nachstehende Code zeigt eine einfache Verwendung von createDynamicsCompressor(), um einer Audiospur Kompression hinzuzufügen. Für ein vollständigeres Beispiel werfen Sie einen Blick auf unser einfaches Kompressor-Beispiel (Quellcode ansehen).

js
// Create a MediaElementAudioSourceNode
// Feed the HTMLMediaElement into it
const source = audioCtx.createMediaElementSource(myAudio);

// Create a compressor node
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);

// connect the AudioBufferSourceNode to the destination
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);
  }
};

Spezifikationen

Specification
Web Audio API
# dom-baseaudiocontext-createdynamicscompressor

Browser-Kompatibilität

BCD tables only load in the browser

Siehe auch