--- title: AnalyserNode slug: Web/API/AnalyserNode tags: - API - AnalyserNode - Reference translation_of: Web/API/AnalyserNode ---
{{APIRef("Web Audio API")}}

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 {{domxref("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 ne pas être connectée)
Mode de comptage des canaux "explicit"
Nombre de canaux 1
Interprétation du canal "speakers"

Héritage

L'interface hérite des parents suivants:

{{InheritanceDiagram}}

Constructeur

{{domxref("AnalyserNode.AnalyserNode", "AnalyserNode()")}}
Crée une nouvelle instance de l'objet AnalyserNode.

Propriétés

Hérite des propriétés de son parent. {{domxref("AudioNode")}}.

{{domxref("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.
{{domxref("AnalyserNode.frequencyBinCount")}} {{readonlyInline}}
Entier long non signé égal à la moitié fftSize. C'est en général le nombre de valeurs qu'on manipule pour la visualisation.
{{domxref("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().
{{domxref("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().
{{domxref("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, {{domxref("AudioNode")}}.

{{domxref("AnalyserNode.getFloatFrequencyData()")}}
Copie les données de fréquence dans un tableau {{domxref("Float32Array")}} passé en paramètre.
{{domxref("AnalyserNode.getByteFrequencyData()")}}
Copie les données de fréquence dans un tableau {{domxref("Uint8Array")}} passé en paramètre.
{{domxref("AnalyserNode.getFloatTimeDomainData()")}}
Copie les données de forme d'onde ou du domaine temporel dans un tableau {{domxref("Float32Array")}} passé en paramètre.
{{domxref("AnalyserNode.getByteTimeDomainData()")}}
Copie les données de forme d'onde ou du domaine temporel dans un tableau {{domxref("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 {{domxref("AudioContext")}}, puis utiliser  {{domxref("window.requestAnimationFrame()","requestAnimationFrame")}} et {{htmlelement("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 = analyseur.frequencyBinCount;
var tableauDonnees = new Uint8Array(tailleMemoireTampon);
analyseur.getByteTimeDomainData(tableauDonnees);

// dessine un oscilloscope de la source audio

var canvas = document.getElementById("oscilloscope");
var contexteCanvas = canvas.getContext("2d");

function dessiner() {

      requestAnimationFrame(dessiner);

      analyseur.getByteTimeDomainData(tableauDonnees);

      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 / tailleMemoireTampon;
      var x = 0;

      for(var i = 0; i < tailleMemoireTampon; i++) {

        var v = tableauDonnees[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 État Commentaires
{{SpecName('Web Audio API', '#the-analysernode-interface', 'AnalyserNode')}} {{Spec2('Web Audio API')}}  

Compatibilité navigateurs

{{Compat("api.AnalyserNode")}}

Voir aussi