AudioWorkletGlobalScope: registerProcessor() メソッド
Baseline
広く利用可能
この機能は広く実装されており、多くのバージョンの端末やブラウザーで動作します。2021年4月以降、すべてのブラウザーで利用可能です。
AudioWorkletGlobalScope インターフェイスの registerProcessor メソッドは、AudioWorkletProcessor インターフェイスから派生したクラスのコンストラクターを指定の name で登録します。
構文
js
registerProcessor(name, processorCtor)
引数
name-
処理器を登録する名前を表す文字列です。
processorCtor-
AudioWorkletProcessorから派生したクラスのコンストラクターです。
メモ:
処理器を登録すると、キーと値のペア { name: constructor } が内部で AudioWorkletGlobalScope に保存されます。登録した処理器をもとに AudioWorkletNode を生成するとき、name が参照されます。指定の名前によって新しい処理器が内部で生成され、新しいノードと関連付けられます。
返値
なし (undefined)
例外
NotSupportedErrorDOMException-
以下のとき投げられます。
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);
仕様書
| 仕様書 |
|---|
| Web Audio API> # dom-audioworkletglobalscope-registerprocessor> |