AudioParam: Methode exponentialRampToValueAtTime()
Die exponentialRampToValueAtTime()
-Methode der AudioParam
-Schnittstelle plant eine allmähliche exponentielle Änderung des Wertes des AudioParam
.
Die Änderung beginnt zu der für das vorherige Ereignis angegebenen Zeit, folgt einer exponentiellen Rampe zum neuen Wert, der im value
-Parameter angegeben ist, und erreicht den neuen Wert zur im
endTime
-Parameter angegebenen Zeit.
Hinweis: Exponentielle Rampen gelten als nützlicher beim Ändern von Frequenzen oder Wiedergaberaten als lineare Rampen, da das menschliche Ohr anders funktioniert.
Syntax
exponentialRampToValueAtTime(value, endTime)
Parameter
Rückgabewert
Ein Verweis auf dieses AudioParam
-Objekt. In einigen älteren Browserimplementierungen dieser Schnittstelle wird undefined
zurückgegeben.
Beispiele
In diesem Beispiel haben wir eine Medienquelle mit zwei Steuerungsknöpfen (siehe das audio-param Repo für den Quellcode oder sehen Sie das Beispiel live an.) Wenn diese Knöpfe gedrückt werden, wird exponentialRampToValueAtTime()
verwendet, um den Gain-Wert auf 1.0 hochzufahren und auf 0 herunterzufahren. Das ist ziemlich nützlich für Ein- und Ausblendeffekte:
// create audio context
const audioCtx = new AudioContext();
// set basic variables for example
const myAudio = document.querySelector("audio");
const expRampPlus = document.querySelector(".exp-ramp-plus");
const expRampMinus = document.querySelector(".exp-ramp-minus");
// 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();
// connect the AudioBufferSourceNode to the gainNode
// and the gainNode to the destination
gainNode.gain.setValueAtTime(0, audioCtx.currentTime);
source.connect(gainNode);
gainNode.connect(audioCtx.destination);
// set buttons to do something onclick
expRampPlus.onclick = () => {
gainNode.gain.exponentialRampToValueAtTime(1.0, audioCtx.currentTime + 2);
};
expRampMinus.onclick = () => {
gainNode.gain.exponentialRampToValueAtTime(0.01, audioCtx.currentTime + 2);
};
Hinweis: Ein Wert von 0.01 wurde für den Wert verwendet, auf den in der letzten Funktion gerampt wird, anstatt 0, da ein ungültiger oder rechtswidriger Zeichenfolgenfehler ausgelöst wird, wenn 0 verwendet wird — der Wert muss positiv sein.
Spezifikationen
Specification |
---|
Web Audio API # dom-audioparam-exponentialramptovalueattime |
Browser-Kompatibilität
BCD tables only load in the browser