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 インターフェイスのメソッドで、 このメソッドは、バッファーに含まれる音声データの再生を予約したり、すぐに再生を開始したりするために使用されます。

構文

js
start(when)
start(when, offset)
start(when, offset, duration)

引数

when 省略可

音が鳴り始めるべき時刻(秒単位)。 AudioContext が使用するのと同じ時間座標系で指定します。もし when が (AudioContext.currentTime よりも小さいか、 0 であれば、音の再生はすぐに開始されます。既定値は 0 です。

offset 省略可

音声バッファー内で再生を始めるべき時刻を、 AudioContext と同じ時間座標系で秒単位で指定したオフセットです。例えば、 10 秒の音声クリップの半分から再生を始めるには、 offset は 5 となります。既定値である 0 は、音声バッファーの先頭から再生を始めます。再生される音声の終わりを過ぎたオフセット(音声バッファーの durationloopEnd 属性に基づく)は、許容範囲内の最大値に暗黙に収められます。サウンドへのオフセットの計算は、現在の再生速度ではなく、音声バッファー本来のサンプルレートを使用して行われるため、サウンドが通常の 2 倍の速度で再生されている場合でも、 10 秒の音声バッファーの中間の点は 5 となります。

duration 省略可

サウンドの再生時間を秒単位で指定します。この引数が指定されなかった場合、サウンドは自然に終了するか、 stop() メソッドを使用して停止されるまで再生されます。この引数を使用すると、 start(when, offset) を呼び出してから stop(when+duration) を使用するのと機能的に同じになります。

返値

なし (undefined)。

例外

TypeError

3 つの時間引数のうち 1 つ以上に負の値が指定された場合に発生します。時間物理学の法則を改ざんしようとしないでください。

InvalidStateError DOMException

start() が既に呼び出されていた場合に発生します。この関数は AudioBufferSourceNode が生きている間に一度だけ呼び出すことができます。

最も単純な例は、音声バッファー再生を最初から始めるだけです。この場合、引数を指定する必要はありません。

js
source.start();

次はそれよりも複雑な再生方法です。1 秒待った後、音声バッファーの 3 秒経過した位置から、10 秒間再生します。

js
source.start(audioCtx.currentTime + 1, 3, 10);

メモ: start() の使い方の完全な例は AudioContext.decodeAudioData() を参照してください。例をライブで試してみることや、この例のソースを見てみることもできます。

仕様書

Specification
Web Audio API
# dom-audiobuffersourcenode-start

ブラウザーの互換性

BCD tables only load in the browser

関連情報