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
AudioParam
représentant le montant du gain à appliquer. (Bien que leAudioParam
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>
<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.setValueAtTime(0, audioCtx.currentTime);
mute.id = "activated";
mute.innerHTML = "Unmute";
} else {
gainNode.gain.setValueAtTime(1, audioCtx.currentTime);
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 |