Signatur
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
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);
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`);
});
// Wichtig · Fallstricke
- Die Eigenschaft selbst ist schreibgeschützt:
compressor.release = 0.2ist wirkungslos (im Strict Mode einTypeError). Setze stattdessencompressor.release.value. - Werte außerhalb von
0–1werden 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
AudioContextstartet wegen der Autoplay-Richtlinien oft im Zustandsuspendedund muss nach einer Nutzeraktion mitresume()fortgesetzt werden.