Start · Sprachen · JavaScript · Referenz · DynamicsCompressorNode.release

DynamicsCompressorNode.release

Eigenschaft

Ein schreibgeschützter k-rate <code>AudioParam</code>, der die Zeit in Sekunden angibt, die der Kompressor braucht, um die Verstärkung wieder um 10 dB anzuheben.

seit JavaScript Baseline: alle modernen Browser (Web Audio API) Kategorie: webapi

Signatur

DynamicsCompressorNode.release

Beschreibung

Die Eigenschaft release eines DynamicsCompressorNode legt die Rückstellzeit des Kompressors fest: Sie bestimmt, wie schnell die Pegelreduktion wieder abgebaut wird, sobald das Signal unter den Schwellwert (threshold) fällt. Genauer: Es ist die Zeit in Sekunden, die nötig ist, um die Verstärkung um 10 dB zu erhöhen.

Der Wert ist ein AudioParam mit dem Standardwert 0.25 und dem gültigen Bereich 0 bis 1. Da es ein k-rate-Parameter ist, wird der Wert nur einmal pro Render-Block (128 Samples) ausgewertet, nicht pro Sample.

Kurze Release-Zeiten sorgen für einen lauten, „pumpenden“ Klang und eignen sich für Schlagzeug oder perkussive Signale. Längere Release-Zeiten klingen natürlicher und gleichmäßiger – typisch für Gesang, Sprache oder den Master-Bus. Die Eigenschaft selbst ist schreibgeschützt; geändert wird immer release.value oder über die Automatisierungsmethoden des AudioParam.

Rückgabewert

Typ
AudioParam
Beschreibung
Ein k-rate AudioParam. value ist die Release-Zeit in Sekunden (Standard 0.25, Bereich 0–1).

Beispiele

Kompressor mit angepasster Release-Zeit erstellen

const ctx = new AudioContext();
const compressor = ctx.createDynamicsCompressor();

compressor.threshold.value = -24;
compressor.ratio.value = 4;
compressor.attack.value = 0.003;
compressor.release.value = 0.1; // schnelle Rückstellung für Drums

console.log(compressor.release.defaultValue, compressor.release.value);
console.log(compressor.release.minValue, compressor.release.maxValue);
0.25 0.10000000149011612 0 1

Release direkt im Konstruktor setzen und Audio-Element verarbeiten

const ctx = new AudioContext();
const audioEl = document.querySelector('audio');
const source = ctx.createMediaElementSource(audioEl);

const compressor = new DynamicsCompressorNode(ctx, {
  threshold: -30,
  ratio: 3,
  release: 0.4 // weich und natürlich für Sprache
});

source.connect(compressor).connect(ctx.destination);

document.querySelector('#play').addEventListener('click', async () => {
  await ctx.resume();
  audioEl.play();
});

Release-Zeit per Schieberegler steuern

const ctx = new AudioContext();
const compressor = ctx.createDynamicsCompressor();
const slider = document.querySelector('#release'); // <input type="range" min="0" max="1" step="0.01">

slider.addEventListener('input', () => {
  const seconds = Number(slider.value);
  // sanfter Übergang statt hartem Sprung
  compressor.release.setTargetAtTime(seconds, ctx.currentTime, 0.05);
  console.log(`Release: ${seconds} s`);
});
Release: 0.5 s

// Wichtig · Fallstricke

  • Die Eigenschaft selbst ist schreibgeschützt: compressor.release = 0.2 ist wirkungslos (im Strict Mode ein TypeError). Setze stattdessen compressor.release.value.
  • Werte außerhalb von 0–1 werden auf diesen Bereich begrenzt; beim Setzen kann der Wert durch Float32-Genauigkeit leicht abweichen (z. B. 0.10000000149011612).
  • Als k-rate-Parameter werden Automatisierungen nur pro Render-Block (128 Samples) übernommen – für feine, sample-genaue Verläufe ist er ungeeignet.
  • Der genaue Kompressionsalgorithmus ist in der Spezifikation nur grob beschrieben; das Klangergebnis kann zwischen Browsern leicht abweichen.
  • Die Web Audio API wird von allen modernen Browsern unterstützt. Ein AudioContext startet wegen der Autoplay-Richtlinien oft im Zustand suspended und muss nach einer Nutzeraktion mit resume() fortgesetzt werden.