AudioWorkletGlobalScope: registerProcessor() メソッド

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.

AudioWorkletGlobalScope インターフェイスの registerProcessor メソッドは、AudioWorkletProcessor インターフェイスから派生したクラスのコンストラクターを指定の name で登録します。

構文

js
registerProcessor(name, processorCtor)

引数

name

処理器を登録する名前を表す文字列です。

processorCtor

AudioWorkletProcessor から派生したクラスのコンストラクターです。

メモ: 処理器を登録すると、キーと値のペア { name: constructor } が内部で AudioWorkletGlobalScope に保存されます。登録した処理器をもとに AudioWorkletNode を生成するとき、name が参照されます。指定の名前によって新しい処理器が内部で生成され、新しいノードと関連付けられます。

返値

なし (undefined)

例外

NotSupportedError DOMException

以下のとき投げられます。

  • name が空文字列のとき。
  • 指定の name でコンストラクターが既に登録されているとき。 同じ名前を 2 回登録することは許されません。
TypeError

以下のとき投げられます。

  • processorCtor が呼び出し可能なコンストラクターではないとき。
  • コンストラクターに parameterDescriptors プロパティが存在し、AudioParamDescriptor ベースのオブジェクトの配列を返さなかったとき。

この例では、無音を出力する独自の AudioWorkletNode を作成します。

まず、独自の AudioWorkletProcessor を定義して登録する必要があります。これは別のファイルで行うことに注意してください。

js
// test-processor.js
class TestProcessor extends AudioWorkletProcessor {
  process(inputs, outputs, parameters) {
    return true;
  }
}

registerProcessor("test-processor", TestProcessor);

次に、メインスクリプトファイルで処理器をロードし、registerProcessor を呼ぶときに用いた処理器の名前を渡して AudioWorkletNode のインスタンスを生成し、それを音声グラフに接続します。

js
const audioContext = new AudioContext();
await audioContext.audioWorklet.addModule("test-processor.js");
const node = new AudioWorkletNode(audioContext, "test-processor");
node.connect(audioContext.destination);

仕様書

Specification
Web Audio API
# dom-audioworkletglobalscope-registerprocessor

ブラウザーの互換性

BCD tables only load in the browser

関連情報