AudioWorkletProcessor: AudioWorkletProcessor() コンストラクター
Baseline
Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since 2021年4月.
AudioWorkletProcessor() コンストラクターは新しい AudioWorkletProcessor オブジェクトを生成します。このオブジェクトは AudioWorkletNode で用いる音声処理の仕組みを表します。
構文
メモ:
AudioWorkletProcessor とその派生クラスは、ユーザーのコードから直接生成することはできません。これらは対応する AudioWorkletNode の生成に伴って内部でのみ生成されます。
new AudioWorkletProcessor(options)
引数
options-
AudioWorkletNode のコンストラクターの引数optionsに渡されたオブジェクトです。構造化複製アルゴリズムを経由して渡されます。 以下のプロパティが利用できます。numberOfInputs省略可-
numberOfInputsプロパティを初期化する値です。デフォルト値は 1 です。 numberOfOutputs省略可-
numberOfOutputsプロパティを初期化する値です。デフォルト値は 1 です。 outputChannelCount省略可-
それぞれの出力のチャンネル数を決める 配列 です。たとえば、
outputChannelCount: [n, m]は最初の出力のチャンネル数をnに、2 番目の出力のチャンネル数をmに設定します。配列の長さはnumberOfOutputsに一致しなければなりません。 parameterData省略可-
このノード (の
parametersプロパティ) の独自のAudioParamオブジェクトの初期値が入ったオブジェクトです。キーを独自プロパティの名前、値を初期値とします。 processorOptions省略可-
用いる
AudioWorkletProcessorの独自の初期化に用いる任意の追加データです。
なお、最初の 2 個のプロパティにはデフォルト値があるので、
AudioWorkletNode のコンストラクターにoptionsオブジェクトが渡されなかった場合でも、ノードからAudioWorkletProcessorのコンストラクターにはoptionsオブジェクトが渡され、このオブジェクトには少なくともnumberOfInputsとnumberOfOutputsがあります。
返値
新しく構築された AudioWorkletProcessor のインスタンスを返します。
例
この例では、AudioWorkletNode constructor に独自のオプションを渡し、その構造化複製が AudioWorkletProcessor のコンストラクターに渡される様子を観察します。
まず、独自の AudioWorkletProcessor を定義して登録する必要があります。
これは別のファイルで行うことに注意してください。
// test-processor.js
class TestProcessor extends AudioWorkletProcessor {
constructor(options) {
super();
console.log(options.numberOfInputs);
console.log(options.processorOptions.someUsefulVariable);
}
process(inputs, outputs, parameters) {
return true;
}
}
registerProcessor("test-processor", TestProcessor);
次に、メインスクリプトファイルで処理器をロードし、この処理器の名前と options オブジェクトを渡して AudioWorkletNode のインスタンスを生成します。
options オブジェクトでは、someUsefulVariable キーに Map のインスタンスを入れた processorOptions を渡します。numberOfInputs は渡さず、デフォルト値が設定される様子を観察します。
const audioContext = new AudioContext();
await audioContext.audioWorklet.addModule("test-processor.js");
const testNode = new AudioWorkletNode(audioContext, "test-processor", {
processorOptions: {
someUsefulVariable: new Map([
[1, "one"],
[2, "two"],
]),
},
});
コンソールに以下のように出力されます。
> 1 // AudioWorkletNode options.numberOfInputs はデフォルトに設定される
> Map(2) { 1 => "one", 2 => "two" } // someUsefulVariable で設定した Map の複製
仕様書
| Specification |
|---|
| Web Audio API> # dom-audioworkletprocessor-audioworkletprocessor> |
ブラウザーの互換性
関連情報
AudioWorkletNodeインターフェイス