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

EventTarget AudioNode AudioWorkletNode

Konstruktor

AudioWorkletNode()

Erstellt eine neue Instanz eines AudioWorkletNode-Objekts.

Instanz-Eigenschaften

Erbt auch Eigenschaften von seinem Elternteil, AudioNode.

AudioWorkletNode.port Schreibgeschützt

Gibt einen MessagePort zurück, der für die bidirektionale Kommunikation zwischen dem Knoten und seinem zugehörigen AudioWorkletProcessor verwendet wird. Das andere Ende ist unter der port-Eigenschaft des Prozessors verfügbar.

AudioWorkletNode.parameters Schreibgeschützt

Gibt ein AudioParamMap zurück — eine Sammlung von AudioParam-Objekten. Sie werden bei der Erstellung des zugrunde liegenden AudioWorkletProcessor instanziiert. Wenn der AudioWorkletProcessor einen statischen parameterDescriptors-Getter hat, wird das Array von AudioParamDescriptor, das von diesem zurückgegeben wird, verwendet, um AudioParam-Objekte auf dem AudioWorkletNode zu erstellen. Mit diesem Mechanismus ist es möglich, Ihre eigenen AudioParam-Objekte zugänglich von Ihrem AudioWorkletNode zu machen. Sie können dann deren Werte im zugehörigen AudioWorkletProcessor 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.

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

js
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

Report problems with this compatibility data on GitHub
desktopmobile
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
AudioWorkletNode
AudioWorkletNode() constructor
parameters
port
processorerror event

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support

Siehe auch