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 Schreibgeschützt

Repräsentiert den Anfangswert des Attributs, wie er vom spezifischen AudioNode, der das AudioParam erstellt, definiert ist.

AudioParam.maxValue Schreibgeschützt

Repräsentiert den maximal möglichen Wert im nominalen (effektiven) Bereich des Parameters.

AudioParam.minValue Schreibgeschützt

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 an AudioContext.currentTime. Der neue Wert wird durch den value-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 im value-Parameter angegeben ist, und erreicht den neuen Wert zur im endTime-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 im value-Parameter angegeben ist, und erreicht den neuen Wert zur im endTime-Parameter angegebenen Zeit.

AudioParam.setTargetAtTime()

Plant den Beginn einer Änderung des Wertes des AudioParam. Die Änderung beginnt zur im startTime angegebenen Zeit und bewegt sich exponentiell auf den im target-Parameter angegebenen Wert zu. Die exponentielle Abfallrate wird durch den timeConstant-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.

js
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.

js
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

Siehe auch