序文
これまでの Web 上のオーディオはかなり未発達なもので、ごく最近まで Flash や QuickTime のようなプラグインを通して配信しなくてはなりませんでした。HTML5 での audio
要素の導入は、基本的なストリーミング・オーディオ再生を可能にする重要なものです。しかし、より複雑なオーディオアプリケーションを扱うには、それだけではまだ充分に強力ではありません。洗練された Web ベースのゲームやインタラクティブ・アプリケーションのためには別の解決策が必要とされます。この仕様では、近年のデスクトップ・オーディオ制作アプリケーションに見られるミキシング、プロセシング、フィルタリング処理に加え、近年のゲームオーディオエンジンに見られるような機能も持たせる事を目標とします。
この API はさまざまな使用例 [webaudio-usecases] を考慮して設計されています。理想的には すべての ユースケースがスクリプトから制御される最適化された C++ エンジンを使って無理なく実装でき、ブラウザーで動作するようにサポートされなくてはなりません。とは言っても、近年のデスクトップ・オーディオソフトウェアは極めて高度な機能を持ち、それらの一部はこのシステムを使ったとしても構築する事が困難か不可能と考えられます。Apple 社の Logic Audio がそのようなアプリケーションの 1 つであり、外部 MIDI コントローラー、任意のプラグイン・オーディオエフェクトやシンセサイザー、高度に最適化されたオーディオファイルのディスクへの読み込み/書き出し、密に統合されたタイムストレッチなどなどをサポートしています。それでもなお、ここで提案するシステムは、音楽に関するものを含めて、かなり複雑なゲームやインタラクティブ・アプリケーションの広い範囲を充分にサポートする事が可能です。またそれは、WebGL によってもたらされる、より高度なグラフィックスの機能をよく引き立たせる事が可能です。このAPIはより高度な機能を後から追加できるように設計されています。
機能
この API は、これらの基本機能をサポートします:
-
単純な、あるいは複雑なミキシング/エフェクト・アーキテクチャーのための モジュラールーティング
-
内部処理に 32 ビット浮動小数を使用した高いダイナミックレンジ
-
非常に高度なリズムの精度を必要とするドラムマシンやシーケンサーなどのアプリケーションのための、低 レイテンシー な サンプル単位の時間精度での音の再生。これには、エフェクトを 動的に生成 できるようにする事も含まれます
-
エンベロープ、フェードイン/フェードアウト、グラニュラーエフェクト、フィルタースイープ、LFO などのためのオーディオパラメーターのオートメーション
-
分割や結合など、オーディオストリームのチャンネルに対する柔軟な扱い
-
getUserMedia()
からのMediaStream
を使用したライブオーディオ入力に対する処理 -
WebRTC との統合
-
MediaStreamTrackAudioSourceNode
と [webrtc] を使ってリモート・ピアから受け取ったオーディオの処理 -
生成または加工されたオーディオストリームの
MediaStreamAudioDestinationNode
と [webrtc] を使ったリモート・ピアへの送信
-
-
スクリプトでの直接的 なオーディオストリームの合成および加工
-
3D ゲームや没入環境を幅広くサポートする 空間音響 :
-
パンニングモデル: 等価パワー, HRTF, パススルー
-
距離減衰
-
サウンドコーン
-
障害物 / 遮蔽物
-
音源 / リスナー
-
-
広範囲の線形エフェクト、特に非常に高い品質のルーム・エフェクトに使用できるコンボリューションエンジン。これによって可能なエフェクトの例を以下に示します:
-
小さい / 大きい部屋
-
大聖堂
-
コンサートホール
-
洞窟
-
トンネル
-
廊下
-
森
-
野外劇場
-
ドア越しの遠くの部屋
-
極端なフィルター
-
風変りな巻き戻し効果
-
極端なコムフィルター効果
-
-
ミックス全体の制御やスウィートニング ( 訳注:ビデオに効果音などをつける MA 作業 ) のためのダイナミック・コンプレッション
-
効率的な双二次フィルターによる、ローパス、ハイパス、その他一般的なフィルター
-
ディストーションやその他の非線形エフェクトのためのウェーブシェイピング・エフェクト
-
オシレーター
モジュラールーティング
モジュラールーティングによって異なる AudioNode
オブジェクト同士を任意に接続できます。それぞれのノードは 入力 および 出力 を持っています。 ソースノード は入力は持たず、ひとつの出力を持ちます。 デスティネーションノード はひとつの入力を持ち、出力は持っていません。フィルターなどの他のノードはソースとデスティネーションの間に配置することができます。2 つのオブジェクトが互いに接続し場合、低レベルのストリーム形式の詳細について開発者が煩わされる事なく、適正な処理が行われます。 例えばもしモノラルの音声ストリームがステレオの入力に接続されていても、左右のチャンネルに 適正 にミックスされます。
最も単純な例は、ひとつの音声ソースを出力に直接接続したものです。すべての接続は単一の AudioDestinationNode
を持つ AudioContext
内部で行われます:

この単純なルーティングを図示します。この例では単一の音を再生しています:
const context= new AudioContext(); function playSound() { const source= context. createBufferSource(); source. buffer= dogBarkingBuffer; source. connect( context. destination); source. start( 0 ); }
これはもっと複雑な例で、3 つのソースとコンボリューションリバーブが最終出力段にあるダイナミックコンプレッサーを介して送られます:

