AudioWorkletGlobalScope: registerProcessor() メソッド
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
(en-US) ベースのオブジェクトの配列を返さなかったとき。
例
この例では、無音を出力する独自の 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