Join MDN and developers like you at Mozilla's View Source conference, 12-14 September in Berlin, Germany. Learn more at https://viewsourceconf.org

AnalyserNode

L' interface AnalyserNode représente un noeud capable de fournir en temps réel des informations d'analyse de la fréquence et du domaine temporel. C'est un AudioNode qui transmet le flux audio inchangé depuis l'entrée vers la sortie, mais permet de capturer les données générées pour les traiter et/ou les visualiser.

Il a exactement une entrée et une sortie. Le noeud fonctionne même si la sortie n'est pas connectée.

Without modifying the audio stream, the node allows to get the frequency and time-domain data associated to it, using a FFT.

Nombre d'entrées 1
Nombre de sorties 1 (mais peut être laissée non connectée)
Mode de comptage des canaux "explicit"
Nombre de canaux 1
Interprétation du canal "speakers"

Propriétés

Hérite des propriétés de son parent. AudioNode.

AnalyserNode.fftSize
Entier long non signé qui représente la taille de la FFT (transformation de Fourier rapide) qui sera utilisé pour déterminer le domaine fréquentiel.
AnalyserNode.frequencyBinCount Lecture seule
Entier long non signé égal à la moitié fftSize. C'est en général le nombre de valeurs qu'on manipule pour la visualisation.
AnalyserNode.minDecibels
Nombre flottant à double précision qui représente la valeur minimale de puissance dans la plage de mise à l'échelle pour l'analyse des données FFT, pour la conversion en octets non signés - cela équivaut à la valeur minimum de la plage de résultats de getByteFrequencyData().
AnalyserNode.maxDecibels
Nombre flottant à double précision qui représente la valeur maximale de puissance dans la plage de mise à l'échelle pour l'analyse des données FFT, pour la conversion en octets non signés - cela équivaut à la valeur maximum de la plage de résultats de getByteFrequencyData().
AnalyserNode.smoothingTimeConstant
Nombre flottant à double précision qui représente la moyenne de la trame en cours avec la dernière trame analysée - elle permet de lisser la transition entre les valeurs.

Méthodes

Hérite des propriétés de son parent, AudioNode.

Analyser.getFloatFrequencyData()
Copie les données de fréquence dans un tableau Float32Array passé en paramètre.
Analyser.getByteFrequencyData()
Copie les données de fréquence dans un tableau Uint8Array passé en paramètre.
AnalyserNode.getFloatTimeDomainData()
Copie les données de forme d'onde ou du domaine temporel dans un tableau Float32Array passé en paramètre.
Analyser.getByteTimeDomainData()
Copie les données de forme d'onde ou du domaine temporel dans un tableau Uint8Array passé en paramètre.

Exemples

Note: Voir Visualisations avec la Web Audio API pour plus d'informations.

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 lines 128–205).

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

  ...

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

// dessine un oscilloscope de la source audio

function dessiner() {

      dessin = requestAnimationFrame(dessiner);

      analyseur.getByteTimeDomainData(dataArray);

      contexteCanvas.fillStyle = 'rgb(200, 200, 200)';
      contexteCanvas.fillRect(0, 0, WIDTH, HEIGHT);

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

      contexteCanvas.beginPath();

      var sliceWidth = WIDTH * 1.0 / bufferLength;
      var x = 0;

      for(var i = 0; i < bufferLength; i++) {
   
        var v = dataArray[i] / 128.0;
        var y = v * HEIGHT/2;

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

        x += sliceWidth;
      }

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

    dessiner();

Spécifications

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

Compatibilité des navigateurs

Fonctionnalité Chrome Firefox (Gecko) Internet Explorer Opera Safari (WebKit)
Support basique (Oui)webkit Actif seulement sur Nightly Pas de support Pas de support ?
Fonctionnalité Android Firefox Mobile (Gecko) IE Phone Opera Mobile Safari Mobile
Support basique Pas de support Actif seulement sur Nightly Pas de support Pas de support ?

Voir aussi

Étiquettes et contributeurs liés au document

 Contributeurs à cette page : marie-ototoi, teoli, fscholz, Goofy, tregagnon, dexterneo
 Dernière mise à jour par : marie-ototoi,