AudioWorkletGlobalScope: registerProcessor() メソッド

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 (en-US) ベースのオブジェクトの配列を返さなかったとき。

この例では、無音を出力する独自の 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

関連情報