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 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:

Constructeur

AnalyserNode()
Crée une nouvelle instance de l'objet AnalyserNode.

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.

AnalyserNode.getFloatFrequencyData()
Copie les données de fréquence dans un tableau Float32Array passé en paramètre.
AnalyserNode.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.
AnalyserNode.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 = 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
Web Audio API
La définition de 'AnalyserNode' dans cette spécification.
Version de travail  

Compatibilité navigateurs

Update compatibility data on GitHub
OrdinateurMobile
ChromeEdgeFirefoxInternet ExplorerOperaSafariWebview AndroidChrome pour AndroidFirefox pour AndroidOpera pour AndroidSafari sur iOSSamsung Internet
AnalyserNodeChrome Support complet 14Edge Support complet OuiFirefox Support complet 25IE Aucun support NonOpera Support complet 15Safari Support complet 6WebView Android Support complet OuiChrome Android Support complet 18Firefox Android Support complet 26Opera Android Support complet 14Safari iOS Support complet OuiSamsung Internet Android Support complet Oui
AnalyserNode() constructorChrome Support complet 55Edge ? Firefox Support complet 53IE Aucun support NonOpera Support complet 42Safari ? WebView Android Support complet 55Chrome Android Support complet 55Firefox Android Support complet 53Opera Android Support complet 42Safari iOS ? Samsung Internet Android Support complet 6.0
fftSizeChrome Support complet 14Edge Support complet 12Firefox Support complet 25IE Aucun support NonOpera Support complet 15Safari Support complet 6WebView Android Support complet OuiChrome Android Support complet 18Firefox Android Support complet 26Opera Android Support complet 14Safari iOS Support complet OuiSamsung Internet Android Support complet Oui
frequencyBinCountChrome Support complet 14Edge Support complet 12Firefox Support complet 25IE Aucun support NonOpera Support complet 15Safari Support complet 6WebView Android Support complet OuiChrome Android Support complet 18Firefox Android Support complet 26Opera Android Support complet 14Safari iOS Support complet OuiSamsung Internet Android Support complet Oui
getByteFrequencyDataChrome Support complet 14Edge Support complet 12Firefox Support complet 25IE Aucun support NonOpera Support complet 15Safari Support complet 6WebView Android Support complet OuiChrome Android Support complet 18Firefox Android Support complet 26Opera Android Support complet 14Safari iOS Support complet OuiSamsung Internet Android Support complet Oui
getByteTimeDomainDataChrome Support complet 14Edge Support complet 12Firefox Support complet 25IE Aucun support NonOpera Support complet 15Safari Support complet 6WebView Android Support complet OuiChrome Android Support complet 18Firefox Android Support complet 26Opera Android Support complet 14Safari iOS Support complet OuiSamsung Internet Android Support complet Oui
getFloatFrequencyDataChrome Support complet 14Edge Support complet 12Firefox Support complet 25IE Aucun support NonOpera Support complet 15Safari Support complet 6WebView Android Support complet OuiChrome Android Support complet 18Firefox Android Support complet 26Opera Android Support complet 14Safari iOS Support complet OuiSamsung Internet Android Support complet Oui
getFloatTimeDomainDataChrome Support complet 14Edge Support complet 12Firefox Support complet 25IE Aucun support NonOpera Support complet 15Safari Aucun support NonWebView Android Support complet OuiChrome Android Support complet 18Firefox Android Support complet 26Opera Android Support complet 14Safari iOS ? Samsung Internet Android Support complet Oui
maxDecibelsChrome Support complet 14Edge Support complet 12Firefox Support complet 25IE Aucun support NonOpera Support complet 15Safari Support complet 6WebView Android Support complet OuiChrome Android Support complet 18Firefox Android Support complet 26Opera Android Support complet 14Safari iOS Support complet OuiSamsung Internet Android Support complet Oui
minDecibelsChrome Support complet 14Edge Support complet 12Firefox Support complet 25IE Aucun support NonOpera Support complet 15Safari Support complet 6WebView Android Support complet OuiChrome Android Support complet 18Firefox Android Support complet 26Opera Android Support complet 14Safari iOS Support complet OuiSamsung Internet Android Support complet Oui
smoothingTimeConstantChrome Support complet 14Edge Support complet 12Firefox Support complet 25IE Aucun support NonOpera Support complet 15Safari Support complet 6WebView Android Support complet OuiChrome Android Support complet 18Firefox Android Support complet 26Opera Android Support complet 14Safari iOS Support complet OuiSamsung Internet Android Support complet Oui

Légende

Support complet  
Support complet
Aucun support  
Aucun support
Compatibilité inconnue  
Compatibilité inconnue

Voir aussi