AudioParam: Wert-Eigenschaft
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2021.
Die value
-Eigenschaft der AudioParam
-Schnittstelle liest oder setzt den Wert dieses AudioParam
zur aktuellen Zeit.
Anfangs ist der Wert auf AudioParam.defaultValue
gesetzt.
Das Setzen von value
hat die gleiche Wirkung wie ein Aufruf von AudioParam.setValueAtTime
mit der Zeit, die von der AudioContext
-Eigenschaft currentTime
zurückgegeben wird.
Wert
Beschreibung
Präzision und Variation des Wertes
Der Datentyp, der intern zum Speichern des value
verwendet wird, ist eine einfache (32-Bit) Gleitkommazahl, während JavaScript 64-Bit Gleitkommazahlen mit doppelter Präzision verwendet.
Folglich muss der Wert, den Sie aus der value
-Eigenschaft lesen, nicht immer exakt dem entsprechen, den Sie gesetzt haben.
Betrachten Sie dieses Beispiel:
const source = new AudioBufferSourceNode(/* … */);
const rate = 5.3;
source.playbackRate.value = rate;
console.log(source.playbackRate.value === rate);
Der Log-Ausgang wird false
sein, weil der Wiedergaberate-Parameter, rate
, in die nächste 32-Bit Gleitkommazahl zu 5.3 umgewandelt wurde, was 5.300000190734863 ergibt.
Eine Lösung besteht darin, die Methode Math.fround()
zu verwenden, die den gleichwertigen Einzelpräzisionswert für den angegebenen 64-Bit JavaScript-Wert zurückgibt—beim Setzen von value
, wie folgt:
const source = new AudioBufferSourceNode(/* … */);
const rate = Math.fround(5.3);
source.playbackRate.value = rate;
console.log(source.playbackRate.value === rate);
In diesem Fall wird der Log-Ausgang true
sein.
Wert einer Eigenschaft, die sich im Laufe der Zeit ändert
Der value
eines AudioParam
kann entweder fest oder variabel im Laufe der Zeit sein.
Dies wird durch den value
-Getter widergespiegelt, der den Wert des Parameters entsprechend des letzten render quantum der Audio-Rendering-Engine zurückgibt, also dem Moment, in dem Audiopuffer verarbeitet und aktualisiert werden.
Neben der Verarbeitung von Audiopuffern aktualisiert jedes Render quantum den value
jedes AudioParam
nach Bedarf, unter Berücksichtigung der aktuellen Zeit und etwaiger festgelegter zeitbasierter Parameterwertänderungen.
Bei der ersten Erstellung des Parameters ist sein Wert auf den Standardwert gesetzt, der durch AudioParam.defaultValue
angegeben wird.
Dies ist der Wert des Parameters zur Zeit von 0,0 Sekunden und bleibt der Wert des Parameters, bis zum ersten Render quantum, in dem sich der Wert ändert.
Während jedes Render quantum führt der Browser folgende Aufgaben im Zusammenhang mit der Verwaltung des Wertes eines Parameters aus:
- Wenn der
value
-Setter verwendet wurde, wird der Wert des Parameters auf den angegebenen Wert geändert. - Wenn die aktuelle Zeit der oder die von einem vorherigen Aufruf von
setValueAtTime()
angegebenen Zeit entspricht oder sie überschreitet, wird dervalue
auf den Wert geändert, der insetValueAtTime()
eingegeben wurde. -
Wenn graduierte oder über Rampen veränderte Wertänderungsmethoden aufgerufen wurden und die aktuelle Zeit innerhalb des Zeitbereichs liegt, über den die graduierte Änderung stattfinden soll, wird der Wert basierend auf dem entsprechenden Algorithmus aktualisiert.
Zu diesen gerampften oder gradierten Wertänderungsmethoden gehören
linearRampToValueAtTime()
,setTargetAtTime()
undsetValueCurveAtTime()
.
Somit wird der value
eines Parameters aufrechterhalten, um den Zustand des Parameters über die Zeit genau widerzuspiegeln.
Beispiele
Dieses Beispiel ändert sofort die Lautstärke eines GainNode
auf 40%.
const audioCtx = new AudioContext();
const gainNode = audioCtx.createGain();
gainNode.gain.value = 0.4;
// which is identical to:
gainNode.gain.setValueAtTime(0.4, audioCtx.currentTime);
Spezifikationen
Specification |
---|
Web Audio API # dom-audioparam-value |
Browser-Kompatibilität
BCD tables only load in the browser