The playbackRate
property of the AudioBufferSourceNode
interface Is a k-rate AudioParam
that defines the speed at which the audio asset will be played.
The default value is 1.0
. When set to another value, the AudioBufferSourceNode
resamples the audio before sending it to the output.
Syntax
var source = audioCtx.createBufferSource();
source.playbackRate.value = 1.25; // play 25% faster than normal speed (1)
Note: Though the AudioParam
returned is read-only, the value it represents is not.
Value
An AudioParam
.
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 a slider control is used to change the playbackRate
property value on the fly.
Note: You can run the example live (or view the source.) Play the song and alter the playback rate for some fun results.
<input class="playback-rate-control" type="range" min="0.25" max="3" step="0.05" value="1">
<span class="playback-rate-value">1.0</span>
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;
source.buffer = myBuffer;
source.playbackRate.value = playbackControl.value;
source.connect(audioCtx.destination);
source.loop = true;
},
function(e){"Error with decoding audio data" + e.err});
}
request.send();
}
// wire up buttons to stop and play audio, and range slider control
play.onclick = function() {
getData();
source.start(0);
play.setAttribute('disabled', 'disabled');
playbackControl.removeAttribute('disabled');
}
stop.onclick = function() {
source.stop(0);
play.removeAttribute('disabled');
playbackControl.setAttribute('disabled', 'disabled');
}
playbackControl.oninput = function() {
source.playbackRate.value = playbackControl.value;
playbackValue.innerHTML = playbackControl.value;
}
Specification
Specification | Status | Comment |
---|---|---|
Web Audio API The definition of 'playbackRate' in that specification. |
Working Draft |