AudioBufferSourceNode.buffer

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 propriété buffer de l'interface AudioBufferSourceNode donne la possibilité de lire un son en utilisant un objet AudioBuffer comme ressource audio.

Si la propriété buffer a la valeur null, le nœud génère un canal unique silencieux (chaque échantillon vaut 0).

Syntaxe

js
AudioBufferSourceNode.buffer = soundBuffer;

Valeur

Un objet AudioBuffer qui contient les données représentant le son que le nœud va lire.

Exemple

Note : Pour un exemple complet, voir cette démonstration, ou le code source correspondant.

js
let AudioContext = window.AudioContext || window.webkitAudioContext;
let audioCtx;

// Stereo
let channels = 2;

function init() {
  audioCtx = new AudioContext();
}

button.onclick = function () {
  if (!audioCtx) {
    init();
  }

  // On crée un tampon stéréo vide de deux secondes
  // qui utilise l'échantillonage de AudioContext
  let frameCount = audioCtx.sampleRate * 2.0;

  let myArrayBuffer = audioCtx.createBuffer(
    channels,
    frameCount,
    audioCtx.sampleRate,
  );

  // On remplit le buffer avec du bruit blanc ;
  // soit des valeurs entre -1.0 et 1.0
  for (let channel = 0; channel < channels; channel++) {
    // Voici le calcul du tableau réel qui contient
    // les données
    let nowBuffering = myArrayBuffer.getChannelData(channel);
    for (let i = 0; i < frameCount; i++) {
      // Math.random() donne une valeur sur [0; 1.0]
      // audio doit être sur [-1.0; 1.0]
      nowBuffering[i] = Math.random() * 2 - 1;
    }
  }

  // On récupère un AudioBufferSourceNode.
  // C'est l'objet AudioNode à utiliser pour lire
  // un AudioBuffer
  let source = audioCtx.createBufferSource();
  // on passe le buffer avec AudioBufferSourceNode
  source.buffer = myArrayBuffer;
  // on connecte le nœud AudioBufferSourceNode à
  // la destination afin d'entendre le son
  source.connect(audioCtx.destination);
  // on lance la lecture
  source.start();

  source.onended = () => {
    console.log("Bruit blanc terminé");
  };
};

Spécifications

Specification
Web Audio API
# dom-audiobuffersourcenode-buffer

Compatibilité navigateurs

BCD tables only load in the browser

Voir aussi