AudioWorkletNode
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.
Sicherer Kontext: Diese Funktion ist nur in sicheren Kontexten (HTTPS) in einigen oder allen unterstützenden Browsern verfügbar.
Hinweis: Obwohl die Schnittstelle außerhalb von sicheren Kontexten verfügbar ist, ist die Eigenschaft BaseAudioContext.audioWorklet
nicht verfügbar, sodass benutzerdefinierte AudioWorkletProcessor
s außerhalb dieser Kontexte nicht definiert werden können.
Das AudioWorkletNode
-Interface der Web Audio API repräsentiert eine Basisklasse für einen benutzerdefinierten AudioNode
, der zusammen mit anderen Knoten mit einem Audio-Routing-Graph verbunden werden kann. Es gibt einen zugehörigen AudioWorkletProcessor
, der die eigentliche Audioverarbeitung in einem Web Audio-Rendering-Thread durchführt.
Konstruktor
AudioWorkletNode()
-
Erstellt eine neue Instanz eines
AudioWorkletNode
-Objekts.
Instanz-Eigenschaften
Erbt auch Eigenschaften von seinem Elternteil, AudioNode
.
AudioWorkletNode.port
Nur lesbar-
Gibt einen
MessagePort
zurück, der für die bidirektionale Kommunikation zwischen dem Knoten und seinem zugehörigenAudioWorkletProcessor
verwendet wird. Das andere Ende ist unter derport
-Eigenschaft des Prozessors verfügbar. AudioWorkletNode.parameters
Nur lesbar-
Gibt ein
AudioParamMap
zurück — eine Sammlung vonAudioParam
-Objekten. Sie werden bei der Erstellung des zugrunde liegendenAudioWorkletProcessor
instanziiert. Wenn derAudioWorkletProcessor
einen statischenparameterDescriptors
-Getter hat, wird das Array vonAudioParamDescriptor
, das von diesem zurückgegeben wird, verwendet, umAudioParam
-Objekte auf demAudioWorkletNode
zu erstellen. Mit diesem Mechanismus ist es möglich, Ihre eigenenAudioParam
-Objekte zugänglich von IhremAudioWorkletNode
zu machen. Sie können dann deren Werte im zugehörigenAudioWorkletProcessor
verwenden.
Ereignisse
processorerror
-
Wird ausgelöst, wenn ein Fehler im zugehörigen
AudioWorkletProcessor
geworfen wird. Einmal ausgelöst, wird der Prozessor und damit der Knoten während seiner gesamten Lebensdauer Stille ausgeben.
Instanz-Methoden
Erbt auch Methoden von seinem Elternteil, AudioNode
.
Das AudioWorkletNode
-Interface definiert keine eigenen Methoden.
Beispiele
In diesem Beispiel erstellen wir einen benutzerdefinierten AudioWorkletNode
, der zufällige Geräusche ausgibt.
Zuerst müssen wir einen benutzerdefinierten AudioWorkletProcessor
definieren, der zufällige Geräusche ausgibt, und ihn registrieren. Beachten Sie, dass dies in einer separaten Datei erfolgen sollte.
// random-noise-processor.js
class RandomNoiseProcessor extends AudioWorkletProcessor {
process(inputs, outputs, parameters) {
const output = outputs[0];
output.forEach((channel) => {
for (let i = 0; i < channel.length; i++) {
channel[i] = Math.random() * 2 - 1;
}
});
return true;
}
}
registerProcessor("random-noise-processor", RandomNoiseProcessor);
Als nächstes laden wir in unserer Hauptskriptdatei den Prozessor, erstellen eine Instanz von AudioWorkletNode
, übergeben den Namen des Prozessors und verbinden den Knoten mit einem Audio-Graphen.
const audioContext = new AudioContext();
await audioContext.audioWorklet.addModule("random-noise-processor.js");
const randomNoiseNode = new AudioWorkletNode(
audioContext,
"random-noise-processor",
);
randomNoiseNode.connect(audioContext.destination);
Spezifikationen
Specification |
---|
Web Audio API # AudioWorkletNode |
Browser-Kompatibilität
BCD tables only load in the browser