AudioBufferSourceNode: start() メソッド
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2021.
start()
は AudioBufferSourceNode
インターフェイスのメソッドで、
このメソッドは、バッファーに含まれる音声データの再生を予約したり、すぐに再生を開始したりするために使用されます。
構文
start(when)
start(when, offset)
start(when, offset, duration)
引数
when
省略可-
音が鳴り始めるべき時刻(秒単位)。
AudioContext
が使用するのと同じ時間座標系で指定します。もしwhen
が (AudioContext.currentTime
よりも小さいか、 0 であれば、音の再生はすぐに開始されます。既定値は 0 です。 offset
省略可-
音声バッファー内で再生を始めるべき時刻を、
AudioContext
と同じ時間座標系で秒単位で指定したオフセットです。例えば、 10 秒の音声クリップの半分から再生を始めるには、offset
は 5 となります。既定値である 0 は、音声バッファーの先頭から再生を始めます。再生される音声の終わりを過ぎたオフセット(音声バッファーのduration
やloopEnd
属性に基づく)は、許容範囲内の最大値に暗黙に収められます。サウンドへのオフセットの計算は、現在の再生速度ではなく、音声バッファー本来のサンプルレートを使用して行われるため、サウンドが通常の 2 倍の速度で再生されている場合でも、 10 秒の音声バッファーの中間の点は 5 となります。 duration
省略可-
サウンドの再生時間を秒単位で指定します。この引数が指定されなかった場合、サウンドは自然に終了するか、
stop()
メソッドを使用して停止されるまで再生されます。この引数を使用すると、start(when, offset)
を呼び出してからstop(when+duration)
を使用するのと機能的に同じになります。
返値
なし (undefined
)。
例外
TypeError
-
3 つの時間引数のうち 1 つ以上に負の値が指定された場合に発生します。時間物理学の法則を改ざんしようとしないでください。
InvalidStateError
DOMException
-
start()
が既に呼び出されていた場合に発生します。この関数はAudioBufferSourceNode
が生きている間に一度だけ呼び出すことができます。
例
最も単純な例は、音声バッファー再生を最初から始めるだけです。この場合、引数を指定する必要はありません。
source.start();
次はそれよりも複雑な再生方法です。1 秒待った後、音声バッファーの 3 秒経過した位置から、10 秒間再生します。
source.start(audioCtx.currentTime + 1, 3, 10);
メモ: start()
の使い方の完全な例は AudioContext.decodeAudioData()
を参照してください。例をライブで試してみることや、この例のソースを見てみることもできます。
仕様書
Specification |
---|
Web Audio API # dom-audiobuffersourcenode-start |
ブラウザーの互換性
BCD tables only load in the browser