--- title: AudioBuffer slug: Web/API/AudioBuffer tags: - API - Experimental - Reference - Web Audio API translation_of: Web/API/AudioBuffer ---
{{APIRef("Web Audio API")}}
L'interface AudioBuffer représente une ressource audio stockée en mémoire, créée à partir d'un fichier audio avec la méthode {{ domxref("AudioContext.decodeAudioData()") }}, ou à partir de données brutes avec {{ domxref("AudioContext.createBuffer()") }}. Une fois mises en mémoire dans un AudioBuffer, les données audio sont transférées dans un {{ domxref("AudioBufferSourceNode") }} afin d'être lues.
Ce type d'objet est conçu pour contenir de petit extraits audio, durant généralement moins de 45s. Pour les sons plus longs, les objets implémentant {{domxref ("MediaAudioElementSourceNode")}} sont plus adaptés. La mémoire tampon contient des données au format non entrelacé IEEE 32-bit PCM linéaire, avec une portée nominale comprise entre -1 et +1. S'il y a plusieurs canaux, ils sont stockés dans des mémoires-tampon distinctes.
AudioBuffer
.AudioBuffer
dans un tableau de destination.AudioBuffer
, depuis le tableau source
.L'exemple suivant montre comment créer un AudioBuffer
et le remplir avec du bruit blanc. Le code source est disponible sur notre repo audio-buffer demo; une version live est également consultable.
// Stéréo var nombreCanaux = 2; // Crée une mémoire tampon vide de 2 secondes // à la fréquence d'échantillonage du contexte AudioContext var nombreFrames = contexteAudio.sampleRate * 2.0; var tableauDonnees = audioCtx.createBuffer(nombreCanaux, nombreFrames, contexteAudio.sampleRate); bouton.onclick = function() { // remplit la mémoire tampon avec du bruit blanc // valeurs aléatoires entre -1.0 et 1.0 for (var canal = 0; canal < nombreCanaux; canal++) { // génère le tableau contenant les données var tampon = tableauDonnees.getChannelData(canal); for (var i = 0; i < nombreFrames; i++) { // Math.random() donne une valeur comprise entre [0; 1.0] // l'audio doit être compris entre [-1.0; 1.0] tampon[i] = Math.random() * 2 - 1; } } // Récupère un AudioBufferSourceNode. // C'est un AudioNode à utiliser quand on veut jouer AudioBuffer var source = contexteAudio.createBufferSource(); // assigne le buffer au AudioBufferSourceNode source.buffer = tableauDonnees; // connecte le AudioBufferSourceNode avec // la destination pour qu'on puisse entendre le son source.connect(contexteAudio.destination); // lance la lecture du so source.start(); }
Spécification | Statut | Commentaire |
---|---|---|
{{SpecName('Web Audio API', '#AudioBuffer-section', 'AudioBuffer')}} | {{Spec2('Web Audio API')}} | Définition initiale |
{{Compat("api.AudioBuffer")}}