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

Report problems with this compatibility data on GitHub
desktopmobile
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
createBufferSource

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support

Voir aussi