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