このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。
AudioWorkletNode
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月.
メモ:
このインターフェイスは保護されたコンテキストの外でも使用可能ですが、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> |
ブラウザーの互換性
Loading...