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.

| 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()- 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éthodeAudioContext.createGain().
Propriétés
Hérite des propritétés de son parent, AudioNode.
GainNode.gain- Est un a-rate
AudioParamreprésentant le montant du gain à appliquer. (Bien que leAudioParamretourné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> <a class="mute">Mute button</a> </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 occured: ' + 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 == "") {
gainNode.gain.value = 0;
mute.id = "activated";
mute.innerHTML = "Unmute";
} else {
gainNode.gain.value = 1;
mute.id = "";
mute.innerHTML = "Mute";
}
}
Spécification
| Spécification | Statuts | Commentaire |
|---|---|---|
| Web Audio API La définition de 'GainNode' dans cette spécification. |
Version de travail |
Compatibilité navigateurs
| Fonctionnalité | Chrome | Edge | Firefox (Gecko) | Internet Explorer | Opera | Safari (WebKit) |
|---|---|---|---|---|---|---|
| Support basique | 10.0webkit | (Oui) | 25.0 (25.0) | Pas de support | 15webkit 22 |
6.0webkit |
| constructeur | 55.0 | (Oui) | ? | ? | 42 | ? |
| Fonctionnalité | Android | Android Webview | Edge | Firefox Mobile (Gecko) | Firefox OS | IE Mobile | Opera Mobile | Safari Mobile | Chrome for Android |
|---|---|---|---|---|---|---|---|---|---|
| Support basique | Pas de support | (Oui) | (Oui) | 26.0 | 1.2 | ? | (Oui) | ? | 33.0 |
| constructeur | Pas de support | 55.0 | (Oui) | ? | ? | ? | 42 | ? | 55.0 |

