AudioParam: setValueCurveAtTime() Methode
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 Methode setValueCurveAtTime()
der AudioParam
-Schnittstelle plant, dass sich der Wert des Parameters entlang einer durch eine Liste von Werten definierten Kurve ändert.
Die Kurve ist eine lineare Interpolation zwischen der Reihenfolge von Werten, die in einem Array von Gleitkommazahlen definiert sind. Diese werden skaliert, um in das angegebene Intervall zu passen, beginnend bei startTime
und einer bestimmten Dauer.
Syntax
setValueCurveAtTime(values, startTime, duration)
Parameter
values
-
Ein Array von Gleitkommazahlen, das die Wertkurve repräsentiert, durch die das
AudioParam
im Verlauf der angegebenenduration
geändert wird. Jeder Wert im Array muss eine endliche Zahl sein. Ist ein WertNaN
,Infinity
oder-Infinity
, wird eineTypeError
-Ausnahme ausgelöst. startTime
-
Ein Double, das die Zeit (in Sekunden) darstellt, nachdem der
AudioContext
zuerst erstellt wurde und zu der die Wertänderung stattfinden wird. Wenn dieser Wert kleiner alsAudioContext.currentTime
ist, wird er aufcurrentTime
geklammert. duration
-
Ein Double, das die gesamte Zeit (in Sekunden) darstellt, über die sich der
value
des Parameters entsprechend der angegebenen Kurve ändern wird. Die angegebenen Werte sind entlang dieser Dauer gleichmäßig verteilt.
Rückgabewert
Eine Referenz auf dieses AudioParam
-Objekt. Einige ältere Browser-Implementierungen dieser Schnittstelle geben undefined
zurück.
Ausnahmen
InvalidStateError
DOMException
-
Wird ausgelöst, wenn das angegebene Array von
values
weniger als 2 Elemente enthält. RangeError
-
Wird ausgelöst, wenn der angegebene
startTime
entweder negativ oder ein nicht-endlicher Wert ist, oderduration
keine endliche, strikt positive Zahl ist. TypeError
-
Wird ausgelöst, wenn ein oder mehrere Werte im
values
-Array nicht endlich sind. Nicht-endliche Werte sindNaN
,Infinity
und-Infinity
.
Verwendungshinweise
Wenn der Parameterwert der Kurve folgt, wird garantiert, dass sein Wert mit dem letzten Wert in der im values
-Parameter angegebenen Wertemenge übereinstimmt.
Hinweis: Einige frühe Implementierungen der Web Audio API stellten dies nicht sicher, was zu unerwarteten Ergebnissen führte.
Beispiele
In diesem Beispiel haben wir eine Medienquelle mit einem einzigen Button (siehe das webaudio-examples Repo für den Quellcode, oder sehen Sie sich das Beispiel live an.) Wenn dieser Button gedrückt wird, wird setValueCurveAtTime()
verwendet, um den Verstärkungswert zwischen den im waveArray enthaltenen Werten zu ändern:
// create audio context
const audioCtx = new AudioContext();
// set basic variables for example
const myAudio = document.querySelector("audio");
const valueCurve = document.querySelector(".value-curve");
// Create a MediaElementAudioSourceNode
// Feed the HTMLMediaElement into it
const source = audioCtx.createMediaElementSource(myAudio);
// Create a gain node and set its gain value to 0.5
const gainNode = audioCtx.createGain();
gainNode.gain.value = 0.5;
const currGain = gainNode.gain.value;
// connect the AudioBufferSourceNode to the gainNode
// and the gainNode to the destination
source.connect(gainNode);
gainNode.connect(audioCtx.destination);
// set button to do something onclick
const waveArray = new Float32Array(9);
waveArray[0] = 0.5;
waveArray[1] = 1;
waveArray[2] = 0.5;
waveArray[3] = 0;
waveArray[4] = 0.5;
waveArray[5] = 1;
waveArray[6] = 0.5;
waveArray[7] = 0;
waveArray[8] = 0.5;
valueCurve.onclick = () => {
gainNode.gain.setValueCurveAtTime(waveArray, audioCtx.currentTime, 2);
};
Spezifikationen
Specification |
---|
Web Audio API # dom-audioparam-setvaluecurveattime |
Browser-Kompatibilität
BCD tables only load in the browser
Versionen vor Chrome 46 verwenden eine nächstliegende Nachbarinterpolation anstelle einer linearen Interpolation.