AudioWorkletProcessor: AudioWorkletProcessor() コンストラクター

AudioWorkletProcessor() コンストラクターは新しい AudioWorkletProcessor オブジェクトを生成します。このオブジェクトは AudioWorkletNode で用いる音声処理の仕組みを表します。

構文

メモ: AudioWorkletProcessor とその派生クラスは、ユーザーのコードから直接生成することはできません。これらは対応する AudioWorkletNode の生成に伴って内部でのみ生成されます。

js
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 オブジェクトが渡され、このオブジェクトには少なくとも numberOfInputsnumberOfOutputs があります。

返値

新しく構築された AudioWorkletProcessor のインスタンスを返します。

この例では、AudioWorkletNode constructor に独自のオプションを渡し、その構造化複製AudioWorkletProcessor のコンストラクターに渡される様子を観察します。

まず、独自の AudioWorkletProcessor を定義して登録する必要があります。 これは別のファイルで行うことに注意してください。

js
// 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 は渡さず、デフォルト値が設定される様子を観察します。

js
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

ブラウザーの互換性

BCD tables only load in the browser

関連情報