AudioBufferSourceNode.loopEnd
        
        
          
                Baseline
                
                  Widely available
                
                
              
        
        
        
          
                
              
                
              
                
              
        
        
      
      Cette fonctionnalité est bien établie et fonctionne sur de nombreux appareils et versions de navigateurs. Elle est disponible sur tous les navigateurs depuis juillet 2015.
La propriété loopEnd de l'interface AudioBufferSourceNode est un nombre flottant à double précision qui indique, en secondes, à quel moment de l'AudioBuffer la relecture doit s'arrêter, et éventuellement boucler de nouveau en reprenant à la position indiquée par la propriété loopStart. Elle n'est prise en compte que si la propriété loop vaut true.
Syntaxe
var source = contexteAudio.createBufferSource();
source.loopEnd = 3;
Valeur
Un nombre flottant à double précision. La valeur par défaut est 0.
Exemples
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.
Lorsque la lecture de la source audio est terminée, elle boucle. Il est possible de contrôler la durée de la boucle en modifiant loopStart et loopEnd. Par exemple, si leurs valeurs sont fixées à 20 et 25, respectivement, le son bouclera entre la 20ème et la 25ème secondes du morceau.
Note : Voir l'exemple complet et son code source.
function getData() {
  source = contexteAudio.createBufferSource();
  requete = new XMLHttpRequest();
  requete.open('GET', 'viper.ogg', true);
  requete.responseType = 'arraybuffer';
  requete.onload = function() {
    var donneesAudio = requete.response;
    contexteAudio.decodeAudioData(donneesAudio, function(buffer) {
        maMemoireTampon = buffer;
        dureeMorceau = buffer.duration;
        source.buffer = maMemoireTampon;
        source.playbackRate.value = playbackControl.value;
        source.connect(contexteAudio.destination);
        source.loop = true;
        loopstartControl.setAttribute('max', Math.floor(dureeMorceau));
        loopendControl.setAttribute('max', Math.floor(dureeMorceau));
      },
      function(e){"Erreur lors du décodage des données audio " + e.err});
  }
  requete.send();
}
  ...
loopstartControl.oninput = function() {
  source.loopStart = loopstartControl.value;
  loopstartValue.innerHTML = loopstartControl.value;
}
loopendControl.oninput = function() {
  source.loopEnd = loopendControl.value;
  loopendValue.innerHTML = loopendControl.value;
}
Spécifications
| Specification | 
|---|
| Web Audio API> # dom-audiobuffersourcenode-loopend> | 
Compatibilité des navigateurs
Chargement…