AudioBufferSourceNode: loop property
The loop property of the AudioBufferSourceNode
interface is a Boolean indicating if the audio asset must be replayed when the end of
the AudioBuffer is reached.
The loop property's default value is false.
Value
A Boolean which is true if looping is enabled; otherwise, the value is
false.
When looping is enabled, the sound begins playing at the time specified as the start
point when start() is called. When the
time specified by the loopEnd property
is reached, playback continues at the time specified by
loopStart
Examples
In this example, the AudioContext.decodeAudioData() function is used to
decode an audio track and put it into an AudioBufferSourceNode. Buttons
are provided to play and stop the audio playback, and a slider control is used to change
the playbackRate property value on the fly. When the audio is played, it
loops.
Note: You can run the full example live (or view the source.)
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");
};
Specifications
| Specification |
|---|
| Web Audio API # dom-audiobuffersourcenode-loop |
Browser compatibility
BCD tables only load in the browser