Signatur
Beschreibung
Die schreibgeschützte Eigenschaft defaultValue eines AudioParam gibt den Anfangswert des Parameters zurück. Diesen Wert legt der AudioNode fest, zu dem der Parameter gehört. Bei GainNode.gain ist er zum Beispiel 1, bei OscillatorNode.frequency 440 und bei BiquadFilterNode.frequency 350.
Nützlich ist die Eigenschaft vor allem, wenn man einen Parameter auf seinen Ausgangszustand zurücksetzen will, etwa über einen „Reset“-Knopf in einem Synthesizer oder Effektgerät. Auch bei generischen Oberflächen hilft sie: Man kann Regler für beliebige Nodes automatisch erzeugen und mit minValue, maxValue und defaultValue belegen, ohne die Standardwerte jedes Node-Typs fest im Code zu hinterlegen.
Wichtig: defaultValue ist immer der von der Spezifikation festgelegte Wert des Node-Typs. Werte, die man im Konstruktor übergibt (z. B. new GainNode(ctx, { gain: 0.5 })), ändern ihn nicht. Sie setzen nur den aktuellen value.
Rückgabewert
Beispiele
Standardwerte verschiedener Nodes auslesen
const ctx = new AudioContext();
const gain = ctx.createGain();
const osc = ctx.createOscillator();
const filter = ctx.createBiquadFilter();
console.log(gain.gain.defaultValue);
console.log(osc.frequency.defaultValue);
console.log(filter.frequency.defaultValue);
console.log(filter.Q.defaultValue);
Konstruktor-Optionen ändern defaultValue nicht
const ctx = new AudioContext();
const gain = new GainNode(ctx, { gain: 0.25 });
console.log(gain.gain.value); // aktueller Wert
console.log(gain.gain.defaultValue); // Spezifikationswert
Reset-Knopf für einen Filter-Regler
const ctx = new AudioContext();
const filter = ctx.createBiquadFilter();
// Regler generisch aus den AudioParam-Metadaten erzeugen
const slider = document.createElement('input');
slider.type = 'range';
slider.min = 20;
slider.max = filter.frequency.maxValue;
slider.value = filter.frequency.defaultValue;
slider.addEventListener('input', () => {
filter.frequency.setTargetAtTime(Number(slider.value), ctx.currentTime, 0.01);
});
const resetBtn = document.createElement('button');
resetBtn.textContent = 'Zurücksetzen';
resetBtn.addEventListener('click', () => {
const param = filter.frequency;
param.cancelScheduledValues(ctx.currentTime);
param.setValueAtTime(param.defaultValue, ctx.currentTime);
slider.value = param.defaultValue;
});
document.body.append(slider, resetBtn);
// Wichtig · Fallstricke
- Schreibgeschützt: Eine Zuweisung wie
param.defaultValue = 5wird im nicht-strikten Modus stillschweigend ignoriert. Im Strict Mode (z. B. in ES-Modulen) löst sie einenTypeErroraus. Den aktuellen Wert ändert man übervalueoder über Automationsmethoden wiesetValueAtTime(). - Zurücksetzen mit laufender Automation: Sind noch Automationsereignisse geplant, reicht es nicht,
value = defaultValuezu setzen. Vorher sollte mancancelScheduledValues()aufrufen, sonst überschreiben die geplanten Ereignisse den Wert wieder. - Float-Genauigkeit: Der Wert wird intern als 32-Bit-Float gespeichert. Nicht exakt darstellbare Zahlen können daher leicht abweichen. Direkte Vergleiche mit
===gegen Dezimalzahlen sind deshalb riskant. - Kompatibilität: Wird von allen modernen Browsern unterstützt (Chrome, Firefox, Safari, Edge). In sehr alten Safari-Versionen war nur
webkitAudioContextverfügbar.