Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

AudioWorkletProcessor: AudioWorkletProcessor() Konstruktor

Baseline
Weitgehend verfügbar

Diese Funktion ist gut etabliert und funktioniert auf vielen Geräten und in vielen Browserversionen. Sie ist seit April 2021 browserübergreifend verfügbar.

Der AudioWorkletProcessor() Konstruktor erstellt ein neues AudioWorkletProcessor-Objekt, das einen zugrunde liegenden Audiobearbeitungsmechanismus eines AudioWorkletNode repräsentiert.

Hinweis: Der AudioWorkletProcessor und Klassen, die von ihm abgeleitet sind, können nicht direkt aus benutzerdefiniertem Code instanziiert werden. Stattdessen werden sie nur intern durch die Erstellung eines zugehörigen AudioWorkletNode erstellt.

Syntax

js
new AudioWorkletProcessor(options)

Parameter

options

Ein Objekt, das als options-Parameter an den AudioWorkletNode()-Konstruktor übergeben wird und durch den strukturierten Klonalgorithmus gereicht wird. Verfügbare Eigenschaften sind wie folgt:

numberOfInputs Optional

Der Wert zur Initialisierung der numberOfInputs-Eigenschaft. Standard ist 1.

numberOfOutputs Optional

Der Wert zur Initialisierung der numberOfOutputs-Eigenschaft. Standard ist 1.

outputChannelCount Optional

Ein Array, das die Anzahl der Kanäle für jeden Output definiert. Zum Beispiel spezifiziert outputChannelCount: [n, m] die Anzahl der Kanäle im ersten Output auf n und den zweiten Output auf m. Die Array-Länge muss numberOfOutputs entsprechen.

parameterData Optional

Ein Objekt, das die Anfangswerte der benutzerdefinierten AudioParam-Objekte auf diesem Knoten (in seiner parameters-Eigenschaft) enthält, wobei key der Name eines benutzerdefinierten Parameters ist und value sein Anfangswert.

processorOptions Optional

Alle zusätzlichen Daten, die für die benutzerdefinierte Initialisierung des zugrunde liegenden AudioWorkletProcessor verwendet werden können.

Beachten Sie, dass es Standardwerte für die ersten beiden Eigenschaften gibt, sodass selbst wenn kein options-Objekt an den AudioWorkletNode()-Konstruktor übergeben wird, das vom Node an den AudioWorkletProcessor-Konstruktor übergebene options-Objekt existiert und mindestens numberOfInputs und numberOfOutputs enthält.

Rückgabewert

Das neu konstruierte AudioWorkletProcessor-Exemplar.

Beispiele

In diesem Beispiel übergeben wir benutzerdefinierte Optionen an den AudioWorkletNode()-Konstruktor und beobachten, wie eine strukturierte Klonung von ihnen an unseren AudioWorkletProcessor-Konstruktor übergeben wird.

Zuerst müssen wir einen benutzerdefinierten AudioWorkletProcessor definieren und registrieren. Beachten Sie, dass dies in einer separaten Datei erfolgen sollte.

js
// test-processor.js
class TestProcessor extends AudioWorkletProcessor {
  constructor(options) {
    super();
    console.log(options.numberOfInputs);
    console.log(options.processorOptions.someUsefulVariable);
  }
  process(inputs, outputs, parameters) {
    return true;
  }
}

registerProcessor("test-processor", TestProcessor);

Als Nächstes laden wir in unserer Hauptskriptdatei den Prozessor, erstellen eine Instanz von AudioWorkletNode, indem wir den Namen des Prozessors und das options-Objekt übergeben.

Im options-Objekt übergeben wir processorOptions mit einer Map-Instanz unter dem Schlüssel someUsefulVariable. Wir übergeben nicht numberOfInputs und sehen, wie es seinen Standardwert erhält.

js
const audioContext = new AudioContext();
await audioContext.audioWorklet.addModule("test-processor.js");
const testNode = new AudioWorkletNode(audioContext, "test-processor", {
  processorOptions: {
    someUsefulVariable: new Map([
      [1, "one"],
      [2, "two"],
    ]),
  },
});

Die Konsolenausgabe wird wie folgt sein:

> 1 // AudioWorkletNode options.numberOfInputs set to default
> Map(2) { 1 => "one", 2 => "two" } // A cloned map under someUsefulVariable

Spezifikationen

Spezifikation
Web Audio API
# dom-audioworkletprocessor-audioworkletprocessor

Browser-Kompatibilität

Siehe auch