AudioWorkletNode
メモ: このインターフェイスは安全なコンテキストの外でも使用可能ですが、BaseAudioContext.audioWorklet プロパティはそうではありません。そのため、独自の AudioWorkletProcessor は安全なコンテキストの外では使用できません。
ウェブオーディオ API の AudioWorkletNode インターフェイスは、ユーザー定義の AudioNode (他のノードとともに音声ルーティンググラフに接続できる) の基底クラスを表します。これは対応する AudioWorkletProcessor (ウェブオーディオレンダリングスレッドで実際の音声処理を行う) を持ちます。
コンストラクター
AudioWorkletNode()-
新しい
AudioWorkletNodeオブジェクトのインスタンスを作成します。
インスタンスプロパティ
親の AudioNode からもプロパティを継承します。
AudioWorkletNode.port読取専用-
ノードと対応する
AudioWorkletProcessorの間での双方向通信に使用するMessagePortを返します。もう一方の端は、処理器のportプロパティで参照できます。 AudioWorkletNode.parameters読取専用-
AudioParamMapを返します。これはAudioParamオブジェクトのコレクションです。対応するAudioWorkletProcessorの生成中に生成されます。このAudioWorkletProcessorに静的なparameterDescriptorsゲッターがある場合、このゲッターが返すAudioParamDescriptor(en-US) の配列がこのAudioWorkletNodeにおいてAudioParamオブジェクトを生成するのに用いられます。この仕組みにより、AudioWorkletNodeからアクセスできる独自のAudioParamオブジェクトを生成できます。そして、対応するAudioWorkletProcessorでこれらの値を使用できます。
イベント
processorerror-
対応する
AudioWorkletProcessorでエラーが投げられた時発火します。発火した後は、処理器、そして対応するノードはずっと無音を出力します。
インスタンスメソッド
親の AudioNode からメソッドを継承します。
AudioWorkletNode インターフェイスは自身のメソッドを定義していません。
例
この例では、ランダムノイズを出力する独自の AudioWorkletNode を生成します。
まず、ランダムノイズを出力する独自の AudioWorkletProcessor を定義する必要があります。注意点として、これは個別のファイルで定義してください。
js
// random-noise-processor.js
class RandomNoiseProcessor extends AudioWorkletProcessor {
process(inputs, outputs, parameters) {
const output = outputs[0];
output.forEach((channel) => {
for (let i = 0; i < channel.length; i++) {
channel[i] = Math.random() * 2 - 1;
}
});
return true;
}
}
registerProcessor("random-noise-processor", RandomNoiseProcessor);
そして、メインスクリプトファイルで処理器をロードし、この処理器の名前を渡して AudioWorkletNode のインスタンスを作成し、作成したノードを音声グラフに接続します。
js
const audioContext = new AudioContext();
await audioContext.audioWorklet.addModule("random-noise-processor.js");
const randomNoiseNode = new AudioWorkletNode(
audioContext,
"random-noise-processor"
);
randomNoiseNode.connect(audioContext.destination);
仕様書
| Specification |
|---|
| Web Audio API # AudioWorkletNode |
ブラウザーの互換性
BCD tables only load in the browser