AudioBufferSourceNode.playbackRate
La propriété playbackRate
de l'interface AudioBufferSourceNode
est un AudioParam
de type k-rate qui définit la vitesse à laquelle le contenu audio sera lu.
Une valeur de 1.0 (c'est ) indique que le son doit être lu à la vitesse de son taux d'échantillonnage, une valeur inférieure qu'il doit être lu plus lentement, et une valeur supérieure plus rapidement. la valeur par défaut est 1.0
. Pour toute autre valeur l'AudioBufferSourceNode
rééchantillone le son avant de l'envoyer vers la sortie.
Syntaxe
var source = contexteAudio.createBufferSource();
source.playbackRate.value = 1.25; // proportion : 25% plus rapide que la vitesse normale
Note : Bien que le AudioParam
renvoyé soit en lecture seule, la valeur qu'il représente ne l'est pas.
Valeur
Un AudioParam
dont la value
est un nombre flottant à double précision, qui représente la vitesse de lecture d'un son en proportion décimale du taux d'échantillonnage original.
Considérons un buffer audio échantillonné à 44.1 kHz (44,100 échantillons par seconde). Observons l'effet de quelques valeurs de la propriété playbackRate
:
- un
playbackRate
de 1.0 entraîne une lecture à vitesse originale : 44,100 Hz. - un
playbackRate
de 0.5 entraîne une lecture à la moitié de la vitesse originale : 22,050 Hz. - un
playbackRate
de 2.0 entraîne une lecture au double de la vitesse originale : 88,200 Hz.
Exemple
Dans cet exemple, la fonction AudioContext.decodeAudioData
est utilisée pour décoder une piste audio et la mettre dans un AudioBufferSourceNode
. L'interface fournit deux boutons pour démarrer et arrêter la lecture, et des sliders pour modifier les propriétés playbackRate
, loopStart
et loopEnd
à la volée.
Note : Voir l'exemple complet en direct et son code source.
<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) {
"Erreur lors du décodage des données " + 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;
};
Spécifications
Specification |
---|
Web Audio API # dom-audiobuffersourcenode-playbackrate |
Compatibilité des navigateurs
BCD tables only load in the browser