The loopStart
property of the AudioBufferSourceNode
interface is a floating-point value indicating, in seconds, where in the AudioBuffer
the restart of the play must happen.
The loopStart
property's default value is 0
.
Syntax
AudioBufferSourceNode.loopStart = startOffsetInSeconds; startOffsetInSeconds = AudioBufferSourceNode.loopStart;
Value
A floating-point number indicating the offset, in seconds, into the audio buffer at which each loop should begin during playback. This value is only used when the loop
parameter is true
.
Example
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 slider controls are used to change the playbackRate
, loopStart
, and loopEnd
properties on the fly.
When the audio is played to the end, it loops, but you can control how long the loops last by altering loopStart
and loopEnd
. For example, if you set their values to 20 and 25, respectively, the audio will start to loop between 20 and 25 seconds in to the track.
For a full working example, see this code running live, or view the source.
function getData() { source = audioCtx.createBufferSource(); request = new XMLHttpRequest(); request.open('GET', 'viper.ogg', true); request.responseType = 'arraybuffer'; request.onload = function() { var audioData = request.response; audioCtx.decodeAudioData(audioData, function(buffer) { myBuffer = buffer; songLength = buffer.duration; source.buffer = myBuffer; source.playbackRate.value = playbackControl.value; source.connect(audioCtx.destination); source.loop = true; loopstartControl.setAttribute('max', Math.floor(songLength)); loopendControl.setAttribute('max', Math.floor(songLength)); }, function(e){"Error with decoding audio data" + e.err}); } request.send(); } ... loopstartControl.oninput = function() { source.loopStart = loopstartControl.value; loopstartValue.innerHTML = loopstartControl.value; } loopendControl.oninput = function() { source.loopEnd = loopendControl.value; loopendValue.innerHTML = loopendControl.value; }
Specifications
Specification | Status | Comment |
---|---|---|
Web Audio API The definition of 'loopStart' in that specification. |
Working Draft |
Browser compatibility
Feature | Chrome | Edge | Firefox (Gecko) | Internet Explorer | Opera | Safari (WebKit) |
---|---|---|---|---|---|---|
Basic support | 14 webkit | (Yes) | 23 | No support | 15 webkit 22 (unprefixed) |
6 webkit |
Feature | Android | Chrome | Edge | Firefox Mobile (Gecko) | Firefox OS | IE Phone | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|---|---|
Basic support | No support | 28 webkit | (Yes) | 25 | 1.2 | No support | No support | 6 webkit |