AudioWorkletNode
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.
メモ:
このインターフェイスは安全なコンテキストの外でも使用可能ですが、BaseAudioContext.audioWorklet
プロパティはそうではありません。そのため、独自の AudioWorkletProcessor
は安全なコンテキストの外では使用できません。
ウェブオーディオ API の AudioWorkletNode
インターフェイスは、ユーザー定義の AudioNode
(他のノードとともに音声ルーティンググラフに接続できる) の基底クラスを表します。これは対応する AudioWorkletProcessor
(ウェブオーディオレンダリングスレッドで実際の音声処理を行う) を持ちます。
コンストラクター
AudioWorkletNode()
-
新しい
AudioWorkletNode
オブジェクトのインスタンスを作成します。
インスタンスプロパティ
親の AudioNode
からもプロパティを継承します。
AudioWorkletNode.port
読取専用-
ノードと対応する
AudioWorkletProcessor
の間での双方向通信に使用するMessagePort
を返します。もう一方の端は、処理器のport
プロパティで参照できます。 AudioWorkletNode.parameters
読取専用-
AudioParamMap
を返します。これはAudioParam
オブジェクトのコレクションです。対応するAudioWorkletProcessor
の生成中に生成されます。このAudioWorkletProcessor
に静的なparameterDescriptors
ゲッターがある場合、このゲッターが返すAudioParamDescriptor
の配列がこのAudioWorkletNode
においてAudioParam
オブジェクトを生成するのに用いられます。この仕組みにより、AudioWorkletNode
からアクセスできる独自のAudioParam
オブジェクトを生成できます。そして、対応するAudioWorkletProcessor
でこれらの値を使用できます。
イベント
processorerror
-
対応する
AudioWorkletProcessor
でエラーが投げられた時発火します。発火した後は、処理器、そして対応するノードはずっと無音を出力します。
インスタンスメソッド
親の AudioNode
からメソッドを継承します。
AudioWorkletNode
インターフェイスは自身のメソッドを定義していません。
例
この例では、ランダムノイズを出力する独自の AudioWorkletNode
を生成します。
まず、ランダムノイズを出力する独自の AudioWorkletProcessor
を定義する必要があります。注意点として、これは個別のファイルで定義してください。
// 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
のインスタンスを作成し、作成したノードを音声グラフに接続します。
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