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 Nur lesbar

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 Nur lesbar

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

BCD tables only load in the browser

Siehe auch