GainNode

L'interface GainNode représente une variation de volume. Il s'agit d'un AudioNode, c'est un module de traitement audio, qui provoque un gain donné à appliquer à des données d'entrée avant sa propagation à la sortie. Un GainNode a toujours exactement une entrée et une sortie, avec la même quantité de canaux.

Le gain est une valeur sans unité, qui change éventuellement avec le temps, qui est multiplié à chaque échantillon correspondant de tous les canaux entrées. En cas de modification, le nouveau gain est appliqué à l'aide d'un algorithme d'effilochage afin d'éviter aux «clics» inesthétiques d'apparaître dans l'audio résultant.

The GainNode is increasing the gain of the output.

Nombre d'entrées 1
Nombre de sorties 1
Mode de comptage des canaux "max"
Nombre de canaux 2 (inutilisés dans le mode de comptage par défaut)
Interprétation des canaux "speakers"

Constructeur

GainNode() (en-US)
Crée une nouvelle instance d'un objet GainNode. Il ne faut pas créer un noeud de gain manuellement, mais plutôt utiliser la méthode AudioContext.createGain().

Propriétés

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

GainNode.gain (en-US)
Est un a-rate AudioParam représentant le montant du gain à appliquer. (Bien que le AudioParam retournée est en lecture seule, la valeur qu'il représente ne l'est pas).

Méthodes

Aucune méthode spécifique; hérite des méthodes de son parent, AudioNode.

Exemple

The following example shows basic usage of an AudioContext to create a GainNode, which is then used to mute and unmute the audio when a Mute button is clicked by changing the gain property value.

The below snippet wouldn't work as is — for a complete working example, check out our Voice-change-O-matic demo (view source.)

<div>
  <button class="mute">Mute button</button>
</div>
var audioCtx = new (window.AudioContext || window.webkitAudioContext)();
var gainNode = audioCtx.createGain();
var mute = document.querySelector('.mute');
var source;

if (navigator.mediaDevices.getUserMedia) {
 navigator.mediaDevices.getUserMedia (
   // constraints - only audio needed for this app
   {
     audio: true
   },

   // Success callback
   function(stream) {
     source = audioCtx.createMediaStreamSource(stream);

   },

   // Error callback
   function(err) {
     console.log('The following gUM error occurred: ' + err);
   }
  );
} else {
   console.log('getUserMedia not supported on your browser!');
}

source.connect(gainNode);
gainNode.connect(audioCtx.destination);

  ...

mute.onclick = voiceMute;

function voiceMute() {
  if(mute.id == "") {
    // 0 means mute. If you still hear something, make sure you haven't
    // connected your source into the output in addition to using the GainNode.
    gainNode.gain.setValueAtTime(0, audioCtx.currentTime);
    mute.id = "activated";
    mute.textContent = "Unmute";
  } else {
    gainNode.gain.setValueAtTime(1, audioCtx.currentTime);
    mute.id = "";
    mute.textContent = "Mute";
  }
}

Spécification

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

Compatibilité navigateurs

BCD tables only load in the browser

Voir aussi