AnalyserNode.getByteTimeDomainData()

La méthode getByteTimeDomainData() de l'interface AnalyserNode copie les données de forme d'onde, ou du domaine temporel, dans un tableau Uint8Array passé en paramètre.

Si le tableau a moins d'éléments que la propriété AnalyserNode.fftSize, les données en excès sont supprimées. S'il a davantage d'éléments, les éléments non utilisés sont ignorés.

Syntaxe

var contexteAudio = new AudioContext();
var analyseur = contexteAudio.createAnalyser();

// La taille du tableau Uint8Array doit correspondre à la valeur de la propriété fftSize 
var tableauDonnees = new Uint8Array(analyseur.fftSize); 

// remplit le tableau Uint8Array avec les données renvoyées par la méthode getByteTimeDomainData()
analyseur.getByteTimeDomainData(tableauDonnees); 

Renvoie

Un tableau Uint8Array.

Exemple

L'exemple suivant montre comment créer simplement un  AnalyserNode avec AudioContext, puis utiliser  requestAnimationFrame et <canvas> pour collecter les données temporelles et dessiner un oscilloscope en sortie. Pour des exemples plus complets, voir notre démo Voice-change-O-matic  (et en particulier app.js lignes 128–205).

var contexteAudio = new (window.AudioContext || window.webkitAudioContext)();
var analyseur = contexteAudio.createAnalyser();

  ...

analyseur.fftSize = 2048;
var tailleMemoireTampon = analyseur.frequencyBinCount;
var tableauDonnees = new Uint8Array(tailleMemoireTampon);
analyseur.getByteTimeDomainData(tableauDonnees);

// dessine un oscilloscope de la source audio

function dessiner() {

      dessin = requestAnimationFrame(dessiner);

      analyseur.getByteTimeDomainData(tableauDonnees);

      contexteCanvas.fillStyle = 'rgb(200, 200, 200)';
      contexteCanvas.fillRect(0, 0, LARGEUR, HAUTEUR);

      contexteCanvas.lineWidth = 2;
      contexteCanvas.strokeStyle = 'rgb(0, 0, 0)';

      contexteCanvas.beginPath();

      var largeurBarre = WIDTH * 1.0 / tailleMemoireTampon;
      var x = 0;

      for(var i = 0; i < tailleMemoireTampon; i++) {
   
        var v = tableauDonnees[i] / 128.0;
        var y = v * HAUTEUR/2;

        if(i === 0) {
          contexteCanvas.moveTo(x, y);
        } else {
          contexteCanvas.lineTo(x, y);
        }

        x += largeurBarre;
      }

      contexteCanvas.lineTo(canvas.width, canvas.height/2);
      contexteCanvas.stroke();
    };

    dessiner();

Paramètres

array
Le tableau Uint8Array dans lequel les données temporelles seront copiées.

Spécifications

Spécification Statut Commentaire
Web Audio API
La définition de 'getByteTimeDomainData()' dans cette spécification.
Version de travail  

Compatibilité navigateurs

Fonctionnalité Chrome Firefox (Gecko) Internet Explorer Opera Safari (WebKit)
Basic support 10.0webkit 25.0 (25.0)  Pas de support 15.0webkit
22 (unprefixed)
6.0webkit
Fonctionnalité Android Firefox Mobile (Gecko) Firefox OS IE Mobile Opera Mobile Safari Mobile Chrome for Android
Basic support ? 26.0 1.2 ? ? ? 33.0

See also

Étiquettes et contributeurs liés au document

 Contributeurs à cette page : marie-ototoi
 Dernière mise à jour par : marie-ototoi,