let context; let compressor; let reverb; let source1, source2, source3; let lowpassFilter; let waveShaper; let panner; let dry1, dry2, dry3; let wet1, wet2, wet3; let mainDry; let mainWet; function setupRoutingGraph() { context= new AudioContext(); // Create the effects nodes. lowpassFilter= context. createBiquadFilter(); waveShaper= context. createWaveShaper(); panner= context. createPanner(); compressor= context. createDynamicsCompressor(); reverb= context. createConvolver(); // Create main wet and dry. mainDry= context. createGain(); mainWet= context. createGain(); // Connect final compressor to final destination. compressor. connect( context. destination); // Connect main dry and wet to compressor. mainDry. connect( compressor); mainWet. connect( compressor); // Connect reverb to main wet. reverb. connect( mainWet); // Create a few sources. source1= context. createBufferSource(); source2= context. createBufferSource(); source3= context. createOscillator(); source1. buffer= manTalkingBuffer; source2. buffer= footstepsBuffer; source3. frequency. value= 440 ; // Connect source1 dry1= context. createGain(); wet1= context. createGain(); source1. connect( lowpassFilter); lowpassFilter. connect( dry1); lowpassFilter. connect( wet1); dry1. connect( mainDry); wet1. connect( reverb); // Connect source2 dry2= context. createGain(); wet2= context. createGain(); source2. connect( waveShaper); waveShaper. connect( dry2); waveShaper. connect( wet2); dry2. connect( mainDry); wet2. connect( reverb); // Connect source3 dry3= context. createGain(); wet3= context. createGain(); source3. connect( panner); panner. connect( dry3); panner. connect( wet3); dry3. connect( mainDry); wet3. connect( reverb); // Start the sources now. source1. start( 0 ); source2. start( 0 ); source3. start( 0 ); }
モジュラールーティングはまた AudioNode
の出力を 別の AudioNode
の動きを制御する AudioParam
パラメーターに接続する事もできます。この場合は、ノードからの出力は 入力信号ではなくモジュレーション信号として働きます。

function setupRoutingGraph() { const context= new AudioContext(); // Create the low frequency oscillator that supplies the modulation signal const lfo= context. createOscillator(); lfo. frequency. value= 1.0 ; // Create the high frequency oscillator to be modulated const hfo= context. createOscillator(); hfo. frequency. value= 440.0 ; // Create a gain node whose gain determines the amplitude of the modulation signal const modulationGain= context. createGain(); modulationGain. gain. value= 50 ; // Configure the graph and start the oscillators lfo. connect( modulationGain); modulationGain. connect( hfo. detune); hfo. connect( context. destination); hfo. start( 0 ); lfo. start( 0 ); }
API の概要
定義されているインターフェースは次のとおりです:
-
AudioContext インターフェースは、
AudioNode
間の接続を表すオーディオ信号グラフを保持します。 -
AudioNode
インターフェースは、オーディオのソース、オーディオの出力、その間にある処理モジュールを表します。AudioNode
は モジュラー方式 で動的に互いに接続されます。AudioNode
はAudioContext
のコンテキスト内に存在します。 -
AnalyserNode
インターフェースは、ミュージックビジュアライザーやその他の視覚化アプリケーションで使用されるAudioNode
です。 -
AudioBuffer
インターフェースは、メモリー内に保持されるオーディオのリソースで使用されます。これらはワンショットの音、またはもっと長いオーディオクリップを表します。 -
AudioBufferSourceNode
インターフェースは、AudioBuffer からの音を発生するAudioNode
です。 -
AudioDestinationNode
インターフェースは、AudioNode
のサブクラスでオーディオの最終的な出力地点を表します。 -
AudioParam
インターフェースは、AudioNode
の個別の機能、例えば音量などを制御します。 -
AudioListener
インターフェースは、PannerNode
と共に空間音響のために使用されます。 -
AudioWorklet
インターフェースは、スクリプトでオーディオを直接処理するカスタムノードを作成するファクトリーを表します。 -
AudioWorkletGlobalScope
インターフェースは、AudioWorkletProcessor の処理スクリプトが実行されるコンテキストです。 -
AudioWorkletNode
インターフェースは、AudioWorkletProcessor で処理されるAudioNode
を表します。 -
AudioWorkletProcessor
インターフェースは、Audio ワーカー内の 1 つのノードのインスタンスを表します。 -
BiquadFilterNode
インターフェースは、次のような一般的な低次のフィルターのAudioNode
です:-
ローバス
-
ハイパス
-
バンドパス
-
ローシェルフ
-
ハイシェルフ
-
ピーキング
-
ノッチ
-
オールパス
-
-
ChannelMergerNode
インターフェースは、複数のオーディオストリームからひとつのオーディオストリームにチャンネルの結合を行うAudioNode
です。 -
ChannelSplitterNode
インターフェースは、ルーティンググラフ内のオーディオストリームの個別のチャンネルにアクセスするために使用されるAudioNode
です。 -
ConstantSourceNode
インターフェースは、AudioParam
による値のオートメーションが可能な定数値を出力するAudioNode
です。 -
ConvolverNode
インターフェースは、( 例えばコンサートホールでの音のような ) リアルタイム線形エフェクトを加えるAudioNode
です。 -
DynamicsCompressorNode
インターフェースは、ダイナミクス・コンプレッションのためのAudioNode
です。 -
IIRFilterNode
インターフェースは、一般的な IIR フィルターのAudioNode
です。 -
MediaElementAudioSourceNode
インターフェースは、audio
、video
その他のメディア要素を音源とするAudioNode
です。 -
MediaStreamAudioSourceNode
インターフェースは、ライブオーディオ入力やリモート・ピアから受け取ったようなMediaStream
を音源とするAudioNode
です。 -
MediaStreamTrackAudioSourceNode
インターフェースは、MediaStreamTrack
からのオーディオを音源とするAudioNode
です。 -
MediaStreamAudioDestinationNode
インターフェースは、リモート・ピアに送信するMediaStream
を出力先とするAudioNode
です。 -
PannerNode
インターフェースは、3D 空間での空間音響/空間定位のためのAudioNode
です。 -
PeriodicWave
インターフェースは、OscillatorNode
で使用されるカスタム周期波形を指定するために使用されます。 -
OscillatorNode
インターフェースは、周期的な波形を発生するAudioNode
です。 -
StereoPannerNode
インターフェースは、ステレオストリームで 入力された信号の equal-power 方式の定位を行うAudioNode
です。 -
WaveShaperNode
インターフェースは、ディストーションやその他微妙なウォーミング効果 ( 訳注:いわゆるサチュレーション効果の事 ) など、非線形のウェーブシェイピング・エフェクトを加えるためのAudioNode
です。
また、Web Audio API で既に非推奨とされましたがまだ削除されておらず、置き換えの実装が予定されているいくつかの機能があります。
-
ScriptProcessorNode
インターフェースは、スクリプトでオーディオを直接生成または処理するためのAudioNode
です。 -
AudioProcessingEvent
インターフェースは、ScriptProcessorNode
オブジェクトと共に用いられるイベントタイプです。
1. オーディオ API
1.1. BaseAudioContext
インターフェース
Opera43+Edge79+
Edge (Legacy)NoneIENone
Firefox for Android53+iOS SafariNoneChrome for Android56+Android WebView56+Samsung Internet6.0+Opera Mobile43+
このインターフェースは AudioNode
オブジェクトのセットとそれらの接続を表します。それによって AudioDestinationNode
に任意の信号をルーティングする事を可能にします。ノードはコンテキストから作成され、お互いに 接続 されます。
BaseAudioContext
は直接的にはインスタンス化されず、代わりに AudioContext
(リアルタイムレンダリングの場合)と OfflineAudioContext
(オフラインレンダリングの場合)が拡張された具体的なインターフェースとなっています。
BaseAudioContext
は、初期状態では空のプロミスの順序付きリストである [[pending promises]]
という内部スロットを持って作成されます。
各 BaseAudioContext
は、固有の メディア要素イベントタスクソース を持っています。 さらに BaseAudioContext
には AudioContextState
から値を取得する2つのプライベートスロット [[レンダリングスレッドの状態]]
と [[制御スレッドの状態]]
があり、どちらも最初は "suspended"
に設定されています。
enum {
AudioContextState "suspended" ,"running" ,"closed" };
列挙値の説明 | |
---|---|
"suspended "
| このコンテキストは現在中断しています ( コンテキストの時間は進まず、オーディオハードウェアはパワーダウン / 解放されている可能性もあります)。 |
"running "
| オーディオは処理状態にあります。 |
"closed "
| このコンテキストは解放され、もうオーディオ処理に使用できません。すべてのシステムオーディオリソースは解放されました。 |
callback DecodeErrorCallback =undefined (DOMException );
error callback DecodeSuccessCallback =undefined (AudioBuffer ); [
decodedData Exposed =Window ]interface :
BaseAudioContext EventTarget {readonly attribute AudioDestinationNode destination ;readonly attribute float sampleRate ;readonly attribute double currentTime ;readonly attribute AudioListener listener ;readonly attribute AudioContextState state ; [SameObject ,SecureContext ]readonly attribute AudioWorklet audioWorklet ;attribute EventHandler onstatechange ;AnalyserNode createAnalyser ();BiquadFilterNode createBiquadFilter ();AudioBuffer createBuffer (unsigned long ,
numberOfChannels unsigned long ,
length float );
sampleRate AudioBufferSourceNode createBufferSource ();ChannelMergerNode createChannelMerger (optional unsigned long numberOfInputs = 6);ChannelSplitterNode createChannelSplitter (optional unsigned long numberOfOutputs = 6);ConstantSourceNode createConstantSource ();ConvolverNode createConvolver ();DelayNode createDelay (optional double maxDelayTime = 1.0);DynamicsCompressorNode createDynamicsCompressor ();GainNode createGain ();IIRFilterNode createIIRFilter (sequence <double >,
feedforward sequence <double >);
feedback OscillatorNode createOscillator ();PannerNode createPanner ();PeriodicWave createPeriodicWave (sequence <float >,
real sequence <float >,
imag optional PeriodicWaveConstraints = {});
constraints ScriptProcessorNode createScriptProcessor (optional unsigned long bufferSize = 0,optional unsigned long numberOfInputChannels = 2,optional unsigned long numberOfOutputChannels = 2);StereoPannerNode createStereoPanner ();WaveShaperNode createWaveShaper ();Promise <AudioBuffer >decodeAudioData (ArrayBuffer ,
audioData optional DecodeSuccessCallback ?,
successCallback optional DecodeErrorCallback ?); };
errorCallback
1.1.1. 属性
-
Firefox76+SafariNoneChrome66+
OperaYesEdge79+
Edge (Legacy)NoneIENone
Firefox for Android79+iOS SafariNoneChrome for Android66+Android WebView66+Samsung Internet9.0+Opera MobileYesaudioWorklet
, AudioWorklet 型, readonly -
[HTML] と
AudioWorklet
のアルゴリズムにより定義されたAudioWorkletProcessor
クラスのスクリプトをインポート可能なWorklet
オブジェクトへのアクセスを行います。 -
In all current engines.
Firefox25+Safari6+Chrome14+
Opera15+Edge79+
Edge (Legacy)12+IENone
Firefox for Android25+iOS Safari6+Chrome for Android18+Android WebView37+Samsung Internet1.0+Opera Mobile14+currentTime
, double 型, readonly -
コンテキストのレンダリンググラフで最後に処理されたオーディオブロックの最後のサンプルフレームの次のサンプルフレームを秒で表した時刻です。もしコンテキストのレンダリンググラフがまだオーディオブロックを処理していない場合
currentTime
は 0 になります。currentTime
の時間軸で 0 はグラフで処理される最初のブロックの最初のサンプルフレームに対応します。このシステムの経過時間はBaseAudioContext
が生成するオーディオストリームの経過時間に対応し、それはシステム内の他の時計には同期しないかも知れません。(OfflineAudioContext
では、ストリームはどのデバイスでも能動的に再生されないため、実時間とはまったく違う進み方になります )Web Audio API のすべてのスケジュールされた時刻は
currentTime
に対する相対値になります。BaseAudioContext
が "running
" 状態にあるとき、この属性の値は単調増加し、レンダリングスレッドにより 1 レンダリング量子 に対応する均一な増分で更新されます。そのため動作中のコンテキストでは、currentTime
はシステムがオーディオブロックを処理するに従って徐々に増加し、常に次に処理されるオーディオブロックの先頭の時刻を表します。それはまた現在の状態に対する変更が効力を持つ最も早い時刻でもあります。currentTime
は制御スレッドが処理を戻すまでに アトミック に読み取られなくてはなりません ( MUST )。 -
In all current engines.
Firefox25+Safari6+Chrome14+
Opera15+Edge79+
Edge (Legacy)12+IENone
Firefox for Android25+iOS Safari6+Chrome for Android18+Android WebView37+Samsung Internet1.0+Opera Mobile14+destination
, AudioDestinationNode 型, readonly -
AudioDestinationNode
は単一の入力を持ち、すべてのオーディオの最終的な出口を表しています。通常これは実際のオーディオハードウェアを表します。動作中のすべてのAudioNode
は直接または間接的にこのdestination
に接続されます。 -
In all current engines.
Firefox25+Safari6+Chrome14+
Opera15+Edge79+
Edge (Legacy)12+IENone
Firefox for Android25+iOS Safari6+Chrome for Android18+Android WebView37+Samsung Internet1.0+Opera Mobile14+listener
, AudioListener 型, readonly -
AudioListener
は 3D 空間音響 で使用されます。 -
BaseAudioContext/onstatechange
In all current engines.
Firefox40+Safari9+Chrome43+
OperaYesEdge79+
Edge (Legacy)14+IENone
Firefox for Android40+iOS Safari9+Chrome for AndroidYesAndroid WebViewYesSamsung InternetYesOpera MobileYesonstatechange
, EventHandler 型 -
BaseAudioContext
に AudioContext の状態が変化したとき ( 例えば、対応する Promise がリゾルブされたときなど ) にディスパッチされるイベントのEventHandler
を設定するために使用されるプロパティです。 AudioContext の状態を直接問い合わせる事ができるEvent
型のイベントがイベントハンドラーに発行されます。 新たに作成された AudioContextは 常にsuspended
状態から開始し、状態の変化イベントは異なる状態への遷移の度に発行されます。このイベントはoncomplete
イベントが発行される前に発行されます。 -
In all current engines.
Firefox25+Safari6+Chrome14+
Opera15+Edge79+
Edge (Legacy)12+IENone
Firefox for Android25+iOS Safari6+Chrome for Android18+Android WebView37+Samsung Internet1.0+Opera Mobile14+sampleRate
, float 型, readonly -
BaseAudioContext
が扱うオーディオのサンプルレート ( 1 秒あたりのサンプルフレーム数 ) です。コンテキスト内のすべてのAudioNode
はこのレートで動作する事を想定しています。これを想定するため、サンプレートコンバータや " 可変速 " 処理はリアルタイム処理内ではサポートされません。 ナイキスト周波数 はこのサンプルレートの半分の値となります。 -
In all current engines.
Firefox40+Safari9+Chrome43+
OperaYesEdge79+
Edge (Legacy)14+IENone
Firefox for Android40+iOS Safari9+Chrome for AndroidYesAndroid WebViewYesSamsung InternetYesOpera MobileYesstate
, AudioContextState 型, readonly -
BaseAudioContext
の現在の状態を表します。その値は[[制御スレッドの状態]]
と同じです。
1.1.2. メソッド
-
BaseAudioContext/createAnalyser
In all current engines.
Firefox25+Safari6+Chrome14+
Opera15+Edge79+
Edge (Legacy)12+IENone
Firefox for Android25+iOS Safari6+Chrome for Android18+Android WebView37+Samsung Internet1.0+Opera Mobile14+createAnalyser()
-
AnalyserNode
の ファクトリーメソッド です。パラメーターなし。戻り値:AnalyserNode
-
BaseAudioContext/createBiquadFilter
In all current engines.
Firefox25+Safari6+Chrome14+
Opera15+Edge79+
Edge (Legacy)12+IENone
Firefox for Android25+iOS Safari6+Chrome for Android18+Android WebView37+Samsung Internet1.0+Opera Mobile14+createBiquadFilter()
-
いくつかの一般的なフィルタータイプに設定可能な 2 次フィルターを表す
BiquadFilterNode
の ファクトリーメソッド です。パラメーターなし。戻り値:BiquadFilterNode
-
In all current engines.
Firefox25+Safari6+Chrome14+
Opera15+Edge79+
Edge (Legacy)12+IENone
Firefox for Android25+iOS Safari6+Chrome for Android18+Android WebView37+Samsung Internet1.0+Opera Mobile14+createBuffer(numberOfChannels, length, sampleRate)
-
与えられたサイズの AudioBuffer を作成します。バッファ内のデータは 0 ( 無音 ) で初期化されます。もし、引数のどれかが負、0 または範囲外の場合、
NotSupportedError
例外を発生します ( MUST )。BaseAudioContext.createBuffer() メソッドの引数。 パラメーター 型 Null可 省略可 説明 numberOfChannels
unsigned long ✘ ✘ バッファが持つチャンネル数を指定します。実装は少なくとも 32 チャンネルをサポートしなくてはなりません ( MUST )。 length
unsigned long ✘ ✘ バッファのサイズをサンプルフレーム数で指定します。これは少なくとも 1 でなくてはなりません ( MUST )。 sampleRate
float ✘ ✘ バッファ内の リニア PCM オーディオデータのサンプルレートを秒あたりのサンプルフレーム数で表します。実装は少なくとも 8000 から 96000 の範囲をサポートしなくてはなりません ( MUST )。 戻り値:AudioBuffer
-
BaseAudioContext/createBufferSource
In all current engines.
Firefox25+Safari6+Chrome14+
Opera15+Edge79+
Edge (Legacy)12+IENone
Firefox for Android25+iOS Safari6+Chrome for Android18+Android WebView37+Samsung Internet1.0+Opera Mobile14+createBufferSource()
-
AudioBufferSourceNode
の ファクトリーメソッド です。パラメーターなし。 -
BaseAudioContext/createChannelMerger
In all current engines.
Firefox25+Safari6+Chrome14+
Opera15+Edge79+
Edge (Legacy)12+IENone
Firefox for Android25+iOS Safari6+Chrome for Android18+Android WebView37+Samsung Internet1.0+Opera Mobile14+createChannelMerger(numberOfInputs)
-
チャンネルマージャーを表す
ChannelMergerNode
の ファクトリーメソッド です。numberOfInputs
が 1 より小さいかサポートされる数より大きい場合はIndexSizeError
例外を発生します ( MUST )。BaseAudioContext.createChannelMerger(numberOfInputs) メソッドの引数。 パラメーター 型 Null可 省略可 説明 numberOfInputs
unsigned long ✘ ✔ 入力の数を指定します。値は 32 までサポートされなくてはなりません ( MUST )。もし指定されない場合は 6
となります。戻り値:ChannelMergerNode
-
BaseAudioContext/createChannelSplitter
In all current engines.
Firefox25+Safari6+Chrome14+
Opera15+Edge79+
Edge (Legacy)12+IENone
Firefox for Android25+iOS Safari6+Chrome for Android18+Android WebView37+Samsung Internet1.0+Opera Mobile14+createChannelSplitter(numberOfOutputs)
-
チャンネルスプリッターを表す
ChannelSplitterNode
の ファクトリーメソッド です。numberOfOutputs
が 1 より小さいかサポートされる数より大きい場合は、IndexSizeError
例外を発生します ( MUST )。BaseAudioContext.createChannelSplitter(numberOfOutputs) メソッドの引数 パラメーター 型 Null可 省略可 説明 numberOfOutputs
unsigned long ✘ ✔ 出力の数を指定します。値は 32 までサポートされなくてはなりません ( MUST )。もし指定されない場合は 6
となります。戻り値:ChannelSplitterNode
-
BaseAudioContext/createConstantSource
Firefox52+SafariNoneChrome56+
Opera43+Edge79+
Edge (Legacy)NoneIENone
Firefox for Android52+iOS SafariNoneChrome for Android56+Android WebView56+Samsung Internet6.0+Opera Mobile43+createConstantSource()
-
ConstantSourceNode
の ファクトリーメソッド です。パラメーターなし。戻り値:ConstantSourceNode
-
BaseAudioContext/createConvolver
In all current engines.
Firefox25+Safari6+Chrome14+
Opera15+Edge79+
Edge (Legacy)12+IENone
Firefox for Android25+iOS Safari6+Chrome for Android18+Android WebView37+Samsung Internet1.0+Opera Mobile14+createConvolver()
-
ConvolverNode
の ファクトリーメソッド です。パラメーターなし。戻り値:ConvolverNode
-
In all current engines.
Firefox25+Safari6+Chrome14+
Opera15+Edge79+
Edge (Legacy)12+IENone
Firefox for Android25+iOS Safari6+Chrome for Android18+Android WebView37+Samsung Internet1.0+Opera Mobile14+createDelay(maxDelayTime)
-
DelayNode
の ファクトリーメソッド です。初期化時のデフォルト遅延時間は 0 秒です。BaseAudioContext.createDelay(maxDelayTime) メソッドの引数 パラメーター 型 Null可 省略可 説明 maxDelayTime
double ✘ ✔ 遅延機能の遅延時間の最大値を秒で指定します。指定する場合は、その値は 0 よりも大きく 3 分よりも小さくなければなりません ( MUST )。そうでない場合 NotSupportedError
例外を発生します ( MUST )。 指定しない場合は1
となります。戻り値:DelayNode
-
BaseAudioContext/createDynamicsCompressor
In all current engines.
Firefox25+Safari6+Chrome14+
Opera15+Edge79+
Edge (Legacy)12+IENone
Firefox for Android25+iOS Safari6+Chrome for Android18+Android WebView37+Samsung Internet1.0+Opera Mobile14+createDynamicsCompressor()
-
DynamicsCompressorNode
の ファクトリーメソッド です。パラメーターなし。 -
In all current engines.
Firefox25+Safari6+Chrome14+
Opera15+Edge79+
Edge (Legacy)12+IENone
Firefox for Android25+iOS Safari6+Chrome for Android18+Android WebView37+Samsung Internet1.0+Opera Mobile14+createGain()
-
GainNode
の ファクトリーメソッド です。パラメーターなし。戻り値:GainNode
-
BaseAudioContext/createIIRFilter
Firefox50+SafariNoneChrome49+
OperaYesEdge79+
Edge (Legacy)14+IENone
Firefox for Android50+iOS SafariNoneChrome for Android49+Android WebView49+Samsung Internet5.0+Opera MobileYescreateIIRFilter(feedforward, feedback)
-
BaseAudioContext.createIIRFilter() メソッドの引数 パラメーター 型 Null可 省略可 説明 feedforward
sequence<double> ✘ ✘ IIR フィルターの伝達関数のフィードフォワード ( 分子 ) の係数の配列です。この配列の最大の長さは 20 です。もしすべての値が 0 の場合、 InvalidStateError
例外を発生します ( MUST )。 配列の長さが 0 または 20 より大きい場合は NotSupportedError 例外を発生します ( MUST )。feedback
sequence<double> ✘ ✘ IIR フィルターの伝達関数のフィードバック ( 分母 ) の係数の配列です。この配列の最大の長さは20です。もし配列の最初の要素が 0 の場合、 InvalidStateError
例外を発生します ( MUST )。 もし配列の長さが 0 または 20 より大きい場合はNotSupportedError
例外を発生します ( MUST )。戻り値:IIRFilterNode
-
BaseAudioContext/createOscillator
In all current engines.
Firefox25+Safari6+Chrome20+
Opera15+Edge79+
Edge (Legacy)12+IENone
Firefox for Android25+iOS Safari6+Chrome for Android25+Android WebView37+Samsung Internet1.5+Opera Mobile14+createOscillator()
-
OscillatorNode
の ファクトリーメソッド です。パラメーターなし。戻り値:OscillatorNode
-
In all current engines.
Firefox25+Safari6+Chrome14+
Opera15+Edge79+
Edge (Legacy)12+IENone
Firefox for Android25+iOS Safari6+Chrome for Android18+Android WebView37+Samsung Internet1.0+Opera Mobile14+createPanner()
-
PannerNode
の ファクトリーメソッド です。パラメーターなし。戻り値:PannerNode
-
BaseAudioContext/createPeriodicWave
In all current engines.
Firefox25+Safari8+Chrome59+
Opera17+Edge79+
Edge (Legacy)12+IENone
Firefox for Android25+iOS Safari8+Chrome for Android59+Android WebView59+Samsung Internet7.0+Opera Mobile18+createPeriodicWave(real, imag, constraints)
-
PeriodicWave
を作成する ファクトリーメソッド です。このメソッドを呼び出したとき、以下の手順が実行されます:-
もし
real
とimag
が同じ長さでない場合、IndexSizeError
が発生します ( MUST )。 -
o を
PeriodicWaveOptions
型の新しいオブジェクトとします。 -
このファクトリーメソッドに各々渡された
real
およびimag
パラメーターを、o の同じ名前の属性として設定します。 -
o の
disableNormalization
属性を、ファクトリーメソッドに渡されたconstraints
属性のdisableNormalization
の値に設定します。 -
このファクトリーメソッドが呼ばれた
BaseAudioContext
を最初の引数とし、o を渡して新しいPeriodicWave
p を作成します。 -
p を返します。
BaseAudioContext.createPeriodicWave() メソッドの引数 パラメーター 型 Null可 省略可 説明 real
sequence<float> ✘ ✘ コサインパラメーターの数値列です。詳細の説明についてはコンストラクタの引数 real
を参照してください。imag
sequence<float> ✘ ✘ サインパラメーターの数値列です。詳細の説明についてはコンストラクタの引数 imag
を参照してください。constraints
PeriodicWaveConstraints ✘ ✔ 指定されていない場合は、波形は正規化されます。そうでない場合、波形は constraints
に与えられた値に従って正規化されます。戻り値:PeriodicWave
-
createScriptProcessor(bufferSize, numberOfInputChannels, numberOfOutputChannels)
-
ScriptProcessorNode
の ファクトリーメソッド です。このメソッドは廃止予定 ( DEPRECATED ) で、AudioWorkletNode
で置き換えられます。 スクリプトによるオーディオデータ直接処理のためのScriptProcessorNode
を作成します。bufferSize
またはnumberOfInputChannels
またはnumberOfOutputChannels
が範囲外の場合、IndexSizeError
例外を発生します ( MUST )。numberOfInputChannels
とnumberOfOutputChannels
の両方を 0 にはできません。この場合、IndexSizeError
例外を発生します ( MUST )。BaseAudioContext.createScriptProcessor(bufferSize, numberOfInputChannels, numberOfOutputChannels) メソッドの引数 パラメーター 型 Null可 省略可 説明 bufferSize
unsigned long ✘ ✔ bufferSize
パラメーターはサンプルフレーム数でバッファのサイズを指定します。もしそれが渡されない場合、または値が 0 である場合、実装はノードのライフタイムを通して一定な、動作環境に最適な2の累乗のバッファサイズを選択します。それ以外の場合は明示的にバッファサイズを指定します。それは次の値のどれかでなければなりません: 256、512、1024、2048、4096、8192、16384 ( MUST )。この値はonaudioprocess
イベントが発生する頻度とそれぞれの呼び出しでどれだけのサンプルフレームを処理する必要があるかを制御します。bufferSize
が小さい値ならば レイテンシー は低く ( 良く ) なります。オーディオが途切れ、グリッジ が発生する事を避けるには大きな値が必要となります。レイテンシー とオーディオ品質の間のバランスを取るためには、プログラマーはこのバッファサイズを指定せず、実装に最適なバッファサイズを選択させる事が推奨されます。もしこのパラメーターの値が上に示した許された 2 の累乗の値でない場合、IndexSizeError
例外を発生します ( MUST )。numberOfInputChannels
unsigned long ✘ ✔ このパラメーターはこのノードの入力チャンネル数を指定します。デフォルトの値は 2 です。32 チャンネルまでの値がサポートされなくてはなりません。チャンネル数がサポート外の場合、 NotSupportedError
例外を発生します。numberOfOutputChannels
unsigned long ✘ ✔ このパラメーターはこのノードの出力チャンネル数を指定します。デフォルトの値は 2 です。32 チャンネルまでの値がサポートされなくてはなりません。チャンネル数がサポート外の場合、 NotSupportedError
例外を発生します。戻り値:ScriptProcessorNode
-
BaseAudioContext/createStereoPanner
Firefox37+SafariNoneChrome42+
OperaNoneEdge79+
Edge (Legacy)12+IENone
Firefox for Android37+iOS SafariNoneChrome for AndroidYesAndroid WebViewYesSamsung InternetYesOpera MobileNonecreateStereoPanner()
-
StereoPannerNode
の ファクトリーメソッド です。パラメーターなし。戻り値:StereoPannerNode
-
BaseAudioContext/createWaveShaper
In all current engines.
Firefox25+Safari6+Chrome14+
Opera15+Edge79+
Edge (Legacy)12+IENone
Firefox for Android25+iOS Safari6+Chrome for Android18+Android WebView37+Samsung Internet1.0+Opera Mobile14+createWaveShaper()
-
非線形な歪み効果を表す
WaveShaperNode
の ファクトリーメソッド です。パラメーターなし。戻り値:WaveShaperNode
-
BaseAudioContext/decodeAudioData
In all current engines.
Firefox25+Safari6+Chrome14+
Opera15+Edge79+
Edge (Legacy)12+IENone
Firefox for Android25+iOS Safari6+Chrome for Android18+Android WebView37+Samsung Internet1.0+Opera Mobile14+decodeAudioData(audioData, successCallback, errorCallback)
-
ArrayBuffer
内にあるオーディオファイルのデータを非同期にデコードします。ArrayBuffer
は、例えばXMLHttpRequest
でresponseType
に"arraybuffer"
を指定した場合のresponse
属性としてロードされます。オーディオファイルデータはaudio
要素でサポートされるどのフォーマットでも構いません。decodeAudioData()
に渡されるバッファは [mimesniff] で説明される手順で判定されるコンテントタイプを持ちます。この関数の基本的なインターフェースの手段は戻り値の promise ではありますが、歴史的な理由からコールバックのパラメーターも提供されています。
decodeAudioData
が呼ばれたとき、制御スレッド上では次の手順を実行します ( MUST ):-
this に 対応するグローバルオブジェクト に 関連付けられたドキュメント が 完全にアクティブ でない場合は、 "
InvalidStateError
"DOMException
で promise をリジェクト して返します。 -
promise を新しい Promise とします。
-
もし
audioData
に対する、IsDetachedBuffer
([ECMASCRIPT] で説明されています) がfalse
の場合、次の手順を実行します:-
promise を
[[pending promises]]
に追加します。 -
audioData
ArrayBuffer
を Detach します。この操作は [ECMASCRIPT] で説明されています。もしこの操作に失敗した場合はステップ 3 にジャンプします。 -
別のスレッドで実行されるデコード処理をキューにいれます。
-
-
そうでなければ、次の手順を実行します:
-
error を
DataCloneError
とします。 -
promise を error でリジェクトし、
[[pending promises]]
から削除します。 -
errorCallback
を error で呼び出す メディア要素タスクをキューに入れます 。
-
-
promise を返します。
制御スレッド でも レンダリングスレッド でもない、デコーディングスレッド
と呼ばれる別のスレッドで実行されるデコード処理がキューに入れられるとき、次の手順が発生します ( MUST )。注:複数回の
decodeAudioData
の呼び出しを処理するため、複数のデコーディングスレッド
が並列して走る事もあります。-
can decode を初期状態が true のブーリアンフラグとします。
-
MIME Sniffing §6.2 Matching an audio or video type pattern を用いて、
audioData
の MIME タイプの決定を試みます。もしオーディオまたはビデオのパターンマッチングアルゴリズムがundefined
を返した場合 can decode を false に設定します。 -
もし can decode が true の場合、エンコードされている
audioData
を リニア PCM にデコードを試みます。もし失敗した場合は can decode を false に設定します。 -
もし can decode が
false
の場合、 次の手順を実行するための メディア要素タスクをキューに入れます :-
error を
EncodingError
という名前のDOMException
とします。-
promise を error でリジェクトし、
[[pending promises]]
から削除します。
-
-
もし
errorCallback
が存在している場合はerrorCallback
を error で呼び出します。
-
-
そうでなければ:
-
デコードされたリニア PCM の結果を得て、
BaseAudioContext
のサンプルレートがaudioData
のサンプルレートと異なっていたらリサンプルを行います。 -
次の手順を実行するための メディア要素タスクをキューに入れます:
-
buffer を最終的な結果 ( 必要ならサンプルレート変換を行った後 ) を保持した
AudioBuffer
とします。 -
promise を buffer を持ってリゾルブします。
-
もし
successCallback
が存在していればsuccessCallback
を buffer を持って呼び出します。
-
-
BaseAudioContext.decodeAudioData() メソッドの引数 パラメーター 型 Null可 省略可 説明 audioData
ArrayBuffer ✘ ✘ 圧縮されたオーディオデータを含む ArrayBuffer です。 successCallback
DecodeSuccessCallback? ✔ ✔ デコードが完了したときに呼び出されるコールバック関数です。コールバック関数の引数は 1 つでデコードされた PCM オーディオデータをあらわす AudioBuffer になります。 errorCallback
DecodeErrorCallback? ✔ ✔ オーディオファイルをデコード中にエラーが起こった場合に呼び出されるコールバック関数です。 戻り値:Promise
<AudioBuffer
> -
1.1.3. コールバック DecodeSuccessCallback()
パラメーター
decodedData
,AudioBuffer 型
-
デコードしたオーディオデータを保持する AudioBuffer。
1.1.4. コールバック DecodeErrorCallback()
パラメーター
error
,DOMException 型
-
デコード中に発生したエラー。
1.1.5. ライフタイム
AudioContext
は一度作成された後、これ以上再生する音がなくなるまで、あるいはページを移動するまで再生を続けます。
1.1.6. 内部検査やシリアライゼーションの基本機能の欠如
Web Audio API は音源のスケジューリングに fire-and-forget アプローチを取っています。つまり、音源ノード は、 AudioContext
のライフタイムの間のひとつひとつの音に対応して作成され、明示的にグラフからの削除は行いません。これはシリアライゼーション API とは互換性がなく、そのためシリアライズ可能な固定的なノードのセットもありません。
さらに、内部検査のための API を持つためにはスクリプトの中身のガベージコレクションの監視が必要になります。
1.1.7. BaseAudioContext
サブクラスに関連付けられるシステムリソース
サブクラス、 AudioContext
と OfflineAudioContext
はコストの高いオブジェクトと考えるべきです。これらのオブジェクトの作成には、高プライオリティのスレッドまたは低レイテンシーのシステムオーディオを含み、どちらも消費電力への影響があります。通常は、1 つのドキュメント内に 1 つ以上の AudioContext
を作成する事は不必要です。
BaseAudioContext
のサブクラスの作成または再開は、そのコンテキストが システムリソースを取得 する事を含みます。このためには AudioContext
としてはシステムオーディオのストリームを作成する事も必要です。これらの動作はコンテキストが関連するオーディオグラフから出力の生成を開始する際に処理を戻します。
なお、ユーザーエージェントは実装で定められた最大数の AudioContext
を持つ事ができ、それ以上の新しい AudioContext
の作成は失敗して、 NotSupportedError
例外を発生します。
プログラマーは suspend
および close
を使う事で、スレッド、プロセスおよびオーディオストリームを含む システムリソースの解放 を行う事ができます。BaseAudioContext
をサスペンドする事で、実装は一部のリソースを解放して後で resume
を呼び出したときに再開できるようにします。 AudioContext
のクローズによって、実装はすべてのリソースを解放し、再度使用したり再開したりはできなくなります。
注 : これは例えば、定期的なコールバックの呼び出しを待つ事やハードウェアが処理可能になるのを待つ事も含みます。
1.2. AudioContext
インターフェース
Opera22+Edge79+
Edge (Legacy)12+IENone
Firefox for Android25+iOS SafariNoneChrome for Android35+Android WebView37+Samsung Internet3.0+Opera Mobile22+
このインターフェースは、その AudioDestinationNode
がデバイスへのリアルタイム出力によって直接ユーザーに信号が届くオーディオグラフを表します。多くの場合、1 つのドキュメントにつき 1 つの AudioContext
が使用されます。
enum {
AudioContextLatencyCategory "balanced" ,"interactive" ,"playback" };
列挙値の説明 | |
---|---|
"balanced "
| オーディオ出力のレイテンシーと安定性/消費電力のバランスを取ります。 |
"interactive "
| オーディオ出力のレイテンシーをグリッジが発生しない最小値にする。これがデフォルトになります。 |
"playback "
| オーディオ出力のレイテンシーよりも再生の途切れを起こさない事を優先します。消費電力は最も低くなります。 |
[Exposed =Window ]interface :
AudioContext BaseAudioContext {constructor (optional AudioContextOptions contextOptions = {});readonly attribute double baseLatency ;readonly attribute double outputLatency ;AudioTimestamp getOutputTimestamp ();Promise <undefined >resume ();Promise <undefined >suspend ();Promise <undefined >close ();MediaElementAudioSourceNode createMediaElementSource (HTMLMediaElement );
mediaElement MediaStreamAudioSourceNode createMediaStreamSource (MediaStream );
mediaStream MediaStreamTrackAudioSourceNode createMediaStreamTrackSource (MediaStreamTrack );
mediaStreamTrack MediaStreamAudioDestinationNode createMediaStreamDestination (); };
ユーザーエージェントがコンテキストの状態を "suspended
" から "running
" に移行できる場合、 AudioContext
が スタート可能 であると言います。 ユーザーエージェントは、 AudioContext
の 関連するグローバルオブジェクト が スティッキーアクティベーション を持っている場合にのみ許可するために、この初期遷移を遅延させることができます。
AudioContext
は内部に次のスロットを持っています :
[[suspended by user]]
-
コンテキストがユーザーのコードによって中断されているかどうかを表すブーリアンフラグです。 初期値は
false
です。
1.2.1. コンストラクター
-
Firefox25+SafariNoneChrome35+
Opera22+Edge79+
Edge (Legacy)12+IENone
Firefox for Android25+iOS SafariNoneChrome for Android35+Android WebView37+Samsung Internet3.0+Opera Mobile22+AudioContext(contextOptions)
-
現在の設定オブジェクト の 対応するドキュメント が 完全にアクティブ でない場合は
InvalidStateError
を発生して、次の手順を中止します。AudioContext
を作成する際は、以下の手順を実行します:-
AudioContext
上の[[制御スレッドの状態]]
をsuspended
に設定します。 -
AudioContext
上の[[レンダリングスレッドの状態]]
をsuspended
に設定します。 -
[[pending resume promises]]
をこのAudioContext
上のスロットとし、初期状態を空の promise のリストとします。 -
もし
contextOptions
が与えられていれば、そのオプションを適用します:-
この
AudioContext
の内部レイテンシーをlatencyHint
の項に書かれているように、contextOptions.
に従って設定します。latencyHint
-
もし
contextOptions.
が指定されていれば、このsampleRate
AudioContext
のsampleRate
をその値に設定します。 そうでなければ、デフォルト出力デバイスのサンプルレートを使用します。 もし選択されたサンプルレートが出力デバイスのサンプルレートと異なる場合、このAudioContext
はオーディオ出力を出力デバイスのサンプルレートに合うようにリサンプリングしなくてはなりません ( MUST )。注 : もしリサンプリングが必要とされる場合、AudioContext のレイテンシーに大きな影響があるかも知れません。
-
-
この
AudioContext
オブジェクトを返します。
処理を開始するための 制御メッセージ を送るには次の手順を実行します:-
システムリソースの取得 を試みます。もし失敗した場合は以降の手順を中止します。
-
AudioContext
の[[レンダリングスレッドの状態]]
をrunning
に設定します。 -
以下の手順を実行するための メディア要素タスクをキューに入れます :
-
AudioContext
のstate
属性を "running
" に設定します。 -
AudioContext
にstatechange
という名前の イベントを発行 するための メディア要素タスクをキューに入れます。
-
注 : 残念ながら、
AudioContext
の作成の失敗についてプログラム上の通知をすることはできません。ユーザーエージェントは、デベロッパーツールコンソールのようなログメカニズムにアクセスできる場合、これを知らせるメッセージをログに記録することをお勧めします。AudioContext.constructor(contextOptions) メソッドの引数 パラメーター 型 Null可 省略可 説明 contextOptions
AudioContextOptions ✘ ✔ AudioContext
をどのように作成するかをユーザーが指定するオプション。 -
1.2.2. 属性
-
Firefox70+SafariNoneChrome58+
Opera45+Edge79+
Edge (Legacy)NoneIENone
Firefox for AndroidNoneiOS SafariNoneChrome for Android58+Android WebView58+Samsung Internet7.0+Opera Mobile43+baseLatency
, double 型, readonly -
これは
AudioContext
がAudioDestinationNode
からオーディオサブシステムにオーディオを渡す処理で発生するレイテンシーの秒数を表します。これにはAudioDestinationNode
の出力とオーディオハードウェアの間で発生するかも知れないその他の処理による追加のレイテンシーは含まれず、特にオーディオグラフ自体に発生するレイテンシーは含まれません。例えばもし、オーディオコンテキストが 44.1 kHz で動作しており、
AudioDestinationNode
の実装が内部でダブルバッファリングによる レンダリング量子 の出力処理を行う場合、処理のレイテンシーは、約 \((2\cdot128)/44100 = 5.805 \mathrm{ ms}\) となります。 -
In only one current engine.
Firefox70+SafariNoneChromeNone
OperaNoneEdgeNone
Edge (Legacy)NoneIENone
Firefox for AndroidNoneiOS SafariNoneChrome for AndroidNoneAndroid WebViewNoneSamsung InternetNoneOpera MobileNoneoutputLatency
, double 型, readonly -
オーディオ出力処理のレイテンシーの秒数の見積もり。つまり、UA がホストシステムにバッファを再生を要求した時間から、バッファ内の最初のサンプルが実際にオーディオ出力デバイスで処理される時間までの間隔。この後者の時間は、スピーカーやヘッドフォンのような音の信号を発生するデバイスがサンプルの音を発生する時間を指します。
outputLatency
属性の値はプラットフォームと接続されているオーディオ出力デバイスに依存します。outputLatency
属性の値は接続されているオーディオ出力デバイスが同じである限り、コンテキストのライフタイムを通じて変化する事はありません。もしオーディオ出力デバイスが変化したならば、outputLatency
属性の値もそれに従ってアップデートされます。
1.2.3. メソッド
-
In all current engines.
Firefox40+Safari9+Chrome42+
OperaYesEdge79+
Edge (Legacy)14+IENone
Firefox for Android40+iOS Safari9+Chrome for Android43+Android WebView43+Samsung Internet4.0+Opera MobileYesclose()
-
AudioContext
をクローズし、使用中の システムリソースを解放 します。これは、AudioContext
が作成したすべてのオブジェクトを自動的に開放はしませんが、AudioContext
のcurrentTime
の進行を止め、オーディオデータの処理を停止します。close が呼ばれたとき、以下の手順が実行されます:-
this に 対応するグローバルオブジェクト に 関連付けられたドキュメント が 完全にアクティブ でない場合は、 "
InvalidStateError
"DOMException
で promise をリジェクト して返します。 -
promise を新しい Promise とします。
-
もし
AudioContext
の[[制御スレッドの状態]]
フラグがclosed
であった場合、promise をInvalidStateError
でリジェクトし、これらの手順を中断して promise を返します。 -
AudioContext
の[[制御スレッドの状態]]
フラグをclosed
に設定します。 -
AudioContext
をクローズするための 制御メッセージをキューに入れます。 -
promise を返します。
AudioContext
をクローズするための 制御メッセージ を実行する事は、 レンダリングスレッド で、以下の手順を実行する事を意味します:-
システムリソースの解放 を試みます。
-
[[レンダリングスレッドの状態]]
をsuspended
に設定します。これによりレンダリングは停止します。 -
もしこの 制御メッセージ がドキュメントがアンロードされる反応の途中で実行されているなら、このアルゴリズムを中止します。
この場合、制御スレッドへの通知は必要ありません。 -
以下の手順を実行する メディア要素タスクをキューに入れます :
-
promise をリゾルブします。
-
もし
AudioContext
のstate
属性が既に "closed
" でない場合:-
AudioContext
のstate
属性を "closed
" に設定します。 -
AudioContext
でstatechange
という名前の イベントを発行 するための メディア要素タスクをキューに入れます。
-
-
AudioContext
がクローズされた場合、AudioContext
に接続されているすべてのMediaStream
とHTMLMediaElement
はその出力を無視されます。 つまり、これらはもうスピーカーなどの出力デバイスに出力されなくなります。より柔軟な挙動のためには、HTMLMediaElement.captureStream()
の使用を検討してください。注 :
AudioContext
がクローズされるとき、実装はサスペンドの場合よりも積極的に多くのリソースを解放する事ができます。パラメーターなし。 -
-
AudioContext/createMediaElementSource
In all current engines.
Firefox25+Safari6+Chrome14+
Opera15+Edge79+
Edge (Legacy)12+IENone
Firefox for Android25+iOS Safari6+Chrome for Android18+Android WebView37+Samsung Internet1.0+Opera Mobile14+createMediaElementSource(mediaElement)
-
指定された
HTMLMediaElement
からMediaElementAudioSourceNode
を作成します。 このメソッドの呼び出しにより、HTMLMediaElement
からのオーディオの再生はAudioContext
の処理グラフに再ルーティングされるようになります。AudioContext.createMediaElementSource() メソッドの引数 パラメーター 型 Null可 省略可 説明 mediaElement
HTMLMediaElement ✘ ✘ 再ルーティングされるメディア要素です。 -
AudioContext/createMediaStreamDestination
In all current engines.
Firefox25+Safari6+Chrome14+
Opera15+Edge79+
Edge (Legacy)NoneIENone
Firefox for Android25+iOS SafariYesChrome for Android18+Android WebView37+Samsung Internet1.0+Opera Mobile14+createMediaStreamDestination()
-
MediaStreamAudioDestinationNode
を作成します。パラメーターなし。 -
AudioContext/createMediaStreamSource
In all current engines.
Firefox25+Safari6+Chrome14+
Opera15+Edge79+
Edge (Legacy)12+IENone
Firefox for Android25+iOS SafariYesChrome for Android18+Android WebView37+Samsung Internet1.0+Opera Mobile14+createMediaStreamSource(mediaStream)
-
MediaStreamAudioSourceNode
を作成します。AudioContext.createMediaStreamSource() メソッドの引数 パラメーター 型 Null可 省略可 説明 mediaStream
MediaStream ✘ ✘ 音源となるメディアストリームです。 -
AudioContext/createMediaStreamTrackSource
In only one current engine.
Firefox68+SafariNoneChromeNone
OperaNoneEdgeNone
Edge (Legacy)NoneIENone
Firefox for Android68+iOS SafariNoneChrome for AndroidNoneAndroid WebViewNoneSamsung InternetNoneOpera MobileNonecreateMediaStreamTrackSource(mediaStreamTrack)
-
MediaStreamTrackAudioSourceNode
を作成します。AudioContext.createMediaStreamTrackSource() メソッドの引数 パラメーター 型 Null可 省略可 説明 mediaStreamTrack
MediaStreamTrack ✘ ✘ 音源となる MediaStreamTrack
です。 そのkind
属性は"audio"
でなくてはならず、そうでない場合は、InvalidStateError
例外を発生します ( MUST )。 -
AudioContext/getOutputTimestamp
Firefox70+SafariNoneChrome57+
Opera44+Edge79+
Edge (Legacy)NoneIENone
Firefox for AndroidNoneiOS SafariNoneChrome for Android57+Android WebView57+Samsung Internet7.0+Opera Mobile43+getOutputTimestamp()
-
コンテキストのオーディオストリームについて、2 つの関連する位置情報を含む新しい
AudioTimestamp
インスタンスを返します:contextTime
メンバーには、オーディオ出力デバイスによって現在レンダリングされているサンプルフレームの時間 ( つまり出力されているオーディオストリームの位置 ) が含まれます。これにはコンテキストのcurrentTime
と同じ単位と起点を使用します。 そしてperformanceTime
メンバーには、contextTime
に格納された値に対応するサンプルフレームがperformance.now()
( [hr-time-3] で説明されています ) と同じ単位および起点で、オーディオ出力デバイスによってレンダリングされる瞬間を推定する時間が含まれます 。コンテキストのレンダリンググラフがまだオーディオブロックを処理していないときに
getOutputTimestamp
を呼び出すと、両方のメンバーが 0 であるAudioTimestamp
インスタンスを返します。コンテキストのレンダリンググラフがオーディオブロックの処理を開始すると、その
currentTime
属性の値は常にgetOutputTimestamp
メソッドの呼び出しで取得されるcontextTime
値より大きくなります。getOutputTimestamp
メソッドから返された値は、コンテキストの時刻のわずかに後になるパフォーマンスの時刻の見積もりを得るのに使用できます:function outputPerformanceTime( contextTime) { const timestamp= context. getOutputTimestamp(); const elapsedTime= contextTime- timestamp. contextTime; return timestamp. performanceTime+ elapsedTime* 1000 ; } 上の例での見積もりの精度は、引数の値が現在の出力オーディオストリームの位置にどれほど近いかによって決まります: つまり与えられた
contextTime
がtimestamp.contextTime
に近いほど、得られた推定の精度は良くなります。注 : コンテキストの
currentTime
とgetOutputTimestamp
メソッドの呼び出しから得られたcontextTime
の値の差は、currentTime
が不均一な時間間隔で増加する可能性があるため、信頼できる出力レイテンシーの見積もりとみなす事はできず、代わりにoutputLatency
属性を使用する必要があります。パラメーターなし。戻り値:AudioTimestamp
-
In all current engines.
Firefox40+Safari9+Chrome41+
OperaYesEdge79+
Edge (Legacy)14+IENone
Firefox for AndroidYesiOS Safari9+Chrome for Android41+Android WebView41+Samsung Internet4.0+Opera MobileYesresume()
-
AudioContext
のcurrentTime
の進行が停止している場合、再開させます。resume が呼ばれた時、以下の手順が実行されます :-
this に 対応するグローバルオブジェクト に 関連付けられたドキュメント が 完全にアクティブ でない場合は、 "
InvalidStateError
"DOMException
で promise をリジェクト します。 -
promise を新しい Promise とします。
-
もし
AudioContext
の[[制御スレッドの状態]]
がclosed
であれば promise はInvalidStateError
でリジェクトされ、これらの手順は中止して promise を返します。 -
[[suspended by user]]
をfalse
に設定します。 -
もしこのコンテキストが スタート可能 でない場合 promise を
[[pending promises]]
と[[pending resume promises]]
に加え、これらの手順を中止して promise を返します。 -
AudioContext
の[[制御スレッドの状態]]
をrunning
に設定します。 -
AudioContext
を再開するための 制御メッセージをキューに入れます。 -
promise を返します。
AudioContext
を再開するための 制御メッセージ を実行するとは、次の手順を レンダリングスレッド で実行する事を意味します:-
システムリソースの取得 を試みます。
-
AudioContext
の[[レンダリングスレッドの状態]]
をrunning
に設定します。 -
オーディオグラフのレンダリング を開始します。
-
失敗した場合は次の手順を実行するための メディア要素タスクをキューに入れます :
-
[[pending resume promises]]
から全ての promise を順番にリジェクトして[[pending resume promises]]
を空にします。 -
さらに、これらの promise を
[[pending promises]]
から削除します。
-
-
以下の手順を実行するための メディア要素タスクをキューに入れます :
-
[[pending resume promises]]
にある全ての promise を順番にリゾルブします。 -
[[pending resume promises]]
を空にします。さらに、これらの promise を[[pending promises]]
から削除します。 -
promise をリゾルブします。
-
もし
AudioContext
のstate
属性が既に "running
" でない場合 :-
AudioContext
のstate
属性を "running
" に設定します。 -
AudioContext
でstatechange
という名前の イベントを発行 するための メディア要素タスクをキューに入れます。
-
-
パラメーターなし。 -
-
In all current engines.
Firefox40+Safari9+Chrome43+
OperaYesEdge79+
Edge (Legacy)14+IENone
Firefox for Android40+iOS Safari9+Chrome for Android43+Android WebView43+Samsung Internet4.0+Opera MobileYessuspend()
-
AudioContext
のcurrentTime
の進行を中断し、デスティネーションで再生するために既に処理を終えた現在のコンテキストの処理ブロックを再生し、その後システムがオーディオハードウェアの占有を解放できるようにします。 これは一般的に、アプリケーションがしばらくの間AudioContext
を必要とせず、一時的に AudioContext に関連付けられた システムリソースを解放 したいことがアプリケーションに分かっているときに役に立ちます。この promise は、フレームバッファが空のとき ( ハードウェアに渡されたとき )、またはコンテキストがすでにsuspended
状態のときは即座に ( 副作用なしで ) リゾルブされます。コンテキストがクローズされた場合、promise はリジェクトされます。suspend が呼び出された場合、以下の手順を実行します:-
this に 対応するグローバルオブジェクト に 関連付けられたドキュメント が 完全にアクティブ でない場合は、 "
InvalidStateError
"DOMException
で リジェクト して promise を返します。 -
promise を新しい Promise とします。
-
もし
AudioContext
の[[制御スレッドの状態]]
がclosed
であれば promise はInvalidStateError
でリジェクトされ、これらの手順は中止して promise を返します。 -
promise を
[[pending promises]]
に追加します。 -
[[suspended by user]]
をtrue
に設定します。 -
AudioContext
の[[制御スレッドの状態]]
をsuspended
に設定します。 -
AudioContext
をサスペンドするための 制御メッセージをキューに入れます。 -
promise を返します。
AudioContext
をサスペンドするための 制御メッセージ を実行する、とは レンダリングスレッド で、以下の手順を実行する事を意味します:-
システムリソースの解放 を試みます。
-
AudioContext
のレンダリングスレッドの状態
をsuspended
に設定します。 -
以下の手順を実行する メディア要素タスクをキューに入れます :
-
promise をリゾルブします。
-
もし
AudioContext
のstate
属性が既に "suspended
" でない場合:-
AudioContext
のstate
属性を "suspended
" に設定します。 -
AudioContext
でstatechange
という名前の イベントを発行 するための メディア要素タスクをキューに入れます。
-
-
AudioContext
がサスペンドされている間MediaStream
の出力は無視されます。つまり、メディアストリームのリアルタイム性によって、データは失われます。code class="idl">HTMLMediaElement も同様に、システムが再開されるまでその出力は無視されます。AudioWorkletNode
およびScriptProcessorNode
は、サスペンド中は処理ハンドラーの呼び出しが止まりますが、コンテキストがリジュームされると再開します。AnalyserNode
では、ウィンドウ関数の目的そのものにより、データは連続ストリームとみなされます。つまり、resume()
/suspend()
によってAnalyserNode
のデータストリームに無音は発生しません。特に、AudioContext
がサスペンドされているときにAnalyserNode
の関数を繰り返し呼び出した際は、同じデータが返されなければなりません ( MUST )。パラメーターなし。 -
1.2.4. AudioContextOptions
Opera?Edge79+
Edge (Legacy)NoneIENone
Firefox for Android61+iOS SafariNoneChrome for Android60+Android WebView60+Samsung Internet8.0+Opera Mobile?
AudioContextOptions
ディクショナリーは AudioContext
のユーザー指定のオプションを決めるために使用されます。
dictionary { (
AudioContextOptions AudioContextLatencyCategory or double )latencyHint = "interactive";float sampleRate ; };
1.2.4.1. ディクショナリー AudioContextOptions
メンバー
-
AudioContextOptions/latencyHint
Firefox61+SafariNoneChrome60+
Opera?Edge79+
Edge (Legacy)NoneIENone
Firefox for Android61+iOS SafariNoneChrome for Android60+Android WebView60+Samsung Internet8.0+Opera Mobile?latencyHint
,(AudioContextLatencyCategory または double)
型, デフォルト値は"interactive"
-
オーディオ出力のレイテンシーと消費電力の間のトレードオフに影響を与える、再生のタイプを指示します。
latencyHint
の値は、AudioContextLatencyCategory
から選択する事が推奨されます。ただし、レイテンシーと消費電力をより細かくバランスを取るために、レイテンシーの秒数を double 型で指定することもできます。数値を適切に解釈するのはブラウザーの裁量に委ねられています。実際に使用されるレイテンシーは、 AudioContext のbaseLatency
属性によって与えられます。 -
AudioContextOptions/sampleRate
Firefox61+SafariNoneChrome74+
OperaNoneEdge79+
Edge (Legacy)NoneIENone
Firefox for Android61+iOS SafariNoneChrome for Android74+Android WebView74+Samsung Internet11.0+Opera Mobile?sampleRate
, float 型 -
作成される
AudioContext
のsampleRate
をこの値に設定します。サポートされている値はAudioBuffer
のサンプルレートと同じです。指定されたサンプルレートがサポートされていない場合はNotSupportedError
例外を発生します ( MUST )。もし
sampleRate
が指定されていない場合、このAudioContext
の出力デバイスが推奨するサンプルレートが使用されます。
1.2.5. AudioTimestamp
dictionary {
AudioTimestamp double contextTime ;DOMHighResTimeStamp performanceTime ; };
1.2.5.1. ディクショナリー
AudioTimestamp
メンバー
contextTime
, double 型-
BaseAudioContext の
currentTime
の時間軸内の時刻を表します。 performanceTime
, DOMHighResTimeStamp 型-
Performance
インターフェースの実装における時間軸内の時刻を表します ( [hr-time-3] で説明されています )。
1.3. OfflineAudioContext
インターフェース
Opera22+Edge79+
Edge (Legacy)12+IENone
Firefox for Android25+iOS SafariNoneChrome for Android35+Android WebView4.4.3+Samsung Internet3.0+Opera Mobile22+
OfflineAudioContext
は、レンダリング/ミックスダウンのための特殊なタイプの BaseAudioContext
で、( 潜在的には ) リアルタイムよりも高速に動作します。これはオーディオハードウェアに対してレンダリングせず、可能な限り高速にレンダリングした結果を AudioBuffer
に格納して promise を返します。
[Exposed =Window ]interface :
OfflineAudioContext BaseAudioContext {constructor (OfflineAudioContextOptions contextOptions );constructor (unsigned long numberOfChannels ,unsigned long length ,float sampleRate );Promise <AudioBuffer >startRendering ();Promise <undefined >resume ();Promise <undefined >suspend (double );
suspendTime readonly attribute unsigned long length ;attribute EventHandler oncomplete ; };
1.3.1. コンストラクター
-
OfflineAudioContext/OfflineAudioContext
Firefox53+SafariNoneChrome35+
Opera22+Edge79+
Edge (Legacy)NoneIENone
Firefox for Android53+iOS SafariNoneChrome for Android35+Android WebView4.4.3+Samsung Internet3.0+Opera Mobile22+OfflineAudioContext(contextOptions)
-
現在の設定オブジェクト に 対応するドキュメント が 完全にアクティブ でない場合は、
c を新しいInvalidStateError
を発生して、これらの手順を中止します。OfflineAudioContext
オブジェクトとします。 c は次のように初期化されます:-
c の
[[制御スレッドの状態]]
を"suspended"
にします。 -
c の
[[レンダリングスレッドの状態]]
を"suspended"
にします。 -
channelCount
をcontextOptions.numberOfChannels
としたAudioDestinationNode
を作成します。
OfflineAudioContext.constructor(contextOptions) メソッドの引数 パラメーター 型 Null可 省略可 説明 contextOptions
このコンテキストを作成する際に必要な初期化パラメーター -
OfflineAudioContext(numberOfChannels, length, sampleRate)
-
OfflineAudioContext
は AudioContext.createBuffer と同じ引数で作成できます。もし引数のどれかが負、0、または範囲外の場合はNotSupportedError
例外を発生します ( MUST )。OfflineAudioContext は、次の呼び出し
new OfflineAudioContext({ numberOfChannels: numberOfChannels, length: length, sampleRate: sampleRate}) が行われたのと同じように作成されます。
OfflineAudioContext.constructor(numberOfChannels, length, sampleRate) メソッドの引数 パラメーター 型 Null可 省略可 説明 numberOfChannels
unsigned long ✘ ✘ バッファが持つチャンネルの数を指定します。サポートされているチャンネル数については、 createBuffer()
を参照してください。length
unsigned long ✘ ✘ バッファのサイズをサンプルフレーム数で指定します。 sampleRate
float ✘ ✘ バッファ内の リニア PCM オーディオデータのサンプルレートをサンプルフレーム / 秒で記述します。有効なサンプルレートについては、 createBuffer()
を参照してください。
1.3.2. 属性
-
FirefoxYesSafariNoneChrome51+
Opera38+Edge79+
Edge (Legacy)14+IENone
Firefox for AndroidYesiOS SafariNoneChrome for Android51+Android WebView51+Samsung Internet5.0+Opera Mobile41+length
, unsigned long 型, readonly -
サンプルフレーム数で表したバッファのサイズです。これは、コンストラクタの
length
パラメーターの値と同じです。 -
OfflineAudioContext/oncomplete
In all current engines.
Firefox25+Safari6+Chrome25+
Opera15+Edge79+
Edge (Legacy)12+IENone
Firefox for Android25+iOS Safari?Chrome for Android25+Android WebView37+Samsung Internet1.5+Opera Mobile14+oncomplete
, EventHandler 型 -
OfflineAudioCompletionEvent 型の EventHandler です。これは
OfflineAudioContext
で最後に発行されるイベントです。
1.3.3. メソッド
-
OfflineAudioContext/startRendering
In all current engines.
Firefox25+Safari6+Chrome25+
Opera15+Edge79+
Edge (Legacy)12+IENone
Firefox for Android25+iOS Safari?Chrome for Android25+Android WebView37+Samsung Internet1.5+Opera Mobile14+startRendering()
-
与えられた現在の接続と変化のスケジュールで、オーディオのレンダリングを開始します。
レンダリングされたオーディオデータを取得する主な方法は、promise の戻り値を経由する方法ですが、インスタンスは歴史的な理由により、
complete
という名前のイベントも発生させます。[[rendering started]]
をこのOfflineAudioContext
の内部スロットとします。 このスロットは false に初期化されます。startRendering
が呼び出されたとき、制御スレッド で次の手順を実行しなくてはなりません ( MUST ) :- this に 対応するグローバルオブジェクト に 関連付けられたドキュメント が 完全にアクティブ でない場合は、
InvalidStateError
DOMException
で promise をリジェクト して返します。 OfflineAudioContext
の[[rendering started]]
スロットが true の場合、InvalidStateError
でリジェクトした promise を返し、これらの手順を中止します。OfflineAudioContext
の[[rendering started]]
スロットを true に設定します。- promise を新しい Promise とします。
contextOptions
パラメーターでこのインスタンスのコンストラクタに渡されたnumberOfChannels
、length
、およびsampleRate
の値にそれぞれ等しいチャンネル数、長さ、およびサンプルレートを持つ、新しいAudioBuffer
を作成します。このバッファをOfflineAudioContext
の内部スロット[[rendered buffer]]
に割り当てます。- 前項の
AudioBuffer
コンストラクタ呼び出し中に例外が発生した場合、この例外を持って promise をリジェクトします。 - そうでなく、バッファが正常に作成された場合は、オフラインレンダリングを開始 します。
- promise を
[[pending promises]]
に追加します。 - promise を返します。
オフラインレンダリングを開始 するには、その際に作成された レンダリングスレッド で次の手順が実行されなくてはなりません ( MUST )。- 現在の接続と変化のスケジュールが与えられたら、
length
長のオーディオのサンプルフレームを[[rendered buffer]]
にレンダリングし始めます。 - レンダリング量子 ごとにチェックを行い、必要ならば
suspend
します。 - もしサスペンドされていたコンテキストが再開された場合、バッファへのレンダリングを継続します。
- レンダリングが完了したら、次の手順を実行する メディア要素タスクをキューに入れます:
startRendering()
によって作成された promise を[[rendered buffer]]
をもってリゾルブします。OfflineAudioCompletionEvent
のインスタンスのrenderedBuffer
プロパティに[[rendered buffer]]
を設定し、complete
という名前の イベントを発行 する メディア要素タスクをキューに入れます。
パラメーターなし。戻り値:Promise
<AudioBuffer
> - this に 対応するグローバルオブジェクト に 関連付けられたドキュメント が 完全にアクティブ でない場合は、
-
In only one current engine.
FirefoxNoneSafariNoneChrome49+
Opera36+Edge79+
Edge (Legacy)18IENone
Firefox for AndroidNoneiOS SafariNoneChrome for Android49+Android WebView49+Samsung Internet5.0+Opera Mobile36+resume()
-
OfflineAudioContext
がサスペンドされていた場合、そのcurrentTime
の進行を再開します。resume が呼び出された場合これらの手順を実行します:-
this に 対応するグローバルオブジェクト に 関連付けられたドキュメント が 完全にアクティブ でない場合は、
InvalidStateError
DOMException
で promise をリジェクト して返します。 -
promise を新しい Promise とします。
-
次の条件が真となった場合、これらの手順を中止し promise を
InvalidStateError
でリジェクトします :-
OfflineAudioContext
の[[制御スレッドの状態]]
がclosed
になった。 -
OfflineAudioContext
の[[rendering started]]
スロットが false になった。
-
-
OfflineAudioContext
の[[制御スレッドの状態]]
フラグをrunning
に設定します。 -
OfflineAudioContext
を再開させるための 制御メッセージをキューに入れます。 -
promise を返します。
OfflineAudioContext
を再開する 制御メッセージ を実行するとは、以下の手順を レンダリングスレッド で実行する事を意味します :-
OfflineAudioContext
の[[制御スレッドの状態]]
をrunning
に設定します。 -
オーディオグラフのレンダリング を開始します。
-
失敗した場合は promise をリジェクトする メディア要素タスクをキューに入れ、残りの手順を中止します :
-
以下の手順を実行する メディア要素タスクをキューに入れます :
-
promise をリゾルブします。
-
もし
OfflineAudioContext
のstate
属性が既に "running
" でない場合 :-
OfflineAudioContext
のstate
属性を "running
" に設定します。 -
OfflineAudioContext
上でstatechange
という名前の イベントを発行 するための メディア要素タスクをキューに入れます。
-
-
パラメーターなし。 -
-
In only one current engine.
FirefoxNoneSafariNoneChrome49+
Opera36+Edge79+
Edge (Legacy)18IENone
Firefox for AndroidNoneiOS SafariNoneChrome for Android49+Android WebView49+Samsung Internet5.0+Opera Mobile36+suspend(suspendTime)
-
指定された時刻にオーディオコンテキストの時間進行の停止をスケジュールし、promise を返します。これは一般的に、
OfflineAudioContext
でオーディオグラフを同期して操作する場合に有用です。サスペンドの最大の精度は レンダリング量子 のサイズであり、指定されたサスペンドの時刻は最も近い レンダリング量子 の境界に丸められることに注意してください。このため、同じ量子化されたフレーム内で複数のサスペンドをスケジュールすることはできません。また精度の高いサスペンドを確実に行うには、コンテキストが動作中でない間にスケジューリングを行う必要があります。
OfflineAudioContext.suspend() メソッドの引数 パラメーター 型 Null可 省略可 説明 suspendTime
double ✘ ✘ 指定された時刻にレンダリングのサスペンドをスケジューリングします。時刻は レンダリング量子 のサイズで量子化されて丸められます。 量子化されたフレーム番号が - 負の値、または
- 現在の時刻より小さいか同じ、または
- レンダリング全体の長さより大きいか同じ、または
- 同じ時刻に別のサスペンドがスケジュールされている
InvalidStateError
でリジェクトされます。
1.3.4. OfflineAudioContextOptions
これは OfflineAudioContext
の作成の際に使用するオプションを指定します。
dictionary {
OfflineAudioContextOptions unsigned long numberOfChannels = 1;required unsigned long length ;required float sampleRate ; };
1.3.4.1. ディクショナリー OfflineAudioContextOptions
メンバー
length
, unsigned long 型-
サンプルフレーム数で表したレンダリングされる
AudioBuffer
の長さ。 numberOfChannels
, unsigned long 型, デフォルト値は1
-
この
OfflineAudioContext
のチャンネル数。 sampleRate
, float 型-
この
OfflineAudioContext
のサンプルレート。
1.3.5. OfflineAudioCompletionEvent
インターフェース
In all current engines.
Opera15+Edge79+
Edge (Legacy)12+IENone
Firefox for Android25+iOS SafariYesChrome for Android18+Android WebView37+Samsung Internet1.0+Opera Mobile14+
OfflineAudioContext/complete_event
In all current engines.
Opera15+Edge79+
Edge (Legacy)12+IENone
Firefox for Android25+iOS Safari?Chrome for Android25+Android WebView37+Samsung Internet1.5+Opera Mobile14+
これは、歴史的な理由から OfflineAudioContext
に発行される Event
オブジェクトです。
OfflineAudioCompletionEvent/OfflineAudioCompletionEvent
In all current engines.
Opera42+Edge79+
Edge (Legacy)NoneIENone
Firefox for Android53+iOS SafariYesChrome for Android57+Android WebView57+Samsung Internet6.0+Opera Mobile42+
[Exposed =Window ]interface :
OfflineAudioCompletionEvent Event {(
constructor DOMString ,
type OfflineAudioCompletionEventInit );
eventInitDict readonly attribute AudioBuffer renderedBuffer ; };
1.3.5.1. 属性
-
OfflineAudioCompletionEvent/renderedBuffer
In all current engines.
Firefox25+Safari6+Chrome14+
Opera15+Edge79+
Edge (Legacy)12+IENone
Firefox for Android25+iOS SafariYesChrome for Android18+Android WebView37+Samsung Internet1.0+Opera Mobile14+renderedBuffer
, AudioBuffer 型, readonly -
レンダリングしたオーディオデータを保持する
AudioBuffer
です。
1.3.5.2. OfflineAudioCompletionEventInit
dictionary :
OfflineAudioCompletionEventInit EventInit {required AudioBuffer renderedBuffer ; };
1.3.5.2.1. ディクショナリー OfflineAudioCompletionEventInit
メンバー
renderedBuffer
, AudioBuffer 型-
イベントの
renderedBuffer
属性に割り当てる値。
1.4. AudioBuffer
インターフェース
Opera42+Edge79+
Edge (Legacy)NoneIENone
Firefox for Android53+iOS SafariNoneChrome for Android55+Android WebView55+Samsung Internet6.0+Opera Mobile42+
このインターフェースは、メモリー上にあるオーディオデータを表します。そのフォーマットはノンインタリーブな 32 ビットの浮動小数点の リニア PCM で、通常は \([-1,1]\) の範囲になりますが、値はこの範囲に限定はされません。通常、PCM データの長さはかなり短く ( 通常は 1 分未満 ) と想定されています。音楽サウンドトラックなどのより長いサウンドの場合、audio
要素と MediaElementAudioSourceNode
によるストリーミングを使うべきです。
AudioBuffer
は、1 つ以上の AudioContext
によって使用され、OfflineAudioContext
と AudioContext
の間で共有する事もできます。
AudioBuffer
には 4 つの内部スロットがあります:
[[number of channels]]
-
この
AudioBuffer
のオーディオチャンネルの数、符号なし long 型です。 [[length]]
-
この
AudioBuffer
の各チャンネルの長さ、符号なし long 型です。 [[sample rate]]
-
Hz で表した
AudioBuffer
のサンプルレート、float 型です。 [[internal data]]
-
オーディオのサンプルデータを保持する データブロック です。
In all current engines.
Opera15+Edge79+
Edge (Legacy)12+IENone
Firefox for Android25+iOS Safari6+Chrome for Android18+Android WebView37+Samsung Internet1.0+Opera Mobile14+
[Exposed =Window ]interface {
AudioBuffer constructor (AudioBufferOptions );
options readonly attribute float sampleRate ;readonly attribute unsigned long length ;readonly attribute double duration ;readonly attribute unsigned long numberOfChannels ;Float32Array getChannelData (unsigned long );
channel undefined copyFromChannel (Float32Array ,
destination unsigned long ,
channelNumber optional unsigned long = 0);
bufferOffset undefined copyToChannel (Float32Array ,
source unsigned long ,
channelNumber optional unsigned long = 0); };
bufferOffset
1.4.1. コンストラクター
AudioBuffer(options)
-
-
options
の値のいずれかが公称範囲外にある場合は、NotSupportedError
例外を発生し、以下の手順を中止します。 -
b を新しい
AudioBuffer
オブジェクトとします。 -
コンストラクタで渡された
AudioBufferOptions
の属性numberOfChannels
、length
、sampleRate
の値をそれぞれ内部スロット[[number of channels]]
、[[length]]
、[[sample rate]]
に割り当てます。 -
この
AudioBuffer
の内部スロット[[internal data]]
をCreateByteDataBlock
(
を呼び出した結果に設定します。[[length]]
*[[number of channels]]
)注 : これは、下層にある記憶域をゼロに初期化します。
-
b を返します。
AudioBuffer.constructor() メソッドの引数 パラメーター 型 Null可 省略可 説明 options
AudioBufferOptions ✘ ✘ AudioBufferOptions
はこのAudioBuffer
のプロパティを決定します。 -
1.4.2. 属性
-
In all current engines.
Firefox25+Safari6+Chrome14+
Opera15+Edge79+
Edge (Legacy)12+IENone
Firefox for Android25+iOS Safari6+Chrome for Android18+Android WebView37+Samsung Internet1.0+Opera Mobile14+duration
, double 型, readonly -
PCM オーディオデータの長さで、単位は秒です。
これは
[[sample rate]]
とAudioBuffer
の[[length]]
から計算され、[[length]]
を[[sample rate]]
で割る事で求められます。 -
In all current engines.
Firefox25+Safari6+Chrome14+
Opera15+Edge79+
Edge (Legacy)12+IENone
Firefox for Android25+iOS Safari6+Chrome for Android18+Android WebView37+Samsung Internet1.0+Opera Mobile14+length
, unsigned long 型, readonly -
サンプルフレーム数で表した PCM オーディオデータの長さです。これは
[[length]]
の値を返さなければなりません ( MUST )。 -
In all current engines.
Firefox25+Safari6+Chrome14+
Opera15+Edge79+
Edge (Legacy)12+IENone
Firefox for Android25+iOS Safari6+Chrome for Android18+Android WebView37+Samsung Internet1.0+Opera Mobile14+numberOfChannels
, unsigned long 型, readonly -
個別のオーディオチャンネルの数です。これは
[[number of channels]]
の値を返さなければなりません ( MUST )。 -
In all current engines.
Firefox25+Safari6+Chrome14+
Opera15+Edge79+
Edge (Legacy)12+IENone
Firefox for Android25+iOS Safari6+Chrome for Android18+Android WebView37+Samsung Internet1.0+Opera Mobile14+sampleRate
, float 型, readonly -
サンプル / 秒で表した PCM オーディオデータのサンプルレートです。これは、
[[sample rate]]
の値を返さなければなりません ( MUST )。
1.4.3. メソッド
-
Firefox25+SafariNoneChrome43+
Opera30+Edge79+
Edge (Legacy)13+IENone
Firefox for Android25+iOS SafariNoneChrome for Android43+Android WebView43+Samsung Internet4.0+Opera Mobile30+copyFromChannel(destination, channelNumber, bufferOffset)
-
copyFromChannel()
メソッドは、AudioBuffer
の指定されたチャンネルからサンプルをdestination
の配列にコピーします。buffer
を \(N_b\) フレームのAudioBuffer
とし、\(N_f\) をdestination
配列の要素数とし、\(k\) をbufferOffset
の値とします。このとき、buffer
からdestination
にコピーされるフレームの数は \(\max(0, \min(N_b - k, N_f))\) となります。もしこれが \(N_f\) より小さい場合、destination
の残りの要素は変更されません。AudioBuffer.copyFromChannel() メソッドの引数 パラメーター 型 Null可 省略可 説明 destination
Float32Array ✘ ✘ チャンネルデータがコピーされる配列です。 channelNumber
unsigned long ✘ ✘ データをコピーするチャンネルのインデックスです。 channelNumber
がAudioBuffer
のチャンネル数と同じか大きい場合、IndexSizeError
例外を発生します ( MUST )。bufferOffset
unsigned long ✘ ✔ オプションのオフセットで、デフォルトは 0 です。 AudioBuffer
のこのオフセットから始まるデータがdestination
にコピーされます。戻り値:undefined
-
Firefox25+SafariNoneChrome43+
Opera30+Edge79+
Edge (Legacy)13+IENone
Firefox for Android25+iOS SafariNoneChrome for Android43+Android WebView43+Samsung Internet4.0+Opera Mobile30+copyToChannel(source, channelNumber, bufferOffset)
-
copyToChannel()
メソッドは、source
配列からAudioBuffer
の指定されたチャンネルにサンプルをコピーします。もし、
source
がバッファにコピーできない場合はUnknownError
を発生する事があります。buffer
を \(N_b\) フレームのAudioBuffer
とし \(N_f\) をsource
配列の要素数とし、\(k\) をbufferOffset
の値とします。このとき、source
からbuffer
にコピーされるフレームの数は \(\max(0, \min(N_b - k, N_f))\) となります。これが \(N_f\) より小さい場合、buffer
の残りの要素は変更されません。AudioBuffer.copyToChannel() メソッドの引数 パラメーター 型 Null可 省略可 説明 source
Float32Array ✘ ✘ チャンネルデータがコピーされる元の配列です。 channelNumber
unsigned long ✘ ✘ データをコピーする先のチャンネルのインデックスです。もし channelNumber
がAudioBuffer
のチャンネル数より大きいか同じ場合、IndexSizeError
を発生します ( MUST )。bufferOffset
unsigned long ✘ ✔ データをコピーする先を示すオプションのオフセットで、デフォルトは 0 です。 source
からのデータがAudioBuffer
のこのオフセットから始まる場所にコピーされます。戻り値:undefined
-
In all current engines.
Firefox25+Safari6+Chrome14+
Opera15+Edge79+
Edge (Legacy)12+IENone
Firefox for Android25+iOS Safari6+Chrome for Android18+Android WebView37+Samsung Internet1.0+Opera Mobile14+getChannelData(channel)
-
コンテンツの取得 で説明されているルールに従って、新しい
Float32Array
の[[internal data]]
に格納されているバイトの 参照を取得 または バイトの コピーを取得 します。もし、
[[internal data]]
(訳注: の読み出し) または新しいFloat32Array
の作成ができなかった場合は、UnknownError
を発生する事があります。AudioBuffer.getChannelData() メソッドの引数 パラメーター 型 Null可 省略可 説明 channel
unsigned long ✘ ✘ このパラメーターは、データを取得する特定のチャンネルを表すインデックスです。インデックス値 0 は最初のチャンネルを表します。このインデックス値は [[number of channels]]
より小さくなくてはならず ( MUST )、そうでない場合はIndexSizeError
例外を発生します ( MUST )。戻り値:Float32Array
注 : copyToChannel()
と copyFromChannel()
メソッドはより大きな配列のビューである Float32Array
を渡す事で配列の一部だけを埋めるのに使用できます。 AudioBuffer
のチャンネルからデータを読み取って塊りとして処理する場合、不要なメモリの割り当てとコピーを回避するため、 getChannelData()
を呼び出して結果の配列にアクセスするよりも、 code class="idl">copyFromChannel() をお勧めします。
APIの実装が AudioBuffer
の内容が必要になったとき、 AudioBuffer の内容の取得 という内部処理が起動されます。この処理は呼び出し元に変更不能なチャンネルデータを返します。
AudioBuffer
の 内容の取得 処理が発生した場合は次の手順で実行されます:
-
AudioBuffer
のArrayBuffer
の一部でもIsDetachedBuffer
処理に対してtrue
を返した場合、これらの手順を中止し、呼び出し元に長さ 0 のチャンネルデータバッファを返します。 -
この
AudioBuffer
のgetChannelData()
によってこれまでに返された配列のすべてのArrayBuffer
を デタッチ します。注 :
AudioBuffer
はcreateBuffer()
またはAudioBuffer
コンストラクターを介してのみ作成できるため、これは例外を起こしません。 -
これらの
ArrayBuffer
の下層にある[[internal data]]
を保持したまま、それらへの参照を呼び出し側に返します。 -
AudioBuffer
のデータのコピーを保持するArrayBuffer
をアタッチして次回のgetChannelData()
の呼び出しで返せるようにします。
AudioBuffer の内容の取得 処理は、次の場合に呼び出されます:
-
AudioBufferSourceNode.start
が呼び出されると、ノードのbuffer
の 内容の取得 を行います。この処理が失敗した場合は何も再生されません。 -
AudioBufferSourceNode.start
があらかじめ呼び出されている状態で、AudioBufferSourceNode
のbuffer
が設定されたとき、その設定処理がAudioBuffer
の 内容の取得 を行います。この処理が失敗した場合、何も再生されません。 -
ConvolverNode
のbuffer
があるAudioBuffer
に設定された時、そのAudioBuffer
の 内容の取得 が行われます。 -
AudioProcessingEvent
のディスパッチが完了すると、そのoutputBuffer
の 内容の取得 が行われます。
注 : これは copyToChannel()
は現在 AudioNode
が AudioBuffer の内容を取得 して使用中の AudioBuffer
の内容を変更するためには使えない事を意味します。 AudioNode
は以前に取得したデータを使い続けます。
1.4.4. AudioBufferOptions
これは AudioBuffer
の作成に使用するオプションを指定します。 length
と sampleRate
メンバーは必須です。
dictionary {
AudioBufferOptions unsigned long numberOfChannels = 1;required unsigned long length ;required float sampleRate ; };
1.4.4.1. ディクショナリー AudioBufferOptions
メンバー
このディクショナリーのメンバーが取れる値には制約があります。 createBuffer()
を参照してください。
length
, unsigned long 型-
サンプルフレーム数で表されるバッファの長さです。制約については
length
を参照してください。 numberOfChannels
, unsigned long 型, デフォルト値は1
-
バッファのチャンネル数です。制約については
numberOfChannels
を参照してください。 sampleRate
, float 型-
Hz で表されるバッファのサンプルレートです。制約については
sampleRate
を参照してください。
1.5. AudioNode
インターフェース
AudioNode
は AudioContext
を構成するブロックです。このインターフェースは、音源、音の出力先、および中間の処理モジュールを表しています。これらのモジュールは互いに接続されて、音をオーディオハードウェアに出力するための 処理グラフ を形成します。それぞれのノードは 入力 や 出力 を持つ事ができます。 ソースノード は入力を持たず、単一の出力を持ちます。フィルターのようなほとんどの処理ノードは、1 つの入力と 1 つの出力を持ちます。それぞれのタイプの AudioNode
はどのようにオーディオを処理したり合成するのかの詳細が異なっています。しかし一般的に AudioNode
は ( 持っていれば ) 入力を処理し、( 持っていれば ) その出力にオーディオ信号を送り出します。
それぞれの出力は 1 つ以上のチャンネルを持っています。正確なチャンネル数はそれぞれの AudioNode
の詳細に依存します。
出力は 1 つ以上の AudioNode
の入力に接続でき、つまり ファンアウト がサポートされています。入力は初期状態では接続されていません。しかし、1 つ以上の AudioNode
の出力から接続する事ができ、即ち、ファンイン がサポートされています。 AudioNode
の出力を AudioNode
の入力に接続するため connect()
メソッドが呼ばれたとき、それをその入力への 接続 と呼びます。
各 AudioNode
の 入力 はその時々で特定のチャンネル数を持ちます。この数はその入力への 接続 によって変化します。もし入力が接続を持っていない場合、チャンネル数は 1 で無音となります。
AudioNode
は 各々の 入力 について、その入力へのすべての接続のミキシングを行います。この詳細な基準となる要件については § 4 チャンネルのアップミックスとダウンミックス セクションを参照してください。
AudioNode
の入力および内部の処理は、そのノードが出力を接続されているか、またそれらの出力が AudioContext
の AudioDestinationNode
に最終的に到達しているかどうかに関わらず、 AudioContext
の時刻を踏まえて継続的に行われます。
In all current engines.
Opera15+Edge79+
Edge (Legacy)12+IENone
Firefox for Android25+iOS SafariYesChrome for Android18+Android WebView37+Samsung Internet1.0+Opera Mobile14+
[Exposed =Window ]interface :
AudioNode EventTarget {AudioNode connect (AudioNode destinationNode ,optional unsigned long output = 0,optional unsigned long input = 0);undefined connect (AudioParam destinationParam ,optional unsigned long output = 0);undefined disconnect ();undefined disconnect (unsigned long output );undefined disconnect (AudioNode destinationNode );undefined disconnect (AudioNode destinationNode ,unsigned long output );undefined disconnect (AudioNode destinationNode ,unsigned long output ,unsigned long input );undefined disconnect (AudioParam destinationParam );undefined disconnect (AudioParam destinationParam ,unsigned long output );readonly attribute BaseAudioContext context ;readonly attribute unsigned long numberOfInputs ;readonly attribute unsigned long numberOfOutputs ;attribute unsigned long channelCount ;attribute ChannelCountMode channelCountMode ;attribute ChannelInterpretation channelInterpretation ; };
1.5.1. AudioNode の作成
AudioNode
の作成には 2 つの方法があります: 特定のインターフェースのコンストラクタを使用する方法、と BaseAudioContext
または AudioContext
の ファクトリーメソッド を使用する方法です。
AudioNode
のコンストラクタの最初の引数として渡される BaseAudioContext
は、作成される AudioNode
が 関連する BaseAudioContext
と呼ばれます。同様に、ファクトリーメソッドを使用する場合、 AudioNode
の 関連する BaseAudioContext
は このファクトリーメソッドが呼び出される BaseAudioContext
です。
BaseAudioContext
c 上の ファクトリーメソッド の呼び出しにより、特定のタイプ n の新しい AudioNode
を作成するには、次の手順を実行します:
-
node を型 n の新しいオブジェクトとします。
-
option を、このファクトリーメソッドに 対応する インターフェースに 関連付け られた型のディクショナリーとします。
-
ファクトリーメソッドに渡される各パラメーターについて、 option 内の名前が一致するディクショナリーメンバーをこのパラメーターの値に設定します。
-
node の作成のために c と option を引数として n の コンストラクターを呼び出します。
-
node を返します。
AudioNode
から継承したオブジェクト o を 初期化 する事は、このインターフェースのコンストラクタに引数 context と dict を渡して、次の手順を実行することを意味します。
-
context を o が関連付けられた
BaseAudioContext
とします。 -
numberOfInputs
、numberOfOutputs
、channelCount
、channelCountMode
、channelInterpretation
の値を、各AudioNode
のセクションで説明するそれぞれのインターフェースのデフォルト値に設定します。 -
渡された dict のそれぞれのメンバーについて、k をメンバーのキー、v をその値として以下の手順を実行します。手順の実行の際に何らかの例外が発生した場合は反復処理を中止し、例外をアルゴリズムの呼び出し元 ( コンストラクターまたはファクトリーメソッド ) に伝えます。
-
k がこのインターフェースの
AudioParam
の名前である場合、このAudioParam
のvalue
属性を v に設定します。 -
そうでなく、k がこのインターフェースの属性の名前である場合、この属性に関連付けられたオブジェクトを v に設定します。
-
ファクトリーメソッドに 関連するインターフェース は、このメソッドから返されるオブジェクトのインターフェースです。インターフェースに 関連するオプションオブジェクト は、このインターフェースのコンストラクタに渡すことができるオプションオブジェクトです。
AudioNode
は [DOM] で説明されているように EventTarget
です。つまり、他の EventTarget
がイベントを受け入れるのと同じ方法で、イベントを AudioNode
にディスパッチすることができます。
enum {
ChannelCountMode "max" ,"clamped-max" ,"explicit" };
ChannelCountMode
は、ノードの channelCount
および channelInterpretation
の値と組み合わせて、ノードへの入力をどのようにミックスするかを制御する computedNumberOfChannels を決定するために使用されます。 computedNumberOfChannels は次のように決定されます。ミックスがどのように行われるかの詳細については、§ 4 チャンネルのアップミックスとダウンミックス を参照してください。
列挙値の説明 | |
---|---|
"max "
| computedNumberOfChannels は入力となっている全接続のチャンネル数の最大値になります。このモードでは channelCount は無視されます。
|
"clamped-max "
| computedNumberOfChannels は "max " のときと同じように計算されますが、指定された channelCount を上限に制限されます。
|
"explicit "
| computedNumberOfChannels の値は channelCount によって指定された値そのものになります。
|
enum {
ChannelInterpretation "speakers" ,"discrete" };
列挙値の説明 | |
---|---|
"speakers "
| アップミックス式 または ダウンミックス式 を使用します。チャンネル数がスピーカーの基本レイアウトに合致しない場合は、"discrete " に戻します。
|
"discrete "
| アップミックスの場合は、チャンネルを使い切るまで順に埋めて行き、余っているチャンネルには 0 を出力します。ダウンミックスでは、可能な限りチャンネルを順に埋め、余ったチャンネルは捨てられます。 |
1.5.2. AudioNode のテールタイム
AudioNode
は テールタイム を持つことができます。 これは AudioNode
に無音が供給されている場合でも、出力が無音では無い可能性があることを意味します。
AudioNode
は過去の入力が将来の出力に影響するような内部処理状態を持っている場合、非ゼロのテールタイムを持っています。 AudioNode
は、入力が音のある状態から無音に移行した後でも、計算されたテールタイムの間、音を出力し続ける場合があります。
1.5.3. AudioNode のライフタイム
AudioNode
は次のいずれかの条件が満たされている場合、 レンダリング量子 の間 アクティブに処理 を続けます。
-
AudioScheduledSourceNode
は現在のレンダリング量子の少なくとも一部で 再生 されている場合にのみ アクティブに処理 されます。 -
MediaElementAudioSourceNode
はそのmediaElement
が現在のレンダリング量子の少なくとも一部で再生されている場合にのみ アクティブに処理 されます。 -
MediaStreamAudioSourceNode
またはMediaStreamTrackAudioSourceNode
は関連付けられているMediaStreamTrack
オブジェクトのreadyState
属性が"live"
で、muted
属性がfalse
で、enabled
属性がtrue
である場合に アクティブに処理 されます。 -
循環の中に入っている
DelayNode
は現在の レンダリング量子 の出力サンプルの絶対値が \( 2^{-126} \) 以上の場合にのみ アクティブに処理 されます。 -
ScriptProcessorNode
は、その入力または出力が接続されている場合に アクティブに処理 されます。 -
AudioWorkletNode
はAudioWorkletProcessor
の[[callable process]]
がtrue
を返して、active source フラグがtrue
であるか、入力のどれかに接続されているAudioNode
が アクティブに処理 している場合に アクティブに処理 されます。 -
他のすべての
AudioNode
は、その入力のどれかに接続されたAudioNode
が アクティブに処理 を行っているのであれば アクティブな処理 を開始し、他の アクティブに処理 を行っているAudioNode
から受け取った入力が出力に影響を与えなくなったときに アクティブな処理 を停止します。
注 : これは AudioNode
が テールタイム を持つ事を考慮に入れます。
アクティブに処理 を行っていない AudioNode
は 1 チャンネルの無音を出力します。
1.5.4. 属性
-
In all current engines.
Firefox25+Safari6+Chrome14+
Opera15+Edge79+
Edge (Legacy)12+IENone
Firefox for Android25+iOS SafariYesChrome for Android18+Android WebView37+Samsung Internet1.0+Opera Mobile14+channelCount
, unsigned long 型 -
channelCount
はノードへの入力の接続におけるアップミックスおよびダウンミックスの際に使用されるチャンネル数です。値が別途定められている特定のノードを除いて、デフォルトは 2 です。この属性は入力を持たないノードでは意味を持ちません。もしこの値が 0、あるいは実装のチャンネル数の最大値より大きい値にセットされた場合、NotSupportedError
例外を発生します ( MUST )。さらに、一部のノードではこれに加えて チャンネル数の制約 があります:
AudioDestinationNode
-
この動作は、接続先のデスティネーションノードが
AudioContext
かOfflineAudioContext
かによって異なります:AudioContext
-
チャンネル数は 1 から
maxChannelCount
の間でなければなりません ( MUST )。この範囲外の値を設定しようとすると、IndexSizeError
例外を発生します ( MUST )。 OfflineAudioContext
-
チャンネル数を変更することはできません。値を変更しようとすると
InvalidStateError
例外を発生します ( MUST )。
AudioWorkletNode
-
§ 1.32.3.3.2 AudioWorkletNodeOptions によるチャンネルの設定 の AudioWorkletNodeOptions によるチャンネル設定を参照してください。
ChannelMergerNode
-
チャンネル数を変更することはできません。値を変更しようとすると
InvalidStateError
例外を発生します ( MUST )。 ChannelSplitterNode
-
チャンネル数を変更することはできません。値を変更しようとすると
InvalidStateError
例外を発生します ( MUST )。 ConvolverNode
-
チャンネル数は 2 より大きくできません。2 より大きい値を設定しようとすると
NotSupportedError
例外を発生します ( MUST )。 DynamicsCompressorNode
-
チャンネル数は 2 より大きい値にはできません。2 より大きい値に変更しようとすると
NotSupportedError
例外を発生します ( MUST )。 PannerNode
-
チャンネル数は 2 より大きくすることはできません。2 より大きな値に変更しようとすると
NotSupportedError
例外を発生します ( MUST )。 ScriptProcessorNode
-
チャンネル数は変更することができません。変更しようとすると
NotSupportedError
例外を発生します ( MUST )。 StereoPannerNode
-
チャンネル数は 2 より大きくすることはできません。2 より大きな値に変更しようとすると
NotSupportedError
例外を発生します ( MUST )。
この属性の詳細については、§ 4 チャンネルのアップミックスとダウンミックス を参照してください。
-
In all current engines.
Firefox25+Safari6+Chrome14+
Opera15+Edge79+
Edge (Legacy)12+IENone
Firefox for Android25+iOS SafariYesChrome for Android18+Android WebView37+Samsung Internet1.0+Opera Mobile14+channelCountMode
, ChannelCountMode 型 -
channelCountMode
は、ノードの入力への接続をアップミックスおよびダウンミックスするときに、チャンネルがどのようにカウントされるかを決定します。デフォルト値は "max
" です。この属性は、入力のないノードには影響しません。さらに、一部のノードでは、チャンネル数モードが取れる値について channelCountMode の制約 があります:
AudioDestinationNode
-
AudioDestinationNode
がOfflineAudioContext
のdestination
ノードである場合、チャンネル数モードは変更できません。値を変更しようとするとInvalidStateError
例外を発生します ( MUST )。 ChannelMergerNode
-
チャンネル数モードは "
explicit
" から変更できません。値を変更しようとするとInvalidStateError
例外を発生します ( MUST )。 ChannelSplitterNode
-
チャンネル数モードは "
explicit
" から変更できません。値を変更しようとするとInvalidStateError
例外を発生します ( MUST )。 ConvolverNode
-
チャンネル数モードは "
max
" に設定する事はできません。値を "max
" に設定しようとするとNotSupportedError
例外を発生します ( MUST )。 DynamicsCompressorNode
-
チャンネル数モードは "
max
" に設定する事はできません。値を "max
" に設定しようとするとNotSupportedError
例外を発生します ( MUST )。 PannerNode
-
チャンネル数モードは "
max
" に設定する事はできません。値を "max
" に設定しようとするとNotSupportedError
例外を発生します ( MUST )。 ScriptProcessorNode
-
チャンネル数モードは "
explicit
" から変更できません。値を変更しようとするとNotSupportedError
例外を発生します ( MUST )。 StereoPannerNode
-
チャンネル数モードは "
max
" に設定する事はできません。値を "max
" に設定しようとするとNotSupportedError
例外を発生します ( MUST )。
この属性の詳細については、§ 4 チャンネルのアップミックスとダウンミックス を参照してください。
-
AudioNode/channelInterpretation
In all current engines.
Firefox25+Safari6+Chrome14+
Opera15+Edge79+
Edge (Legacy)12+IENone
Firefox for Android25+iOS SafariYesChrome for Android18+Android WebView37+Samsung Internet1.0+Opera Mobile14+channelInterpretation
, ChannelInterpretation 型 -
channelInterpretation
は、ノードの入力への接続をアップミックスまたはダウンミックスするときに、個々のチャンネルをどのように扱うかを決定します。デフォルト値は "speakers
" です。この属性は、入力のないノードには影響しません。さらに、一部のノードでは、チャンネルの解釈として取れる値に追加の channelInterpretation の制約 があります :
ChannelSplitterNode
-
チャンネルの解釈は "
discrete
" から変更することはできません。値を変更しようとするとInvalidStateError
例外を発生します ( MUST )。
この属性の詳細については、§ 4 チャンネルのアップミックスとダウンミックス を参照してください。
-
In all current engines.
Firefox25+Safari6+Chrome14+
Opera15+Edge79+
Edge (Legacy)12+IENone
Firefox for Android25+iOS SafariYesChrome for Android18+Android WebView37+Samsung Internet1.0+Opera Mobile14+context
, BaseAudioContext 型, readonly -
この
AudioNode
を所有するBaseAudioContext
です。 -
In all current engines.
Firefox25+Safari6+Chrome14+
Opera15+Edge79+
Edge (Legacy)12+IENone
Firefox for Android25+iOS SafariYesChrome for Android18+Android WebView37+Samsung Internet1.0+Opera Mobile14+numberOfInputs
, unsigned long 型, readonly -
この
AudioNode
の入力の数です。 ソースノード ではこれは 0 になります。この属性は多くのAudioNode
のタイプであらかじめ決められていますが、ChannelMergerNode
やAudioWorkletNode
のようないくつかのAudioNode
では入力の数は可変です。 -
In all current engines.
Firefox25+Safari6+Chrome14+
Opera15+Edge79+
Edge (Legacy)12+IENone
Firefox for Android25+iOS SafariYesChrome for Android18+Android WebView37+Samsung Internet1.0+Opera Mobile14+numberOfOutputs
, unsigned long 型, readonly -
この
AudioNode
から出る出力の数です。この属性はいくつかのAudioNode
ではあらかじめ決められた値ですが、ChannelSplitterNode
やAudioWorkletNode
などでは可変になります。
1.5.5. メソッド
-
In all current engines.
Firefox25+Safari6+Chrome14+
Opera15+Edge79+
Edge (Legacy)12+IENone
Firefox for Android25+iOS SafariYesChrome for Android18+Android WebView37+Samsung Internet1.0+Opera Mobile14+connect(destinationNode, output, input)
-
あるノードの特定の出力から別のノードの特定の入力への接続は 1 つだけ存在できます。同じ端子間の複数回の接続は無視されます。
このメソッドは、
destination
のAudioNode
オブジェクトを返します。AudioNode.connect(destinationNode, output, input) メソッドの引数 パラメーター 型 Null可 省略可 説明 destinationNode
destination
パラメーターは接続先のAudioNode
です。もしdestination
が他のAudioContext
によって作成されたAudioNode
の場合、InvalidAccessError
例外を発生します ( MUST )。つまりAudioNode
は複数のAudioContext
間で共有する事はできません。チャンネルのアップミックスとダウンミックス で説明されているように複数のAudioNode
が同じAudioNode
に接続する事はできます。output
unsigned long ✘ ✔ output
パラメーターはAudioNode
のどの出力から接続するかを指定するインデックスです。もしこのパラメーターが範囲外の場合、IndexSizeError
例外を発生します ( MUST )。 connect() を複数回呼び出してAudioNode
の出力から複数の入力に接続する事は可能です。つまり、"ファンアウト"がサポートされています。input
input
パラメーターは接続先のAudioNode
のどの入力に接続するかを指定するインデックスです。もしこのパラメーターが範囲外の場合、IndexSizeError
例外を発生します ( MUST )。 あるAudioNode
から他のAudioNode
に 循環 を作るような接続を行う事も可能です: つまりあるAudioNode
から、最初のAudioNode
の入力かAudioParam
に接続を行っている別のAudioNode
に対して接続を行う事ができます。戻り値:AudioNode
-
In all current engines.
Firefox25+Safari6+Chrome14+
Opera15+Edge79+
Edge (Legacy)12+IENone
Firefox for Android25+iOS SafariYesChrome for Android18+Android WebView37+Samsung Internet1.0+Opera Mobile14+connect(destinationParam, output)
-
AudioNode
をAudioParam
に接続し、パラメーターの値を a-rate の信号で制御します。connect() を複数回呼び出す事で、1 つの
AudioNode
の出力を複数のAudioParam
に接続する事が可能です。即ち "ファンアウト" がサポートされています。connect() を複数回呼び出す事で、複数の
AudioNode
を 1 つのAudioParam
に接続する事が可能です。即ち "ファンイン" がサポートされています。code class="idl">AudioParam はそれに接続されている すべての
AudioNode
の出力からレンダリングされたオーディオデータを取り出し、それがモノラルでなければ、ダウンミックスによって モノラルに変換 します。そして接続されている各出力をミックスし、さらに最終的にパラメーターが持っているタイムラインの変化スケジュールを含む 固有値 (AudioParam
に何も接続されていない状態でのvalue
) とミックスします。モノラルへのダウンミックスは、
channelCount
= 1、channelCountMode
= "explicit
"、およびchannelInterpretation
= "speakers
" のAudioNode
のダウンミックスに相当します。特定のノードの出力と特定の
AudioParam
の間の接続は 1 つのみ存在できます。同じ終端点を持つ複数の接続は無視されます。For example:nodeA
. connect( param); nodeA. connect( param); will have the same effect as
nodeA
. connect( param); AudioNode.connect(destinationParam, output) メソッドの引数 パラメーター 型 Null可 省略可 説明 destinationParam
AudioParam ✘ ✘ destination
パラメーターは接続先のAudioParam
です。このメソッドはdestination
のAudioParam
オブジェクトを返しません。destinationParam
が属するAudioNode
を作成したBaseAudioContext
と、このメソッドが呼び出されたAudioNode
を作成したBaseAudioContext
が異なる場合、InvalidAccessError
例外を発生します ( MUST )。output
unsigned long ✘ ✔ output
パラメーターはAudioNode
のどの出力から接続するかを指定するインデックスです。もしparameter
が範囲外の場合、IndexSizeError
例外を発生します ( MUST )。戻り値:undefined
-
In all current engines.
Firefox25+Safari6+Chrome14+
Opera15+Edge79+
Edge (Legacy)12+IENone
Firefox for Android25+iOS SafariYesChrome for Android18+Android WebView37+Samsung Internet1.0+Opera Mobile14+disconnect()
-
AudioNode
から出るすべての接続を切断します。Disconnects all outgoing connections from the
AudioNode
.パラメーターなし。戻り値:undefined
disconnect(output)
-
AudioNode
の 1 つの出力から他のAudioNode
またはAudioParam
オブジェクトへの接続をすべて切断します。a data-link-type="idl" href="#dom-audionode-disconnect-output" id="ref-for-dom-audionode-disconnect-output①">AudioNode.disconnect(output) メソッドの引数 パラメーター 型 Null可 省略可 説明 output
unsigned long ✘ ✘ このパラメーターは接続を切る AudioNode
の出力のインデックスです。これは与えられた出力から出るすべての接続を切断します。もしこのパラメーターが範囲外の場合、IndexSizeError
例外を発生します ( MUST )。戻り値:undefined
disconnect(destinationNode)
-
AudioNode
のすべての出力から特定の接続先となるAudioNode
に繋がる接続を切断します。AudioNode.disconnect(destinationNode) メソッドの引数 パラメーター 型 Null可 省略可 説明 destinationNode
destinationNode
パラメーターは切断するAudioNode
です。これは与えられたdestinationNode
に対するすべての接続を切断します。もしdestinationNode
に対する接続がない場合、InvalidAccessError
例外を発生します ( MUST )。戻り値:undefined
disconnect(destinationNode, output)
-
AudioNode
の特定の出力から特定の接続先AudioNode
入力への接続を切断します。AudioNode.disconnect(destinationNode, output) メソッドの引数 パラメーター 型 Null可 省略可 説明 destinationNode
destinationNode
パラメーターは切断するAudioNode
です。もし与えられた出力からdestinationNode
に対する接続がない場合、InvalidAccessError
例外を発生します ( MUST )。output
unsigned long ✘ ✘ output
パラメーターは接続を切るAudioNode
の出力を表すインデックスです。もしこのパラメーターが範囲外の場合はIndexSizeError
例外を発生します ( MUST )。戻り値:undefined
disconnect(destinationNode, output, input)
-
AudioNode
の特定の出力から 接続先AudioNode
の特定の入力への接続を切断します。AudioNode.disconnect(destinationNode, output, input) メソッドの引数 パラメーター 型 Null可 省略可 説明 destinationNode
destinationNode
パラメーターは切断するAudioNode
です。 もし与えられた出力からdestinationNode
への接続が存在しない場合、InvalidAccessError
例外を発生します ( MUST )。output
unsigned long ✘ ✘ output
パラメーターは切断するAudioNode
の出力のインデックスです。もしこのパラメーターが範囲外の場合、IndexSizeError
例外を発生します ( MUST )。input
input
パラメーターは切断する接続先AudioNode
の入力のインデックスです。もしこのパラメーターが範囲外の場合、IndexSizeError
例外を発生します ( MUST )。戻り値:undefined
disconnect(destinationParam)
-
特定の接続先
AudioParam
に繋がるAudioNode
のすべての出力を切断します。この操作によって、このAudioNode
からパラメーター値の計算への寄与は 0 となります。パラメーターの固有値はこの操作に影響されません。AudioNode.disconnect(destinationParam) メソッドの引数 パラメーター 型 Null可 省略可 説明 destinationParam
AudioParam ✘ ✘ destinationParam
パラメーターは切断するAudioParam
です。もしdestinationParam
に対する接続がない場合はInvalidAccessError
例外を発生します ( MUST )。戻り値:undefined
disconnect(destinationParam, output)
-
AudioNode
の特定の出力から特定のAudioParam
への接続を切断します。この操作によって、このAudioNode
からパラメーター値の計算への寄与は 0 となります。パラメーターの固有値はこの操作に影響されません。AudioNode.disconnect(destinationParam, output) メソッドの引数 パラメーター 型 Null可 省略可 説明 destinationParam
AudioParam ✘ ✘ destinationParam
パラメーターは切断されるAudioParam
です。もしdestinationParam
への接続が存在しない場合、InvalidAccessError
例外を発生します ( MUST )。output
unsigned long ✘ ✘ output
パラメーターは切断されるAudioNode
の出力のインデックスです。もしparameter
が範囲外の場合、IndexSizeError
例外を発生します ( MUST )。戻り値:undefined
1.5.6. AudioNodeOptions
これは、すべての AudioNode
の生成の際に使用できるオプションを指定します。すべてのメンバーはオプションです。ただし、それぞれのノードで使われる値は、実際のノードに依存します。
Opera42+Edge79+
Edge (Legacy)NoneIENone
Firefox for Android53+iOS Safari?Chrome for Android55+Android WebView55+Samsung Internet6.0+Opera Mobile42+
dictionary {
AudioNodeOptions unsigned long channelCount ;ChannelCountMode channelCountMode ;ChannelInterpretation channelInterpretation ; };
1.5.6.1. ディクショナリー AudioNodeOptions
メンバー
channelCount
, unsigned long 型-
channelCount
属性に要求するチャンネル数です。 channelCountMode
, ChannelCountMode 型-
channelCountMode
属性に要求するモードです。 channelInterpretation
, ChannelInterpretation 型-
channelInterpretation
属性に要求するモードです。
1.6. AudioParam
インターフェース
In all current engines.
Opera15+Edge79+
Edge (Legacy)12+IENone
Firefox for Android25+iOS SafariYesChrome for Android18+Android WebView37+Samsung Internet1.0+Opera Mobile14+
AudioParam
は AudioNode
の例えば音量のような個別の機能をコントロールします。パラメーターは value
属性を使って特定の値に即時にセットする事ができます。あるいは ( AudioContext
の currentTime
属性の時間軸で ) 非常に高い時間精度で値の変化のスケジュールを組む事ができ、エンベロープ、音量のフェード、LFO、フィルタースイープ、グレイン窓、などに応用する事ができます。このような方法で任意のタイムラインベースのオートメーション曲線をすべての AudioParam
に対して設定する事が可能です。またさらに、 AudioNode
からの出力の音声信号を AudioParam
に接続する事ができ、個別に持っているパラメーターの 固有値 に加算する事ができます。
いくつかの合成や処理の AudioNode
は、オーディオサンプル単位で反映されなくてはならない ( MUST ) AudioParam
型の属性を持っています。その他の AudioParam
はサンプル単位の精度は重要ではなく、その値の変化はより粗く取り込まれます。各 AudioParam
は a-rate パラメーターつまりサンプル単位で反映される ( MUST )か、それ以外の k-rate パラメーターかが指定されます。
実装はそれぞれの AudioNode
について、1 レンダリング量子 ごとのブロック単位の処理を行わなくてはなりません ( MUST )。
それぞれの レンダリング量子 に対して、k-rate パラメーターは最初のサンプルのタイミングで取り込まれ、その値はブロック全体に対して使用されなくてはなりません ( MUST )。 a-rate パラメーターはブロック内のサンプルフレームごとに取り込まれなくてはなりません ( MUST )。 AudioParam
によっては、 automationRate
属性を "a-rate
" または "k-rate
" のいずれかに設定することによって、レートを制御できます。詳細については、個々の AudioParam
の説明を参照してください。
各 AudioParam
は minValue
および maxValue
属性を持っており、それがパラメーターの 単純な公称範囲 となっています。実際のパラメーターの値は \([\mathrm{minValue}, \mathrm{maxValue}]\) の範囲に制限されます。詳細は、§ 1.6.3 値の計算 を参照してください。
多くの AudioParam
では、 minValue
と maxValue
は可能な最大限の範囲に設定されています。この場合、 maxValue
は、 最も正の単精度浮動小数点値 である 3.4028235e38 となります。( ただし、JavaScript では IEEE-754 倍精度浮動小数点値のみをサポートするため、これは 3.4028234663852886e38 と書かなくてはなりません ) 同様に、 minValue
は 最も負の単精度浮動小数点値、つまり 最も正の単精度浮動小数点値 の符号を負にしたもの: -3.4028235e38 となります。( 同様に、これは JavaScript では -3.4028234663852886e38 として記述する必要があります )。
AudioParam
は、0 個以上の オートメーションイベント のリストを保持しています。各オートメーションイベントは、 AudioContext
の currentTime
属性の時間軸における オートメーションイベント時刻 に関連して、特定の時間範囲にわたるパラメーター値の変更を指定します。オートメーションイベントのリストは、オートメーションイベント時刻の昇順で管理されます。
オートメーションイベントの振る舞いは、 AudioContext
の現在の時刻とこのイベントのオートメーションイベント時刻とリスト内に隣接するイベントの関数になります。以下の オートメーションメソッド は、そのメソッドに固有のタイプの新しいイベントをイベントリストに追加し、変更します:
-
setValueAtTime()
-SetValue
-
linearRampToValueAtTime()
-LinearRampToValue
-
exponentialRampToValueAtTime()
-ExponentialRampToValue
-
setTargetAtTime()
-SetTarget
-
setValueCurveAtTime()
-SetValueCurve
これらのメソッドが呼ばれるとき、次の規則が適用されます:
-
オートメーションイベント時刻 は、使われるサンプルレートに対して量子化されません。カーブと傾斜を決定する式では、イベントをスケジューリングするときに与えられた正確な時刻を使用されます。
-
これらのイベントが、リストの中で既に 1 つまたは複数のイベントが存在する時刻に追加された場合、そのイベントの後で、時刻がより後ろのイベントの前に追加されます。
-
もし setValueCurveAtTime() が時刻 \(T\) と持続時間 \(D\) を指定して呼ばれたとき、\(T\) よりも後ろで \(T + D\) よりも手前に何らかのイベントが既に存在している場合、
NotSupportedError
例外を発生します ( MUST )。 言い換えれば、他のイベントの時刻を含んだ期間のカーブをスケジュールする事はできませんが、他のイベントと正確に同じ時刻の値をスケジュールすることは問題ありません。 -
同様に、時刻 \(T\) と 持続時間 \(D\) で示されるカーブの期間 \([T, T+D)\) に含まれる時刻を指定して何らかの オートメーションメソッド を呼んだ場合、
NotSupportedError
例外を発生します ( MUST )。
注 : AudioParam
の属性は、 value
属性を除いて、読み取り専用です。
AudioParam
のオートメーションレートは、 automationRate
属性を次のいずれかの値で設定して選択できます。ただし、一部の AudioParam
では、オートメーションレートを変更できるかどうかについて制約があります。
enum {
AutomationRate "a-rate" ,"k-rate" };
列挙値の説明 | |
---|---|
"a-rate "
| この AudioParam は、a-rate での処理に設定されます。
|
"k-rate "
| この AudioParam は、k-rate での処理に設定されます。
|
各 AudioParam
には内部スロット [[current value]]
があり、 AudioParam
の defaultValue
に初期設定されています。
[Exposed =Window ]interface {
AudioParam attribute float value ;attribute AutomationRate automationRate ;readonly attribute float defaultValue ;readonly attribute float minValue ;readonly attribute float maxValue ;AudioParam setValueAtTime (float ,
value double );
startTime AudioParam linearRampToValueAtTime (float ,
value double );
endTime AudioParam exponentialRampToValueAtTime (float ,
value double );
endTime AudioParam setTargetAtTime (float ,
target double ,
startTime float );
timeConstant AudioParam setValueCurveAtTime (sequence <float >,
values double ,
startTime double );
duration AudioParam cancelScheduledValues (double );
cancelTime AudioParam cancelAndHoldAtTime (double ); };
cancelTime
1.6.1. 属性
automationRate
, AutomationRate 型-
AudioParam
のオートメーションの速度です。デフォルト値は実際のAudioParam
に依存します。デフォルト値についてはそれぞれのAudioParam
の説明を参照してください。いくつかのノードには、次のような追加の オートメーション速度の制約 があります:
AudioBufferSourceNode
-
AudioParam
のplaybackRate
とdetune
は "k-rate
" でなくてはなりません ( MUST )。速度が "a-rate
" に変更された場合は、InvalidStateError
が発生します。 DynamicsCompressorNode
-
AudioParam
のthreshold
、knee
、ratio
、attack
、およびrelease
は、"k-rate
" でなければなりません ( MUST )。速度が "a-rate
" に変更された場合、InvalidStateError
が発生します。 PannerNode
-
panningModel
が "HRTF
" の場合、PannerNode
のすべてのAudioParam
に対するautomationRate
の設定は無視されます。同様に、AudioListener
のすべてのAudioParam
のautomationRate
の設定は無視されます。この場合、AudioParam
は、automationRate
が "k-rate
" に設定されているかのように動作します。
-
In all current engines.
Firefox25+Safari6+Chrome14+
Opera15+Edge79+
Edge (Legacy)12+IENone
Firefox for Android25+iOS SafariYesChrome for Android18+Android WebView37+Samsung Internet1.0+Opera Mobile14+defaultValue
, float 型, readonly -
value
属性の初期値です。 -
In all current engines.
Firefox53+Safari6+Chrome52+
Opera39+Edge79+
Edge (Legacy)NoneIENone
Firefox for Android53+iOS SafariYesChrome for Android52+Android WebView52+Samsung Internet6.0+Opera Mobile41+maxValue
, float 型, readonly -
パラメーターが取ることができる名目上の最大値です。
minValue
と組み合わせて、これはこのパラメーターの 公称範囲 となります。 -
In all current engines.
Firefox53+Safari6+Chrome52+
Opera39+Edge79+
Edge (Legacy)NoneIENone
Firefox for Android53+iOS SafariYesChrome for Android52+Android WebView52+Samsung Internet6.0+Opera Mobile41+minValue
, float 型, readonly -
パラメーターが取ることができる名目上の最小値です。
maxValue
と組み合わせて、これはこのパラメーターの 公称範囲 となります。 -
In all current engines.
Firefox25+Safari6+Chrome14+
Opera15+Edge79+
Edge (Legacy)12+IENone
Firefox for Android25+iOS SafariYesChrome for Android18+Android WebView37+Samsung Internet1.0+Opera Mobile14+value
, float 型 -
パラメーターの浮動小数点の値です。この属性の初期値は
defaultValue
となります。この属性を読み取ると、
[[current value]]
スロットの内容が返されます。返される値のアルゴリズムについては § 1.6.3 値の計算 を参照してください。この属性を設定すると、要求された値を
[[current value]]
スロットに割り当て、現在のAudioContext
のcurrentTime
と[[current value]]
を使って setValueAtTime() メソッドを呼び出す効果があります。setValueAtTime()
で発生する例外がこの属性を設定する事でも発生する事があります。
1.6.2. メソッド
-
AudioParam/cancelAndHoldAtTime
In only one current engine.
FirefoxNoneSafariNoneChrome57+
Opera44+Edge79+
Edge (Legacy)NoneIENone
Firefox for AndroidNoneiOS SafariNoneChrome for Android57+Android WebView57+Samsung Internet7.0+Opera Mobile43+cancelAndHoldAtTime(cancelTime)
-
これは
cancelTime
と同じかそれ以降の時刻のスケジュールされたすべてのパラメーターの変化をキャンセルするという点でcancelScheduledValues()
と似ていますが、それに加えてcancelTime
の時点でのオートメーション値が、他のオートメーションイベントが起こるまで、保持されます。オートメーションが動作中に
cancelAndHoldAtTime()
を呼び出してからcancelTime
に達するまでの任意の時間のcancelAndHoldAtTime()
に対するタイムラインの動作は非常に複雑です。それでcancelAndHoldAtTime()
の動作は次のアルゴリズムで定義されます。\(t_c\) をcancelTime
の値とします。そして、-
時刻 \(t_1\) におけるイベントを ( 存在すれば ) \(E_1\) とし、\(t_1\) が \(t_1 \le t_c\) を満たす最大の数であるとします。
-
時間 \(t_2\) におけるイベントを ( 存在すれば ) \(E_2\) とし、\(t_2\) が \(t_c \lt t_2\) を満たす最小の数であるとします。
-
もし \(E_2\) が存在すれば:
-
もし、\(E_2\) が linear または exponential 型の傾斜の場合、
-
実質的に \(E_2\) を書き換えて、時刻 \(t_c\) に終了し、最終値が元の傾斜の \(t_c\) の時点の値である同じ種類の傾斜とします。
-
ステップ 5. に行きます。
-
-
そうでなければ ステップ 4. に行きます。
-
-
もし \(E_1\) が存在すれば:
-
もし \(E_1\) が
setTarget
イベントの場合、-
時刻 \(t_c\) に
setValueAtTime
イベントを暗黙的に挿入し、setTarget
が時刻 \(t_c\) に持つであろう値とします。
-
ステップ 5. に行きます。
-
-
もし \(E_1\) が
setValueCurve
で、開始時刻が \(t_3\) 、持続時間が \(d\) の場合-
もし \(t_c \gt t_3 + d\) ならば ステップ 5. に行きます。
-
そうでなければ、
-
実質的にこのイベントを、開始時刻が \(t_3\) 、新しい持続時間が \(t_c-t_3\) の
setValueCurve
イベントで置き換えます。しかしながら、これは単なる置き換えではありません。このオートメーションは、オリジナルと同じ出力を生成するために留意しなくてはならず ( MUST )、ただ異なる持続時間を使用して計算された出力ではありません。( これだと、値の曲線を少し違う方法でサンプリングして、異なる結果を生じることになります )。
-
ステップ 5. に行きます。
-
-
-
-
時刻 \(t_c\) より後ろのすべてのイベントを削除します。
イベントが追加されない場合は、
cancelAndHoldAtTime()
の後のオートメーション値は、元のタイムラインが時刻 \(t_c\) に持つ定数値となります。AudioParam.cancelAndHoldAtTime() メソッドの引数 パラメーター 型 Null可 省略可 説明 cancelTime
double ✘ ✘ この時刻以降の以前スケジュールされたパラメーターの変化はキャンセルされます。これは、 AudioContext
のcurrentTime
属性と同じ時間軸の時刻です。もしcancelTime
が負であるか有限数でない場合、RangeError
例外を発生します ( MUST )。cancelTime
がcurrentTime
より小さい場合はcurrentTime
にクランプされます。戻り値:AudioParam
-
-
AudioParam/cancelScheduledValues
In all current engines.
Firefox25+Safari6+Chrome14+
Opera15+Edge79+
Edge (Legacy)12+IENone
Firefox for Android25+iOS SafariYesChrome for Android18+Android WebView37+Samsung Internet1.0+Opera Mobile14+cancelScheduledValues(cancelTime)
-
cancelTime
と同じか後ろの時刻にスケジュールされたすべてのパラメーター変化を取り消します。スケジュールされたパラメーター変化を取り消すという事は、スケジュールされたイベントをイベントリストから削除することを意味します。オートメーションイベントの時刻 がcancelTime
未満の現在動作中のオートメーションも取り消され、( そのオートメーション以前の ) 直前の値が直ちに復元されるため、このような取り消しは不連続を引き起こす可能性があります。cancelAndHoldAtTime()
によってスケジュールされたすべてのホールド値で、cancelTime
の後ろにホールドの時刻が発生した場合にもまた削除されます。setValueCurveAtTime()
の場合、\(T_0\) と \(T_D\) は それぞれこのイベントのstartTime
とduration
とします。そしてcancelTime
が \([T_0, T_0 + T_D]\) の範囲内にあるならば、イベントがタイムラインから削除されます。AudioParam.cancelScheduledValues() メソッドの引数 パラメーター 型 Null可 省略可 説明 cancelTime
double ✘ ✘ この時刻以降で既にスケジュールされているパラメーター変化はキャンセルされます。これは AudioContext
のcurrentTime
属性と同じ時間軸の時刻です。もしcancelTime
が負であるか、有限数でない場合RangeError
例外を発生します ( MUST )。cancelTime
がcurrentTime
より小さい場合はcurrentTime
にクランプされます。戻り値:AudioParam
-
AudioParam/exponentialRampToValueAtTime
FirefoxNoneSafari6+Chrome14+
Opera15+Edge79+
Edge (Legacy)12+IENone
Firefox for AndroidNoneiOS SafariYesChrome for AndroidNoneAndroid WebView37+Samsung Internet1.0+Opera Mobile14+exponentialRampToValueAtTime(value, endTime)
-
前にスケジュールされているバラメーター値から指定された値まで、指数的に連続して値を変化させる事をスケジュールします。フィルターの周波数や再生スピードなどのパラメーターは人間の聴覚特性のため、指数的変化が適しています。
時間範囲 \(T_0 \leq t < T_1\) ( ここで \(T_0\) は前のイベントの時刻で \(T_1\) はこのメソッドに渡された
endTime
パラメーターです ) に対して次のように計算されます:$$ v(t) = V_0 \left(\frac{V_1}{V_0}\right)^\frac{t - T_0}{T_1 - T_0} $$
ここで \(V_0\) は時刻 \(T_0\) での値、\(V_1\) はこのメソッドに渡された
value
パラメーターです。もし \(V_0\) と \(V_1\) が、逆の符号を持つか \(V_0\) が 0 ならば、\(T_0 \le t \lt T_1\) に対して \(v(t) = V_0\) となります。これはまた、0 に向かう指数カーブが不可能である事も示しています。
setTargetAtTime()
で適当な時間定数を選択する事で良い近似を得る事ができます。もしこの ExponentialRampToValue イベント以降のイベントがない場合 \(t \geq T_1\) に対して \(v(t) = V_1\) となります
もしこのイベントより前にイベントが存在しない場合、指数カーブは
setValueAtTime(value, currentTime)
が呼び出されたかのように動作します。ここでvalue
は属性の現在の値でcurrentTime
はexponentialRampToValueAtTime()
が呼び出された時刻のコンテキストのcurrentTime
です。もし、前のイベントが
SetTarget
イベントの場合、\(T_0\) と \(V_0\) はSetTarget
オートメーションの現在の時刻と値から選択されます。SetTarget
イベントがまだ開始されていない場合、\(T_0\) はイベントの開始時刻であり、\(V_0\) はSetTarget
イベントの開始直前の値です。この場合ExponentialRampToValue
イベントは実質的にSetTarget
イベントを置き換えます。もしSetTarget
イベントが既に開始されている場合、\(T_0\) は現在のコンテキストの時刻であり、\(V_0\) は時刻 \(T_0\) での現在のSetTarget
オートメーションの値です。どちらの場合も、オートメーション曲線は連続しています。AudioParam.exponentialRampToValueAtTime() メソッドの引数 パラメーター 型 Null可 省略可 説明 value
float ✘ ✘ パラメーターが指数変化により指定された時刻に到達する値です。この値が 0 の場合、 RangeError
例外を発生します ( MUST )。endTime
double ✘ ✘ AudioContext
のcurrentTime
属性と同じ時間軸で、指数変化が終了する時刻です。もしendTime
が負の値または有限数でない場合RangeError
例外を発生します ( MUST )。もし endTime がcurrentTime
よりも小さい場合、currentTime
にクランプされます。戻り値:AudioParam
-
AudioParam/linearRampToValueAtTime
FirefoxNoneSafari6+Chrome14+
Opera15+Edge79+
Edge (Legacy)12+IENone
Firefox for AndroidNoneiOS Safari?Chrome for AndroidNoneAndroid WebView37+Samsung Internet1.0+Opera Mobile14+linearRampToValueAtTime(value, endTime)
-
前にスケジュールされているパラメーター値から指定された値まで、直線的に連続して値を変化させる事をスケジュールします。
時間範囲 \(T_0 \leq t < T_1\) ( ここで \(T_0\) は前のイベントの時刻、\(T_1\) はこのメソッドで指定された
endTime
です ) の間の値は次のように計算されます:$$ v(t) = V_0 + (V_1 - V_0) \frac{t - T_0}{T_1 - T_0} $$
ここで \(V_0\) は時刻 \(T_0\) での値、\(V_1\) はこのメソッドで指定された
value
パラメーターです。もしこの LinearRampToValue イベント以降にイベントがない場合、\(t \geq T_1\) に対して \(v(t) = V_1\) となります。
もしこのイベントにより前にイベントが存在しない場合、直線変化は
setValueAtTime(value, currentTime)
が呼び出されたかのように動作します。ここでvalue
は属性の現在の値でcurrentTime
はlinearRampToValueAtTime()
が呼び出されたときのコンテキストのcurrentTime
です。もし、前のイベントが
SetTarget
イベントの場合、 \(T_0\) と \(V_0\) はSetTarget
オートメーションの現在の時刻と値から選択されます。つまりSetTarget
イベントがまだ開始されていない場合、 \(T_0\) はイベントの開始時刻であり、 \(V_0\) はSetTarget
イベントの開始直前の値です。この場合、LinearRampToValue
イベントは実質的にSetTarget
イベントを置き換えます。SetTarget
イベントが既に開始されている場合、 \(T_0\) は現在のコンテキストの時刻であり、 \(V_0\) は時刻 \(T_0\) での現在のSetTarget
オートメーションの値です。どちらの場合も、オートメーションの曲線は連続しています。AudioParam.linearRampToValueAtTime() メソッドの引数 パラメーター 型 Null可 省略可 説明 value
float ✘ ✘ 与えられた時刻にパラメーターが直線変化で到達する値です。 endTime
double ✘ ✘ AudioContext
のcurrentTime
属性と同じ時間軸で、オートメーションが終了する時刻です。もしendTime
が負の値または有限数でない場合RangeError
例外を発生します ( MUST )。 もし endTime がcurrentTime
よりも小さい場合、currentTime
にクランプされます。戻り値:AudioParam
-
In all current engines.
Firefox25+Safari6+Chrome14+
Opera15+Edge79+
Edge (Legacy)12+IENone
Firefox for Android25+iOS SafariYesChrome for Android18+Android WebView37+Samsung Internet1.0+Opera Mobile14+setTargetAtTime(target, startTime, timeConstant)
-
指定の時刻から、指定の時定数によって指数的に目標の値に漸近を開始します。様々な使い方がありますが、これは ADSR エンベロープの "ディケイ" および "リリース" を実装する際に役立ちます。値は指定の時刻に即、目標値になるのではなく徐々に目標値に向かって変化する事に注意してください。
時間範囲 \(T_0 \leq t\) について、ここで \(T_0\) は
startTime
パラメーターの時刻として :$$ v(t) = V_1 + (V_0 - V_1)\, e^{-\left(\frac{t - T_0}{\tau}\right)} $$
ここで \(V_0\) は \(T_0\) (
startTime
パラメーター ) での初期値 ([[current value]]
属性の値 )、 \(V_1\) はtarget
パラメーター、そして \(\tau\) はtimeConstant
パラメーターです。LinearRampToValue
またはExponentialRampToValue
イベントがこのイベントの後に続く場合、その動作はそれぞれlinearRampToValueAtTime()
またはexponentialRampToValueAtTime()
で説明しています。他のすべてのイベントの場合は、SetTarget
イベントは次のイベントの時点で終了します。AudioParam.setTargetAtTime() メソッドの引数 パラメーター 型 Null可 省略可 説明 target
float ✘ ✘ パラメーターが指定の時刻から変化を 開始 する際の目標値です。 startTime
double ✘ ✘ AudioContext
のcurrentTime
属性と同じ時間軸で指数的漸近を開始する時刻です。もしstart
が負の値または有限数でない場合はRangeError
例外を発生します ( MUST )。 もし、startTime
がcurrentTime
よりも小さい場合、currentTime
の値にクランプされます。timeConstant
float ✘ ✘ 目標値に漸近する一次フィルター ( 指数 ) の時定数です。この値が大きいと変化はゆっくりになります。値は負の値ではならず ( MUST )、そうでない場合 RangeError
例外を発生します ( MUST )。 もしtimeConstant
がゼロの場合、出力値は直ちに最終値にジャンプします。より正確には、 timeConstant は、ステップ入力応答 ( 0 から 1 への遷移 ) が与えられた場合、一次線形連続時間不変システムが値 \(1 - 1/e\) ( 約 63.2% ) に達する時間です。戻り値:AudioParam
-
In all current engines.
Firefox25+Safari6+Chrome14+
Opera15+Edge79+
Edge (Legacy)12+IENone
Firefox for Android25+iOS SafariYesChrome for Android18+Android WebView37+Samsung Internet1.0+Opera Mobile14+setValueAtTime(value, startTime)
-
指定の時刻になるとパラメーター値を変更するようにスケジュールします。
もしこの
SetValue
イベントの後にもうイベントがない場合、 \(t \geq T_0\) に対して \(v(t) = V\) ここで \(T_0\) はstartTime
パラメーター 、そして \(V\) はvalue
パラメーターの値です。別の言い方をすれば、値は定数のまま保持されます。もしこの
SetValue
イベントの次のイベント ( 時刻は \(T_1\) ) がLinearRampToValue
またはExponentialRampToValue
でない場合、\(T_0 \leq t < T_1\):$$ v(t) = V $$
別の言い方をすれば、値に "ステップ" を作ってこの期間、定数のまま保持されます。
この
SetValue
イベントに続く次のイベントがLinearRampToValue
またはExponentialRampToValue
の場合、linearRampToValueAtTime()
またはexponentialRampToValueAtTime()
をそれぞれ参照してください。AudioParam.setValueAtTime() メソッドの引数 パラメーター 型 Null可 省略可 説明 value
float ✘ ✘ 指定の時刻にパラメーターが変化する値です。 startTime
double ✘ ✘ BaseAudioContext
のcurrentTime
属性と同じ時間軸で与えられた値に変化する時刻です。 もしstartTime
が負の値または有限数でない場合はRangeError
例外を発生します ( MUST )。 もし startTime がcurrentTime
よりも小さい場合、currentTime
にクランプされます。戻り値:AudioParam
-
AudioParam/setValueCurveAtTime
In all current engines.
Firefox25+Safari6+Chrome14+
Opera15+Edge79+
Edge (Legacy)12+IENone
Firefox for Android25+iOS SafariYesChrome for Android18+Android WebView37+Samsung Internet1.0+Opera Mobile14+setValueCurveAtTime(values, startTime, duration)
-
指定の時刻と期間に対して、任意の値の配列を設定します。値の個数は必要とされる期間に合うようにスケーリングされます。
\(T_0\) を
startTime
、\(T_D\) をduration
、\(V\) をvalues
配列、\(N\) をvalues
配列の長さとすると、期間 \(T_0 \le t < T_0 + T_D\) の間、次のようになります:$$ \begin{align*} k &= \left\lfloor \frac{N - 1}{T_D}(t-T_0) \right\rfloor \\ \end{align*} $$
そして \(v(t)\) は \(V[k]\) と \(V[k+1]\) の間で直線補間されます。
曲線の期間が終了した後、(\(t \ge T_0 + T_D\)) に対して値は ( もしあれば ) 別のオートメーションイベントまで、最後の曲線の値を保持します。
時刻 \(T_0 + T_D\) 、値 \(V[N-1]\) として暗黙的な
setValueAtTime()
の呼び出しが行われ、以後のオートメーションはsetValueCurveAtTime()
イベントの終わりから開始するようになります。AudioParam.setValueCurveAtTime() メソッドの引数 パラメーター 型 Null可 省略可 説明 values
sequence<float> ✘ ✘ パラメーター値の曲線を表す float 値のシーケンスです。これらの値は、指定された時刻から開始される、指定された期間に割り当てられます。このメソッドが呼び出されると、オートメーションのためにカーブの内部的なコピーが作成されます。そのため、それ以降に渡した配列の中身を変更しても AudioParam
に対する効果はありません。この属性のsequence<float>
オブジェクトの長さが 2 未満の場合、InvalidStateError
が発生します ( MUST )。startTime
double ✘ ✘ AudioContext
のcurrentTime
属性と同じ時間軸の曲線の適用を開始する時刻です。もしstartTime
が負の値または有限数でない場合RangeError
例外を発生します ( MUST )。 もし startTime がcurrentTime
よりも小さい場合、currentTime
の値にクランプされます。duration
double ✘ ✘ ( startTime
パラメーターの時刻の後 )values
パラメーターに基づいて値が計算される期間の秒数です。もしduration
が ( 訳注: 0 を含まない ) 厳密に正でないか、有限数でない場合、RangeError
例外を発生します ( MUST )。戻り値:AudioParam
1.6.3. 値の計算
AudioParam
には、単純パラメーター と 複合パラメーター という 2 つの異なる種類があります。単純パラメーター ( デフォルト ) は、 AudioNode
の最終的なオーディオ出力を計算するために単独で使用されます。複合パラメーター は、他の AudioParam
と一緒に合わせて計算された値が、 AudioNode
の出力を計算するための入力となる AudioParam
です。
computedValue はオーディオ DSP を制御する最終的な値であり、オーディオレンダリングスレッドによって、それぞれのレンダリング量子の時刻に計算します。
AudioParam
の値の計算は 2 つの部分から成ります:
-
value
属性と オートメーションイベント から計算される paramIntrinsicValue の値。 -
オーディオ DSP を制御する最終値であり、各 レンダリング量子 中にオーディオレンダリングスレッドによって計算される paramComputedValue 。
これらの値は次のように計算されなくてはなりません (MUST):
-
paramIntrinsicValue は毎回計算されます。これは
value
属性に直接設定された値であるか、以前または現在 オートメーションイベント が存在するならばこれらのイベントから計算された値です。 もしその時間範囲からオートメーションイベントが削除された場合 paramIntrinsicValue 値は変更されずvalue
属性が直接設定されるか時間範囲にオートメーションイベントが追加されるまで、以前の値のままになります。 -
[[current value]]
を この レンダリング量子 の先頭での paramIntrinsicValue の値にします。 -
paramComputedValue は paramIntrinsicValue の値と 入力される AudioParam バッファ の値の合計です。 合計が
NaN
の場合、合計をdefaultValue
に置き換えます。 -
この
AudioParam
が 複合パラメーター の場合、他のAudioParam
と組み合わせてその最終値を計算します。 -
computedValue を paramComputedValue に設定します。
computedValue の 公称範囲 は、このパラメーターが実質的に持つことができる最小値と最大値です。 単純パラメーター の場合、 computedValue はこのパラメーターの 単純な公称範囲 内にクランプされます。 複合パラメーター では、複合される別の AudioParam
の値と合わせて計算された後、最終的な値が 公称範囲 にクランプされます。
オートメーションメソッドを使用する場合にも、クランプは依然として適用されます。ただし、オートメーション自体はクランプが全くないかのように実行され、オートメーションの値が出力に適用される際にのみ、上記のクランプが実行されます。
N. p. setValueAtTime( 0 , 0 ); N. p. linearRampToValueAtTime( 4 , 1 ); N. p. linearRampToValueAtTime( 0 , 2 );
曲線の最初の勾配は 4 であり、最大値 1 に達すると出力は一定に保たれます。最後に、時刻 2 の近くで、曲線の傾きは -4 になります。これを図示したのが下のグラフで、破線はクリッピングされない場合に何が起こったかを示し、実線は公称範囲へのクリッピングによる audioparam の実際の予想される動作を示しています。

1.6.4. AudioParam
オートメーションの例

const curveLength= 44100 ; const curve= new Float32Array( curveLength); for ( const i= 0 ; i< curveLength; ++ i) curve[ i] = Math. sin( Math. PI* i/ curveLength); const t0= 0 ; const t1= 0.1 ; const t2= 0.2 ; const t3= 0.3 ; const t4= 0.325 ; const t5= 0.5 ; const t6= 0.6 ; const t7= 0.7 ; const t8= 1.0 ; const timeConstant= 0.1 ; param. setValueAtTime( 0.2 , t0); param. setValueAtTime( 0.3 , t1); param. setValueAtTime( 0.4 , t2); param. linearRampToValueAtTime( 1 , t3); param. linearRampToValueAtTime( 0.8 , t4); param. setTargetAtTime( .5 , t4, timeConstant); // Compute where the setTargetAtTime will be at time t5 so we can make // the following exponential start at the right point so there’s no // jump discontinuity. From the spec, we have // v(t) = 0.5 + (0.8 - 0.5)*exp(-(t-t4)/timeConstant) // Thus v(t5) = 0.5 + (0.8 - 0.5)*exp(-(t5-t4)/timeConstant) param. setValueAtTime( 0.5 + ( 0.8 - 0.5 ) * Math. exp( - ( t5- t4) / timeConstant), t5); param. exponentialRampToValueAtTime( 0.75 , t6); param. exponentialRampToValueAtTime( 0.05 , t7); param. setValueCurveAtTime( curve, t7, t8- t7);
1.7. AudioScheduledSourceNode
インターフェース
In all current engines.
Opera44+Edge79+
Edge (Legacy)NoneIENone
Firefox for Android53+iOS Safari14+Chrome for Android57+Android WebView57+Samsung Internet7.0+Opera Mobile43+
このインターフェースは、 AudioBufferSourceNode
、 ConstantSourceNode
、および OscillatorNode
などのソースノードの共通の機能を表します。
( start()
を呼び出すことによって ) ソースが開始されるより前は、ソースノードは無音 ( 0 ) を出力しなければなりません ( MUST )。stop()
を呼び出すことによって ) ソースが停止した後、ソースは無音 ( 0 ) を出力しなければなりません ( MUST )。
AudioScheduledSourceNode
は直接インスタンス化することはできませんが、代わりにソースノードの具体的なインターフェースに拡張されています。
AudioScheduledSourceNode
は関連付けられている BaseAudioContext
の currentTime
が AudioScheduledSourceNode
が開始するように設定されている時間以上で、停止するように設定されている時間未満の場合に、再生中 になります。
AudioScheduledSourceNode
は作成時から内部にブーリアンスロット [[source started]]
を持っており、最初は false に設定されています。
[Exposed =Window ]interface :
AudioScheduledSourceNode AudioNode {attribute EventHandler onended ;undefined start (optional double when = 0);undefined stop (optional double when = 0); };
1.7.1. 属性
-
AudioScheduledSourceNode/ended_event
In all current engines.
Firefox25+Safari7+Chrome30+
Opera17+Edge79+
Edge (Legacy)12+IENone
Firefox for Android25+iOS Safari7+Chrome for Android30+Android WebView37+Samsung Internet2.0+Opera Mobile18+AudioScheduledSourceNode/onended
In all current engines.
Firefox25+Safari7+Chrome30+
Opera17+Edge79+
Edge (Legacy)12+IENone
Firefox for Android25+iOS Safari7+Chrome for Android30+Android WebView37+Samsung Internet2.0+Opera Mobile18+onended
, EventHandler 型 -
この属性は
AudioScheduledSourceNode
型のノードに送られる ended イベントのEventHandler
( HTML[HTML] で説明されています ) を設定します。ソースノードが ( 実際のノードによって定められた方法で ) 再生を停止した時Event
型のイベント ( HTML [HTML] で説明されています ) がイベントハンドラーに送られます。すべての
AudioScheduledSourceNode
はstop()
によって設定された停止時間に達するとonended
イベントが発行されます。AudioBufferSourceNode
の場合、再生がduration
の時間に達したか、buffer
全体を再生し終わった場合にも、イベントが送出されます。
1.7.2. メソッド
-
AudioScheduledSourceNode/start
In all current engines.
Firefox25+Safari6.1+Chrome24+
Opera15+Edge79+
Edge (Legacy)12+IENone
Firefox for Android25+iOS Safari7+Chrome for Android25+Android WebView37+Samsung Internet1.5+Opera Mobile14+start(when)
-
指定した時刻に音を再生するようにスケジュールします。
このメソッドが呼ばれると以下の手順を実行します:-
もしこの
AudioScheduledSourceNode
の内部スロット[[source started]]
が true ならば、InvalidStateError
例外を発生します ( MUST )。 -
後述するパラメーターの制約のために発生するエラーがないかを調べます。もし何らかの例外が発生した場合、以降のステップを中止します。
-
この
AudioScheduledSourceNode
の内部スロット[[source started]]
をtrue
に設定します。 -
メッセージ内のパラメーター値を含めて
AudioScheduledSourceNode
を開始するための 制御メッセージをキューに入れます。 -
以下の条件が満たされている場合には、レンダリングスレッドで実行 するための 制御メッセージ を関連付けられた
AudioContext
に 送信します。-
コンテキストの
[[制御スレッドの状態]]
が "suspended
" である。 -
コンテキストが スタート可能 である。
-
[[suspended by user]]
フラグがfalse
である。
注 : これら(訳注: の条件が成立している事)によって
AudioContext
はstart()
で開始できます。そうでなければ スタート可能 ではありません。 -
AudioScheduledSourceNode.start(when) メソッドの引数 パラメーター 型 Null可 省略可 説明 when
double ✘ ✔ when
パラメーターは、サウンドの再生開始時刻を秒単位で表します。これは、AudioContext
のcurrentTime
属性と同じ時間軸を使用します。いつAudioScheduledSourceNode
が信号を出力するかは開始時刻に依存し、when
の正確な値は常に丸めずにサンプルフレーム単位で使用されます。この値に 0 が渡された場合、または値がcurrentTime
よりも小さい場合は、音が即時に再生されます。もしwhen
が負の場合にはRangeError
例外を発生します ( MUST )。戻り値:undefined
-
-
In all current engines.
Firefox25+Safari6.1+Chrome24+
Opera15+Edge79+
Edge (Legacy)12+IENone
Firefox for Android25+iOS Safari7+Chrome for Android25+Android WebView37+Samsung Internet1.5+Opera Mobile14+stop(when)
-
正確な時刻に音の再生を停止するようにスケジュールします。もし
stop
がすでに呼び出された後に再度呼び出された場合は、最後の呼び出しだけが適用されます。後続のコールの前にバッファがすでに停止していない限り、前回の呼び出しで設定された停止時刻は適用されません。バッファがすでに停止している場合は、さらにstop
を呼び出しても効果はありません。スケジュールされた開始時刻よりも前に停止時刻に達すると、音は再生されません。このメソッドが呼ばれた時、以下のステップを実行します:-
もしこの
AudioScheduledSourceNode
の内部スロット[[source started]]
がtrue
でない時、InvalidStateError
例外を発生します (MUST)。 -
後述するパラメーターの制約のために発生するエラーがないかを調べます。
-
パラメーター値を含めて
AudioScheduledSourceNode
を停止するための 制御メッセージをキューに入れます。
もしノードがAudioBufferSourceNode
の場合、AudioBufferSourceNode
を停止する 制御メッセージ を実行することは、再生アルゴリズム のhandleStop()
関数を呼び出すことを意味します。AudioScheduledSourceNode.stop(when) メソッドの引数 パラメーター 型 Null可 省略可 説明 when
double ✘ ✔ when
パラメーターは、ソースの再生を停止する時間 ( 秒 ) を示します。これは、AudioContext
のcurrentTime
属性と同じ時間軸を使用します。この値に 0 が渡された場合、または値がcurrentTime
よりも小さい場合は、音の再生は即時に停止します。もしwhen
が負の場合にはRangeError
例外を発生します ( MUST )。戻り値:undefined
1.8.
AnalyserNode
インターフェースこのインターフェースはリアルタイムの周波数および時間領域の分析を可能にするノードを表します。オーディオストリームは加工されずに入力から出力に渡されます。
プロパティ 値 説明 numberOfInputs
1 numberOfOutputs
1 この出力は接続されずに放置される事もあります。 channelCount
2 channelCountMode
" max
"channelInterpretation
" speakers
"tail-time No In all current engines.
Firefox25+Safari6+Chrome14+
Opera15+Edge79+
Edge (Legacy)12+IENone
Firefox for Android25+iOS Safari6+Chrome for Android18+Android WebView37+Samsung Internet1.0+Opera Mobile14+[
Exposed =Window ]interface
:AnalyserNode AudioNode {constructor (BaseAudioContext
,context optional AnalyserOptions
= {});options undefined getFloatFrequencyData (Float32Array
);array undefined getByteFrequencyData (Uint8Array
);array undefined getFloatTimeDomainData (Float32Array
);array undefined getByteTimeDomainData (Uint8Array
);array attribute unsigned long fftSize ;readonly attribute unsigned long frequencyBinCount ;attribute double minDecibels ;attribute double maxDecibels ;attribute double smoothingTimeConstant ; };1.8.1. コンストラクター
-
Firefox53+SafariNoneChrome55+
Opera42+Edge79+
Edge (Legacy)NoneIENone
Firefox for Android53+iOS SafariNoneChrome for Android55+Android WebView55+Samsung Internet6.0+Opera Mobile42+AnalyserNode(context, options)
-
コンストラクターが
BaseAudioContext
c とオプションオブジェクト option を指定して呼び出される場合、ユーザーエージェントは引数の context と options を使って AudioNode this を初期化 しなくてはなりません ( MUST )。AnalyserNode.constructor() メソッドの引数 パラメーター 型 Null可 省略可 説明 context
BaseAudioContext ✘ ✘ 新しく作成される AnalyserNode
が 関連付け られるBaseAudioContext
です。options
AnalyserOptions ✘ ✔ この AnalyserNode
のオプションの初期パラメーター値です。
1.8.2. 属性
-