AudioBufferSourceNode.loop

loopAudioBufferSourceNode のプロパティで、 AudioBuffer の末端に達した時に、音声を繰り返し再生するべきかを示す論理値です。

loop プロパティの既定値は falseです。

論理値で、繰り返しが有効な場合は true 、それ以外は false です。

ループが有効である場合、 start() が呼ばれると音声は開始点として指定された場所から再生されます。 loopEnd で指定された場所に達すると、音声は loopStart で指定された地点に戻って再生され続けます。

この例では、 AudioContext.decodeAudioData() 関数は音声トラックをデコードし AudioBufferSourceNode に追加するために使用されています。再生・停止のためにボタンが配置され、スライダーが playbackRate プロパティを逐次変更するために使用されています。音声はループして再生されます。

js
function getData() {
  source = audioCtx.createBufferSource();
  request = new XMLHttpRequest();

  request.open("GET", "viper.ogg", true);

  request.responseType = "arraybuffer";

  request.onload = () => {
    const audioData = request.response;

    audioCtx.decodeAudioData(
      audioData,
      (buffer) => {
        myBuffer = buffer;
        source.buffer = myBuffer;
        source.playbackRate.value = playbackControl.value;
        source.connect(audioCtx.destination);
        source.loop = true;
      },

      (e) => console.error(`Error with decoding audio data: ${e.err}`),
    );
  };

  request.send();
}

// wire up buttons to stop and play audio, and range slider control

play.onclick = () => {
  getData();
  source.start(0);
  play.setAttribute("disabled", "disabled");
  playbackControl.removeAttribute("disabled");
};

仕様書

Specification
Web Audio API
# dom-audiobuffersourcenode-loop

ブラウザーの対応

BCD tables only load in the browser

関連情報