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 April 2021.

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

関連情報