BaseAudioContext.createBufferSource()

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2021.

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

js
var source = baseAudioContext.createBufferSource();

Retourne

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.

js
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

Specification
Web Audio API
# dom-baseaudiocontext-createbuffersource

Compatibilité des navigateurs

BCD tables only load in the browser

Voir aussi