Start · Sprachen · JavaScript · Referenz · AudioParam.defaultValue

AudioParam.defaultValue

Eigenschaft

Schreibgeschützter Anfangswert eines <code>AudioParam</code>, wie ihn der erzeugende <code>AudioNode</code> festlegt, z. B. <code>1</code> für <code>GainNode.gain</code>.

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

Signatur

AudioParam.defaultValue

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

Typ
number
Beschreibung
Ein Gleitkommawert (einfache Genauigkeit, float): der Anfangswert des Parameters. Er ist schreibgeschützt.

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);
1 440 350 1

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
0.25 1

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 = 5 wird im nicht-strikten Modus stillschweigend ignoriert. Im Strict Mode (z. B. in ES-Modulen) löst sie einen TypeError aus. Den aktuellen Wert ändert man über value oder über Automationsmethoden wie setValueAtTime().
  • Zurücksetzen mit laufender Automation: Sind noch Automationsereignisse geplant, reicht es nicht, value = defaultValue zu setzen. Vorher sollte man cancelScheduledValues() 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 webkitAudioContext verfügbar.