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
で登録します。
構文
registerProcessor(name, processorCtor)
引数
name
-
処理器を登録する名前を表す文字列です。
processorCtor
-
AudioWorkletProcessor
から派生したクラスのコンストラクターです。
メモ:
処理器を登録すると、キーと値のペア { name: constructor }
が内部で AudioWorkletGlobalScope
に保存されます。登録した処理器をもとに AudioWorkletNode
を生成するとき、name
が参照されます。指定の名前によって新しい処理器が内部で生成され、新しいノードと関連付けられます。
返値
なし (undefined
)
例外
NotSupportedError
DOMException
-
以下のとき投げられます。
name
が空文字列のとき。- 指定の
name
でコンストラクターが既に登録されているとき。 同じ名前を 2 回登録することは許されません。
TypeError
-
以下のとき投げられます。
processorCtor
が呼び出し可能なコンストラクターではないとき。- コンストラクターに
parameterDescriptors
プロパティが存在し、AudioParamDescriptor
ベースのオブジェクトの配列を返さなかったとき。
例
この例では、無音を出力する独自の AudioWorkletNode
を作成します。
まず、独自の AudioWorkletProcessor
を定義して登録する必要があります。これは別のファイルで行うことに注意してください。
// test-processor.js
class TestProcessor extends AudioWorkletProcessor {
process(inputs, outputs, parameters) {
return true;
}
}
registerProcessor("test-processor", TestProcessor);
次に、メインスクリプトファイルで処理器をロードし、registerProcessor
を呼ぶときに用いた処理器の名前を渡して AudioWorkletNode
のインスタンスを生成し、それを音声グラフに接続します。
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