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 April 2021.
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
インスタンスです。
例外
NotSupportedError
DOMException
-
指定した
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 |
ブラウザーの互換性
BCD tables only load in the browser
関連情報
OfflineAudioContext()
コンストラクター