BaseAudioContext.createBufferSource()

La méthode createBufferSource() de l’interface BaseAudioContext est utilisée pour créer un nouveau AudioBufferSourceNode, qui peut être employé pour jouer des données audio contenues dans un objet AudioBuffer. Des AudioBuffer peuvent être créés en utilisant BaseAudioContext.createBuffer, ou sont retournés par la méthode BaseAudioContext.decodeAudioData quand elle a terminé de décoder une piste audio avec succès.

Syntaxe

var source = baseAudioContext.createBufferSource();

Retourne

Un AudioBufferSourceNode.

Exemple

Dans cet exemple, on crée un tampon de deux secondes, on le remplit avec du bruit blanc, puis on le joue via un AudioBufferSourceNode. Les commentaires devraient expliquer clairement ce qui se passe.

Note : Vous pouvez également exécuter le code en direct, ou voir la source.

var audioCtx = new (window.AudioContext || window.webkitAudioContext)();
var button = document.querySelector('button');
var pre = document.querySelector('pre');
var myScript = document.querySelector('script');

pre.innerHTML = myScript.innerHTML;

// Stéréo
var channels = 2;
// Crée un tampon stéréo vide de deux secondes au
// taux d’échantillonage de l’AudioContext
var frameCount = audioCtx.sampleRate * 2.0;

var myArrayBuffer = audioCtx.createBuffer(2, frameCount, audioCtx.sampleRate);

button.onclick = function() {
  // Remplit le tampon avec du bruit blanc ;
  // simplement des valeurs aléatoires entre -1.0 et 1.0
  for (var channel = 0; channel < channels; channel++) {
   // Ceci nous donne l’ArrayBuffer qui contient les données
   var nowBuffering = myArrayBuffer.getChannelData(channel);
   for (var i = 0; i < frameCount; i++) {
     // Math.random() est parmi [0; 1.0]
     // audio doit être parmi [-1.0; 1.0]
     nowBuffering[i] = Math.random() * 2 - 1;
   }
  }

  // Obtient un AudioBufferSourceNode.
  // C’est l’AudioNode à utiliser quand nous voulons jouer un AudioBuffer
  var source = audioCtx.createBufferSource();
  // renseigne l’AudioBufferSourceNode avec notre tampon
  source.buffer = myArrayBuffer;
  // connecte l’AudioBufferSourceNode à la
  // destination afin qu’on puisse entendre le son
  source.connect(audioCtx.destination);
  // commence la lecture de la source
  source.start();
}

Spécifications

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

Compatibilité des navigateurs

Update compatibility data on GitHub
OrdinateurMobile
ChromeEdgeFirefoxInternet ExplorerOperaSafariWebview AndroidChrome pour AndroidFirefox pour AndroidOpera pour AndroidSafari sur iOSSamsung Internet
createBufferSourceChrome Support complet 10
Préfixée
Support complet 10
Préfixée
Préfixée Nécessite l'utilisation d'un préfixe : webkit
Edge Support complet OuiFirefox Support complet 53
Notes
Support complet 53
Notes
Notes Originally implemented on AudioContext in Firefox 25.
IE Aucun support NonOpera Support complet 22
Support complet 22
Support complet 15
Préfixée
Préfixée Nécessite l'utilisation d'un préfixe : webkit
Safari Support complet 6
Préfixée
Support complet 6
Préfixée
Préfixée Nécessite l'utilisation d'un préfixe : webkit
WebView Android Support complet OuiChrome Android Support complet 33Firefox Android Support complet 53
Notes
Support complet 53
Notes
Notes Originally implemented on AudioContext in Firefox Android 26.
Opera Android Support complet 22
Support complet 22
Support complet 14
Préfixée
Préfixée Nécessite l'utilisation d'un préfixe : webkit
Safari iOS Aucun support NonSamsung Internet Android Support complet 2.0

Légende

Support complet  
Support complet
Aucun support  
Aucun support
Voir les notes d'implémentation.
Voir les notes d'implémentation.
Cette fonctionnalité nécessite un préfixe particulier ou utilise un autre nom.
Cette fonctionnalité nécessite un préfixe particulier ou utilise un autre nom.

Voir aussi