Join MDN and developers like you at Mozilla's View Source conference, 12-14 September in Berlin, Germany. Learn more at https://viewsourceconf.org

AudioBufferSourceNode

L'interface AudioBufferSourceNode représente une source audio constituée de données audio en mémoire, stockées dans un AudioBuffer. C'est un AudioNode qui agit comme une source audio.

AudioBufferSourceNode n'a pas d'entrée et exactement une sortie. Le nombre de canaux en sortie correspond au nombre spécifié dans l'attribut AudioBufferSourceNode.buffer du AudioBuffer. Si aucun buffer n'est spécifié, c'est-à-dire si la valeur de l'attribut est NULL, la sortie contient un seul canal silencieux.
Un
AudioBufferSourceNode ne peut être joué qu'une seule fois; autrement dit un seul appel à la fonction AudioBufferSourceNode.start() est autorisé. Si on a besoin de rejouer le son, il faut créer un autre AudioBufferSourceNode. Ces noeuds ne demandent pas beaucoup de ressource, et les Those nodes are cheap to create, and AudioBuffers peuvent être réutilisés. On dit que les AudioBufferSourceNodes doivent être utilisés en mode "one shot": une fois que la lecture est lancée, toutes les références peuvent être supprimées, et elles seront collectées par le ramasse-miette automatiquement.

Plusieurs appels à la fonction AudioBufferSourceNode.stop() sont autorisés. Le dernier appel remplace le précédent, à condition que le AudioBufferSourceNode n'ait pas déjà atteint la fin du buffer.

The AudioBufferSourceNode takes the content of an AudioBuffer and m

 

Nombre d'entrées 0
Nombre de sorties 1
Nombre de canaux défini par l'objet AudioBuffer associé

Propriétés

Hérite des propriétés de son parent, AudioNode.

AudioBufferSourceNode.buffer
AudioBuffer qui définit la ressource à jouer; quand il a la valeur NULL, définit un canal unique silencieux.
AudioBufferSourceNode.detune
AudioParam de type k-rate représentant le désaccordage de la fréquence exprimé en cents. Sa valeur par défaut est 0.
AudioBufferSourceNode.loop
Attribut booléen indiquant si la ressource doit être lue de nouveau lorsque la fin de l'AudioBuffer est atteinte. Sa valeur par défaut est false.
AudioBufferSourceNode.loopStart
Nombre flottant à double précision indiquant, en secondes, à quel moment de l'AudioBuffer la lecture doit reprendre. Sa valeur par défaut est 0.
AudioBufferSourceNode.loopEnd
Nombre flottant à double précision indiquant, en secondes, à quel moment de l'AudioBuffer la relecture doit s'arrêter (et éventuellement boucler à nouveau). Sa valeur par défaut est 0.
AudioBufferSourceNode.playbackRate
AudioParam de type a-rate qui définit le facteur de vitesse à laquelle la ressource audio sera jouée. Comme aucune correction de pitch n'est appliquée sur la sortie, il peut être utilisé pour modifier le pitch de l'échantillon.

Gestionnaires d'événements

AudioBufferSourceNode.onended
Est un EventHandler contenant le rappel associé avec l'évènement fin.

 

Méthodes

Hérite des propriétés de son parent, AudioNode.

AudioBufferSourceNode.start()
Planifie le début de la lecture de la ressource audio.
AudioBufferSourceNode.stop()
Planifie la fin de la lecture d'une ressource audio.

Exemple

Cet exemple crée un tampon de deux secondes, le remplit avec du bruit blanc et le joue par l'intermédiaire d'un AudioBufferSourceNode.

Note: Vous pouvez aussi exécuter the code, or ragarder le code source.

var contexteAudio = new (window.AudioContext || window.webkitAudioContext)();
var bouton = document.querySelector('button');
var pre = document.querySelector('pre');
var monScript = document.querySelector('script');

pre.innerHTML = monScript.innerHTML;

// Stéréo
var canaux = 2;

// Crée un tampon vide de deux secondes
// au taux d'échantillonnage du AudioContext
var compteurTrames = contexteAudio.sampleRate * 2.0;

var myArrayBuffer = contexteAudio.createBuffer(2, compteurTrames, contexteAudio.sampleRate);

bouton.onclick = function() {
  // remplit le tampon avec du bruit blanc;
  // valeurs aléatoires entre -1.0 et 1.0
  for (var canal = 0; canal < canaux; canal++) {
   // crée le ArrayBuffer qui contient les données
   var nowBuffering = myArrayBuffer.getChannelData(canal);
   for (var i = 0; i < compteurTrames; i++) {
     // Math.random() est compris entre [0; 1.0]
     // audio doit être compris entre [-1.0; 1.0]
     nowBuffering[i] = Math.random() * 2 - 1;
   }
  }

  // crée AudioBufferSourceNode.
  // c'est AudioNode utilisé pour lire un AudioBuffer
  var source = contexteAudio.createBufferSource();
  // initialise le tampon du AudioBufferSourceNode
  source.buffer = myArrayBuffer;
  // connecte l'AudioBufferSourceNode avec la destination
  // de façon à ce qu'on puisse entendre le son
  source.connect(contexteAudio.destination);
  // lance la lecture de la source
  source.start();
}

Note: Pour un exemple de decodeAudioData, voir la page AudioContext.decodeAudioData.

Spécifications

Spécification Statut Commentaire
Web Audio API
La définition de 'AudioBufferSourceNode' dans cette spécification.
Version de travail  

Compatibilité navigateurs

Fonctionnalité Chrome Firefox (Gecko) Internet Explorer Opera Safari (WebKit)
Support basique 14 webkit[1] 23.0 (23.0) Pas de support 15 webkit
22
6 webkit
propriété detune (Oui) 40.0 (40.0) Pas de support ? ?
Feature Android Chrome Firefox Mobile (Gecko) Firefox OS IE Phone Opera Mobile Safari Mobile
Support basique Pas de support 28 webkit[1] 25.0 (25.0) 1.2 Pas de support Pas de support webkit
propriété detune Pas de support (Oui) (Oui) (Oui) Pas de support Pas de support ?

 

Voir aussi

Étiquettes et contributeurs liés au document

 Contributeurs à cette page : sizvix, dooxe, marie-ototoi, fscholz, teoli, tregagnon, dexterneo
 Dernière mise à jour par : sizvix,