AudioContext: AudioContext() コンストラクター
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月.
* Some parts of this feature may have varying levels of support.
AudioContext() コンストラクターは新しい AudioContext オブジェクトを生成します。このオブジェクトは音声モジュールが相互に接続された音声処理のグラフを表現しています。このグラフ中で用いられる音声モジュールは AudioNode として表現されます。
構文
new AudioContext()
new AudioContext(options)
引数
options省略可-
コンテキストを設定するために使用するオブジェクト。利用できるプロパティは以下のとおりです。
latencyHint省略可-
コンテキストを使用する再生の種類。定義済みの文字列(
"balanced"、"interactive"、"playback")、またはコンテキストの推奨する最大レイテンシーを秒単位で示す倍精度浮動小数点数値です。 ユーザーエージェントは、このリクエストに応じても応じなくても構いません。 コンテキストを作成した後、AudioContext.baseLatencyの値を調べて真のレイテンシーを決定します。"balanced": ブラウザーはレイテンシー値を選択する際、音声出力のレイテンシーと消費電力のバランスをとります。"interactive"(既定値): 音声は、ユーザー操作に反応したり、動画やゲームのアクションなどの視覚的な合図に合わせる必要があるなど、インタラクティブな要素に関与します。 ブラウザーは音声にグリッチを発生させない使用可能な最低のレイテンシーを選択します。これは消費電力の増加を要求される可能性があります。"playback": ブラウザーは、レイテンシーを犠牲にして消費電力を最小限に抑え、再生時間を最大化するレイテンシーを選択します。 音楽再生など、操作を必要としない再生に有益な機能です。
sampleRate省略可-
新しいコンテキストに使用するサンプリングレートを示します。この値は、新しいコンテキストを構成するサンプリングレートを示す浮動小数点数で、 1 秒あたりのサンプル数でなければなりません。 また、
AudioBuffer.sampleRateで対応している値でなければなりません。 値は通常 8,000Hz から 96,000Hz の間で、既定値は出力機器によって異なりますが、サンプリングレート 44,100Hz が最も一般的です。 もしsampleRateプロパティがオプションに含まれていなかったり、音声コンテキストを作成するときにオプションが指定されていなかったりした場合 は、新しいコンテキストの出力機器が推奨するサンプリングレートが既定で使用されます。 sinkId省略可 Experimental-
AudioContextに使用するオーディオ出力機器のシンク ID を指定します。これは以下の値のうちの一つを取ります。- シンク ID を表す文字列です。これは例えば、
MediaDevices.enumerateDevices()が返すMediaDeviceInfoオブジェクトのdeviceIdプロパティから取得したものです。 - シンク ID を表す文字列です。シンク ID を表す文字列です。
- シンク ID を表す文字列です。これは例えば、
返値
新しい AudioContext インスタンスです。
例外
NotSupportedErrorDOMException-
指定した
sampleRateがコンテキストで対応していない場合に発生します。
使用上の注意
仕様書では、ユーザーエージェントが対応すべき音声コンテキストの数や、レイテンシの最小・最大要件(もしあれば)などについてあまり詳しく説明していないため、これらの詳細はブラウザーによって異なる可能性があります。重要であれば、必ず値を調べてください。
特に、仕様書では同時に開くための音声コンテキストの最大数や最小数を示していないため、これはブラウザーの実装に任せられています。
Google Chrome
Chrome におけるタブごとの音声コンテキストの制約
バージョン 66 以前の Google Chrome では、 1 つのタブにつき最大 6 つの音声コンテキストにしか対応していませんでした。
Chrome での標準外の例外
latencyHint プロパティの値が有効でない場合、Chrome は "The provided value '...' is not a valid enum value of type AudioContextLatencyCategory" というメッセージと共に TypeError 例外を発生します。
例
この例では、インタラクティブ音声用の新しい AudioContext を作成し(遅延を最適化)、サンプルレートを 44.1kHz、音声出力を固有のものにします。
const audioCtx = new AudioContext({
latencyHint: "interactive",
sampleRate: 44100,
sinkId: "bb04fea9a8318c96de0bd...", // truncated for brevity
});
仕様書
| Specification |
|---|
| Web Audio API> # dom-audiocontext-audiocontext> |
ブラウザーの互換性
関連情報
OfflineAudioContext()コンストラクター