AudioWorklet
ウェブオーディオ API の AudioWorklet インターフェイスは、別のスレッドで実行して非常に低遅延の音声処理を提供するカスタム音声処理スクリプトを提供するのに使われます。
このワークレットのコードはグローバル実行コンテキスト AudioWorkletGlobalScope で、ワークレットと他の音声ノードで共有のウェブオーディオスレッドで実行されます。
音声コンテキストの AudioWorklet のインスタンスには、BaseAudioContext.audioWorklet プロパティを通じてアクセスできます。
Worklet AudioWorklet
対応ブラウザ
| 機能 | デスクトップ | モバイル | ||||
|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Safari | Chrome Android | Safari iOS | |
| 66 | 79 | 76 | 14.1 | 66 | 14.5 | |
| ウェブオーディオ API の AudioWorkletGlobalScope インターフェイスは、独自の AudioWorkletProcessor の派生クラスを定義するユーザーコードのグローバル実行コンテキストを表します。 | 66 | 79 | 76 | 14.1 | 66 | 14.5 |
| AudioWorkletGlobalScope インターフェイスの読み取り専用プロパティ currentFrame は、処理中の音声ブロックのサンプルフレームを表す単調増加の整数を返します。この値は各音声ブロックを処理するごとに 128 (render quantum のサイズ) 増えます。 | 66 | 79 | 76 | 14.1 | 66 | 14.5 |
| AudioWorkletGlobalScope インターフェイスの読み取り専用プロパティ currentTime は、処理中の音声ブロックのコンテキスト時刻を表す単調増加の double 値を返します。これはワークレットが属している BaseAudioContext の BaseAudioContext.currentTime プロパティと同じ値です。 | 66 | 79 | 76 | 14.1 | 66 | 14.5 |
port 実験的 AudioWorkletGlobalScope インターフェースの `port` 読み取り専用プロパティは、メインスレッドと関連付けられた AudioWorklet との間でメッセージを送受信するために使用できる MessagePort オブジェクトを返します。 | | | 138 | | | |
| AudioWorkletGlobalScope インターフェイスの registerProcessor メソッドは、AudioWorkletProcessor インターフェイスから派生したクラスのコンストラクターを指定の name で登録します。 | 66 | 79 | 76 | 14.1 | 66 | 14.5 |
| AudioWorkletGlobalScope インターフェイスの読み取り専用プロパティ sampleRate は、ワークレットが属する BaseAudioContext のサンプルレートを表す float 値を返します。 | 66 | 79 | 76 | 14.1 | 66 | 14.5 |
| ウェブオーディオ API の AudioWorkletNode インターフェイスは、ユーザー定義の AudioNode (他のノードとともに音声ルーティンググラフに接続できる) の基底クラスを表します。これは対応する AudioWorkletProcessor (ウェブオーディオレンダリングスレッドで実際の音声処理を行う) を持ちます。 | 66 | 79 | 76 | 14.1 | 66 | 14.5 |
| AudioWorkletNode() コンストラクターは新しい AudioWorkletNode オブジェクトを作成します。このオブジェクトは、JavaScript の関数により独自の音声処理を行う AudioNode を表します。 | 66 | 79 | 76 | 14.1 | 66 | 14.5 |
| AudioWorkletNode インターフェイスの読み取り専用プロパティ parameters は、関連付けられた AudioParamMap を返します。これは AudioParam オブジェクトが入った Map のようなコレクションです。中身のオブジェクトは、用いる AudioWorkletProcessor の生成時に AudioWorkletProcessor.parameterDescriptors 静的ゲッターに沿って生成されます。 | 66 | 79 | 76 | 14.1 | 66 | 14.5 |
| AudioWorkletNode インターフェイスの読み取り専用プロパティ port は、関連付けられた MessagePort を返します。これにより、ノードと対応する AudioWorkletProcessor の間で双方向通信ができます。 | 66 | 79 | 76 | 14.1 | 66 | 14.5 |
| processorerror イベントは、ノードで用いている AudioWorkletProcessor がコンストラクターか、AudioWorkletProcessor.process メソッドか、ユーザー定義のクラスメソッドのどれかで例外を投げた時発火します。 | 66 | 79 | 76 | 14.1 | 66 | 14.5 |
| ウェブオーディオ API の AudioWorkletProcessor インターフェイスは、独自の AudioWorkletNode が用いる音声処理コードを表します。これは AudioWorkletGlobalScope に存在し、ウェブオーディオレンダリングスレッドで実行されます。一方、対応する AudioWorkletNode はメインスレッドで実行されます。 | 64 | 79 | 76 | 14.1 | 64 | 14.5 |
| AudioWorkletProcessor() コンストラクターは新しい AudioWorkletProcessor オブジェクトを生成します。このオブジェクトは AudioWorkletNode で用いる音声処理の仕組みを表します。 | 64 | 79 | 76 | 14.1 | 64 | 14.5 |
| AudioWorkletProcessor インターフェイスの読み取り専用プロパティ port は、関連付けられた MessagePort を返します。これは、処理器と対応する AudioWorkletNode の間の通信に使用できます。 | 64 | 79 | 76 | 14.1 | 64 | 14.5 |
| audioWorklet は BaseAudioContext インターフェイスの読み取り専用プロパティで、 AudioWorklet のインスタンスを返します。これは、独自の音声処理を実装する AudioWorkletProcessor の派生クラスを追加するために使用します。 | 66 | 79 | 76 | 14.1 | 66 | 14.5 |
| Worklet インターフェイスは軽量なWorkerを提供し、開発者がレンダリングパイプラインの低水準な部分を制御できるようにします。 | 65 | 79 | 76 | 14.1 | 65 | 14.5 |
| addModule() は Worklet インターフェイスのメソッドで、指定した JavaScript ファイルで定義されるモジュールを現在の Worklet に読み込みます。 | 65 | 79 | 76 | 14.1 | 65 | 14.5 |
| WorkletGlobalScope インターフェイスは、特定のワークレットスコープクラスの継承元となる抽象クラスです。それぞれの WorkletGlobalScope が新しいグローバル環境を定義します。 | 65 | 79 | 76 | 14.1 | 65 | 14.5 |
実務での使いどころ
-
AudioWorklet の活用
ウェブオーディオ API の AudioWorklet インターフェイスは、別のスレッドで実行して非常に低遅延の音声処理を提供するカスタム音声処理スクリプトを提供するのに使われます。
注意点
- 古いブラウザでは対応していない場合がある。
実装メモ
- 一部の API はセキュアコンテキスト (HTTPS) やユーザー操作起点を必要とする。利用前に要件を確認すること。