Signatur
Beschreibung
Die schreibgeschützte Eigenschaft minValue eines AudioParam gibt die untere Grenze des nominalen Bereichs an. Nur innerhalb dieses Bereichs wirkt der Parameter. Den Wert legt der Audio-Knoten fest, zu dem der Parameter gehört. Zusammen mit maxValue beschreibt er, welche Werte bei der Audioberechnung tatsächlich ankommen.
Typische Werte sind:
StereoPannerNode.pan:-1BiquadFilterNode.frequencyundDelayNode.delayTime:0OscillatorNode.frequency: die negative Nyquist-Frequenz, also-sampleRate / 2GainNode.gain: der kleinste 32-Bit-Gleitkommawert, etwa-3.4028234663852886e38. Der Bereich ist damit praktisch unbegrenzt.
Nützlich ist minValue vor allem beim Bau von Bedienelementen, etwa wenn Schieberegler ihren Bereich automatisch vom Parameter übernehmen. Auch zum Prüfen von Eingaben und zum sicheren Begrenzen von Automationswerten eignet sich die Eigenschaft. Setzt man einen Wert unterhalb von minValue, wird er bei der Berechnung auf den nominalen Bereich begrenzt. Das gilt für direkte Zuweisungen an value, für Automation und für angeschlossene Modulationssignale.
Rückgabewert
number geliefert) mit dem kleinsten Wert des nominalen Bereichs. Sie ist schreibgeschützt und ändert sich während der Lebensdauer des Knotens nicht.Beispiele
Minimalwerte verschiedener Parameter auslesen
const ctx = new AudioContext();
const panner = new StereoPannerNode(ctx);
const filter = new BiquadFilterNode(ctx);
const osc = new OscillatorNode(ctx);
const gain = new GainNode(ctx);
console.log('pan:', panner.pan.minValue);
console.log('filter.frequency:', filter.frequency.minValue);
console.log('osc.frequency:', osc.frequency.minValue, `(sampleRate ${ctx.sampleRate})`);
console.log('gain:', gain.gain.minValue);
Schieberegler automatisch an den Parameterbereich anpassen
const ctx = new AudioContext();
const panner = new StereoPannerNode(ctx);
// <input type="range" id="pan"> muss im HTML vorhanden sein
const slider = document.querySelector('#pan');
const param = panner.pan;
slider.min = param.minValue;
slider.max = param.maxValue;
slider.step = 0.01;
slider.value = param.value;
slider.addEventListener('input', () => {
// Sanfter Übergang, damit keine Knackgeräusche entstehen
param.setTargetAtTime(Number(slider.value), ctx.currentTime, 0.01);
});
Benutzereingaben vor der Automation begrenzen
const clampToParam = (param, v) =>
Math.min(param.maxValue, Math.max(param.minValue, v));
const ctx = new AudioContext();
const filter = new BiquadFilterNode(ctx, { type: 'lowpass' });
const userInput = -500; // ungültige Frequenz aus einem Formular
const safe = clampToParam(filter.frequency, userInput);
filter.frequency.linearRampToValueAtTime(safe, ctx.currentTime + 0.5);
console.log(safe);
// Wichtig · Fallstricke
- Schreibgeschützt: Eine Zuweisung an
minValuewird im nicht-strikten Modus stillschweigend ignoriert und löst im strikten Modus einenTypeErroraus. Einen eigenen Bereich muss man selbst im Code begrenzen, etwa mitMath.max. - Begrenzung statt Fehler: Werte unterhalb von
minValuelösen keine Ausnahme aus. Sie werden bei der Berechnung einfach begrenzt. Chrome gibt dabei zusätzlich eine Warnung in der Konsole aus. Der Gettervaluekann trotzdem den ursprünglich gesetzten Wert zurückgeben. - Abhängig von der Abtastrate: Bei Frequenz-Parametern wie
OscillatorNode.frequencyhängtminValuevonAudioContext.sampleRateab. Er ist daher nicht in jedem Kontext gleich. - Praktisch unbegrenzte Bereiche: Bei
GainNode.gainistminValueein extremer Wert von etwa-3.4e38. Für Schieberegler taugt er nicht, dort sollte man einen sinnvollen eigenen Bereich festlegen. - Kompatibilität: Wird von allen aktuellen Browsern unterstützt. Sehr alte Safari-Versionen mit dem Präfix
webkitAudioContextliefern die Eigenschaft teilweise nicht.