AudioParam
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.
Das AudioParam
-Interface der Web Audio API repräsentiert einen audio-bezogenen Parameter, üblicherweise einen Parameter eines AudioNode
(wie zum Beispiel GainNode.gain
).
Ein AudioParam
kann auf einen spezifischen Wert oder eine Wertänderung gesetzt und geplant werden, um zu einem bestimmten Zeitpunkt und nach einem bestimmten Muster zu erfolgen.
Jedes AudioParam
hat eine Liste von Ereignissen, die anfangs leer ist und definiert, wann und wie sich Werte ändern. Wenn diese Liste nicht leer ist, werden Änderungen mit dem AudioParam.value
-Attribut ignoriert. Diese Ereignisliste ermöglicht es uns, Änderungen zu planen, die zu sehr genauen Zeiten stattfinden müssen, unter Verwendung beliebiger zeitbasierten Automationskurven. Die verwendete Zeit ist die, die in AudioContext.currentTime
definiert ist.
AudioParam-Typen
Es gibt zwei Arten von AudioParam
: a-rate und k-rate Parameter. Jedes AudioNode
definiert in der Spezifikation, welche seiner Parameter a-rate oder k-rate sind.
a-rate
Ein a-rate AudioParam
nimmt den aktuellen Audio-Parameterwert für jeden Sample-Frame des Audiosignals.
k-rate
Ein k-rate AudioParam
verwendet denselben anfänglichen Audio-Parameterwert für den gesamten verarbeiteten Block, das heißt, 128 Sample-Frames. Mit anderen Worten, derselbe Wert gilt für jeden Frame im Audio, während er vom Knoten verarbeitet wird.
Instanz-Eigenschaften
AudioParam.defaultValue
Nur lesbar-
Repräsentiert den Anfangswert des Attributs, wie er vom spezifischen
AudioNode
, der dasAudioParam
erstellt, definiert ist. AudioParam.maxValue
Nur lesbar-
Repräsentiert den maximal möglichen Wert im nominalen (effektiven) Bereich des Parameters.
AudioParam.minValue
Nur lesbar-
Repräsentiert den minimal möglichen Wert im nominalen (effektiven) Bereich des Parameters.
AudioParam.value
-
Repräsentiert den aktuellen Wert des Parameters zu der aktuellen Zeit; anfangs auf den Wert von
defaultValue
gesetzt.
Instanz-Methoden
AudioParam.setValueAtTime()
-
Plant eine sofortige Änderung des Wertes des
AudioParam
zu einem genauen Zeitpunkt, gemessen anAudioContext.currentTime
. Der neue Wert wird durch denvalue
-Parameter angegeben. AudioParam.linearRampToValueAtTime()
-
Plant eine allmähliche lineare Änderung des Wertes des
AudioParam
. Die Änderung beginnt zur für das vorherige Ereignis angegebenen Zeit, folgt einer linearen Rampe zum neuen Wert, der imvalue
-Parameter angegeben ist, und erreicht den neuen Wert zur imendTime
-Parameter angegebenen Zeit. AudioParam.exponentialRampToValueAtTime()
-
Plant eine allmähliche exponentielle Änderung des Wertes des
AudioParam
. Die Änderung beginnt zur für das vorherige Ereignis angegebenen Zeit, folgt einer exponentiellen Rampe zum neuen Wert, der imvalue
-Parameter angegeben ist, und erreicht den neuen Wert zur imendTime
-Parameter angegebenen Zeit. AudioParam.setTargetAtTime()
-
Plant den Beginn einer Änderung des Wertes des
AudioParam
. Die Änderung beginnt zur imstartTime
angegebenen Zeit und bewegt sich exponentiell auf den imtarget
-Parameter angegebenen Wert zu. Die exponentielle Abfallrate wird durch dentimeConstant
-Parameter definiert, der eine in Sekunden gemessene Zeit ist. AudioParam.setValueCurveAtTime()
-
Plant, dass die Werte des
AudioParam
einem Satz von Werten folgen, der durch ein Array von Gleitkommazahlen definiert ist, welche angepasst werden, um in das gegebene Intervall zu passen, beginnend zu einer gegebenen Startzeit und über einen gegebenen Zeitraum. AudioParam.cancelScheduledValues()
-
Hebt alle geplanten zukünftigen Änderungen des
AudioParam
auf. AudioParam.cancelAndHoldAtTime()
-
Hebt alle geplanten zukünftigen Änderungen des
AudioParam
auf, hält aber seinen Wert zu einer gegebenen Zeit, bis weitere Änderungen mit anderen Methoden vorgenommen werden.
Beispiele
Zuerst ein einfaches Beispiel, das zeigt, wie ein GainNode
seinen gain
-Wert gesetzt bekommt. gain
ist ein Beispiel für ein a-rate AudioParam
, da der Wert potenziell für jeden Sample-Frame des Audiomaterials anders gesetzt werden kann.
const audioCtx = new AudioContext();
const gainNode = audioCtx.createGain();
gainNode.gain.value = 0;
Als nächstes ein Beispiel, das zeigt, wie ein DynamicsCompressorNode
mit einigen Parameterwerten manipuliert wird. Diese sind Beispiele für k-rate AudioParam
-Typen, da die Werte für den gesamten Audioblock auf einmal gesetzt werden.
const compressor = audioCtx.createDynamicsCompressor();
compressor.threshold.setValueAtTime(-50, audioCtx.currentTime);
compressor.knee.setValueAtTime(40, audioCtx.currentTime);
compressor.ratio.setValueAtTime(12, audioCtx.currentTime);
compressor.attack.setValueAtTime(0, audioCtx.currentTime);
compressor.release.setValueAtTime(0.25, audioCtx.currentTime);
Spezifikationen
Specification |
---|
Web Audio API # AudioParam |
Browser-Kompatibilität
BCD tables only load in the browser