AudioContext インターフェースはAudioNodeとして表現されるオーディオモジュールから構成されるオーディオ処理グラフを表します。オーディオコンテキストはオーディオ処理やデコードを行うノードの作成を制御します。 Web Audioで何かする前に AudioContext を作成する必要があります。全てのできごとはコンテキストの中で起こるのです。
AudioContext はイベントのターゲットとなりえるので、 EventTarget インターフェースを実装します。
プロパティ
AudioContext.currentTime読取専用- スケジューリングに使用する単純増加するハードウェア時間の double 小数値を返します。単位は秒です。0から始まり、止めたり戻したりすることはありません。
AudioContext.destination読取専用- コンテキストの中の全てのオーディオが行き着く先を表す
AudioDestinationNodeを返します。オーディオレンダリングデバイスと考えることができます。 AudioContext.listener読取専用- 3Dポジショニングで利用する
AudioListenerオブジェクトを返します。 AudioContext.sampleRate読取専用- コンテキスト内の全てのノードで使われるサンプルレート(1秒あたりのサンプル数)を表す float 小数値を返します。
AudioContextのサンプルレートは変更できません。 AudioContext.state読取専用AudioContextの現在の状態を返します。AudioContext.mozAudioChannelType読取専用- Firefox OS デバイスで、
AudioContextで再生される音声を再生するチャンネルを取得するために使えます。
イベントハンドラ
AudioContext.onstatechangestatechangeイベントが発火したとき実行されるイベントハンドラ。これはAudioContextの状態を変えるメソッド(AudioContext.suspend、AudioContext.resumeまたはAudioContext.close)で状態が変わったとき発生します。
メソッド
EventTarget インターフェースからのメソッドも実装しています。
AudioContext.close()- オーディオコンテキストを閉じて、使っていたシステムのオーディオリソースを全て解放します。
AudioContext.createBuffer()- 新規の空の
AudioBufferオブジェクトを生成します。そこにデータを書きこめば、AudioBufferSourceNodeで再生できます。 AudioContext.createBufferSource()AudioBufferオブジェクトに書き込まれた音声データを再生するAudioBufferSourceNodeを生成します。AudioBufferはAudioContext.createBufferを使った場合や、AudioContext.decodeAudioDataでオーディオトラックをデコードしたときに生成されます。AudioContext.createMediaElementSource()HTMLMediaElementに関連付けられたMediaElementAudioSourceNodeを生成します。これは<video>や<audio>要素の再生と編集で使います。AudioContext.createMediaStreamSource()MediaStreamで表された、ローカルコンピュータのマイクなどから来るオーディオストリームに関連付けられたMediaStreamAudioSourceNodeを生成します。AudioContext.createMediaStreamDestination()MediaStreamで表された、ローカルファイルや他のコンピュータから送られるオーディオストリームに関連付けられたMediaStreamAudioDestinationNodeを生成しますAudioContext.createScriptProcessor()- Javascriptで音声を直接操作する
ScriptProcessorNodeを生成します。 AudioContext.createStereoPanner()- 音源のステレオパンニングを行う
StereoPannerNodeを生成します。 AudioContext.createAnalyser()- 音声の時間と周波数を解析する
AnalyserNodeを生成します。これはデータの可視化などで使えます。 AudioContext.createBiquadFilter()- いくつかの一般的なフィルタ(ハイパス、ローパス、バンドパスなど)を設定できる二次フィルターを表す
BiquadFilterNodeを生成します。 AudioContext.createChannelMerger()- 複数のオーディオストリームを1つに混合する
ChannelMergerNodeを生成します。 AudioContext.createChannelSplitter()- オーディオストリームを個別に処理するためにチャンネルを分離する
ChannelSplitterNodeを生成します。 AudioContext.createConvolver()- オーディオグラフに、例えばリバーブ効果などの畳み込み効果を適用する
ConvolverNodeを生成します。 AudioContext.createDelay()- 入力音声を一定時間遅らせる
DelayNodeを生成します。このノードはWebオーディオグラフでフィードバックループを生成する場合にも有効です。 AudioContext.createDynamicsCompressor()- 音声信号にコンプレッサーを適用する
DynamicsCompressorNodeを生成します。 AudioContext.createGain()- 音声の全体的なボリュームを操作する
GainNodeを生成します。 AudioContext.createOscillator()- 周期的な波形を出力する
OscillatorNodeを生成します。これは基礎的な音源です。 AudioContext.createPanner()- 3次元空間での音の位置と振る舞いを表す
PannerNodeを生成します。 AudioContext.createPeriodicWave()- 周期的な波形を定義する
PeriodicWaveを生成します。これはOscillatorNodeの出力を決めるために使います。 AudioContext.createWaveShaper()- 非線形ディストーションエフェクトの実装に使う
WaveShaperNodeを生成します。 AudioContext.createAudioWorker()AudioWorkerNodeを生成します。これは音声を直接生成、処理、解析するwebワーカースレッドと相互作用します。2014年8月29日に仕様が追加されましたが、これを実装したブラウザはまだありません。
AudioContext.decodeAudioData()ArrayBufferのオーディオファイルデータを非同期にデコードします。この場合、ArrayBufferには、通常はXMLHttpRequestのresponseTypeにarraybufferを設定してresponse属性から読み込みます。このメソッドが扱えるのは、完全なファイルのみで、オーディオファイルの断片は扱えません。AudioContext.resume()- 一時停止されたオーディオコンテキストの時間の流れを再開します。
AudioContext.suspend()- オーディオコンテキストの時間の流れを、一時的に音声ハードウェアへのアクセスとプロセスのCPU/バッテリーの使用を減らすことで一時停止します。
廃止メソッド
AudioContext.createJavaScriptNode()- JavaScriptで音声を直接処理する
JavaScriptNodeを生成します。このメソッドは廃止され、AudioContext.createScriptProcessor()に置き換えられました。 AudioContext.createWaveTable()- 周期的な波形を定義する
WaveTableNodeを生成します。このメソッドは廃止され、AudioContext.createPeriodicWave()に置き換えられました。
例
基本的なコンテキストの作成方法:
var audioCtx = new AudioContext;
クロスブラウザー対応版:
var AudioContext = window.AudioContext || window.webkitAudioContext; var audioCtx = new AudioContext(); var oscillatorNode = audioCtx.createOscillator(); var gainNode = audioCtx.createGain(); var finish = audioCtx.destination; // etc.
仕様
| Specification | Status | Comment |
|---|---|---|
| Web Audio API The definition of 'AudioContext' in that specification. |
草案 |
ブラウザーの互換性
| Feature | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari (WebKit) |
|---|---|---|---|---|---|
| Basic support | 10.0webkit 35 (unprefixed) |
25.0 (25.0) | 未サポート | 15.0webkit 22 (unprefixed) |
6.0webkit |
createStereoPanner() |
42.0 | 37.0 (37.0) | 未サポート | 未サポート | 未サポート |
| Feature | Android | Firefox Mobile (Gecko) | Firefox OS | IE Mobile | Opera Mobile | Safari Mobile | Chrome for Android |
|---|---|---|---|---|---|---|---|
| Basic support | 未サポート | 37.0 (37.0) | 2.2 | 未サポート | 未サポート | 未サポート | (有) |

