このページはコミュニティーの尽力で英語から翻訳されました。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 (ウェブオーディオレンダリングスレッドで実際の音声処理を行う) を持ちます。
In this article
コンストラクター
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.jsclass 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> |