AnalyserNode.smoothingTimeConstant

La propriété smoothingTimeConstant de l'interface AnalyserNode est un nombre flottant à double précision qui représente une moyenne entre le buffer courant et le buffer précédent - elle sert à lisser la transition entre les valeurs.

La valeur est 0.8 par défaut; elle doit être comprise entre 0 et 1. Lorsqu'elle vaut 0, aucune moyenne n'est effectuée, tandis que la valeur 1 signifie que le chevauchement entre le buffer en cours et le buffer précédent est conséquent lors du calcul des valeurs, ce qui a pour effet d'adoucir le changement lors des appels AnalyserNode.getFloatFrequencyData/AnalyserNode.getByteFrequencyData.

En termes techniques, on applique une fenêtre de Blackman pour lisser les valeurs dans le temps. La valeur par défaut convient à la plupart des cas.

Note:  Si la valeur n'est pas comprise entre 0 et 1, une exception INDEX_SIZE_ERR est levée.

Syntaxe

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

Valeur

Un nombre flottant à double précision.

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

Si vou sêtes curieux du fonctionnement de smoothingTimeConstant(), essayez de cloner l'exemple ci-dessous et d'affecter : analyser.smoothingTimeConstant = 0;. Vous verrez que les changements de valeur sont bien plus discordants.

var contexteAudio = new (window.AudioContext || window.webkitAudioContext)();
var analyseur = contexteAudio.createAnalyser();
analyseur.minDecibels = -90;
analyseur.maxDecibels = -10;
analyseur.smoothingTimeConstant = 0.85;

  ...

analyseur.fftSize = 256;
var tailleMemoireTampon = analyseur.frequencyBinCount;
console.log(tailleMemoireTampon);
var tableauDonnees = new Uint8Array(tailleMemoireTampon);

contexteCanvas.clearRect(0, 0, LARGEUR, HAUTEUR);

function dessiner() {
  dessin = requestAnimationFrame(dessiner);

  analyseur.getByteFrequencyData(tableauDonnees);

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

  var largeurBarre = (LARGEUR / tailleMemoireTampon) * 2.5;
  var hauteurBarre;
  var x = 0;

  for(var i = 0; i < tailleMemoireTampon; i++) {
    hauteurBarre = tableauDonnees[i];

    contexteCanvas.fillStyle = 'rgb(' + (hauteurBarre+100) + ',50,50)';
    contexteCanvas.fillRect(x, HAUTEUR-hauteurBarre/2, largeurBarre, hauteurBarre/2);

    x += largeurBarre + 1;
  }
};

dessiner();

Spécifications

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

Compatibilité navigateurs

Fonctionnalité Chrome Firefox (Gecko) Internet Explorer Opera Safari (WebKit)
Support basique 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
Support basique ? 26.0 1.2 ? ? ? 33.0

Voir aussi

Étiquettes et contributeurs liés au document

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