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
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.
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