--- title: AudioContext.createGain() slug: Web/API/BaseAudioContext/createGain tags: - API - Audio - AudioContext - Contrôle du volume - Méthode - Son - Volume - Web Audio - createGain translation_of: Web/API/BaseAudioContext/createGain original_slug: Web/API/AudioContext/createGain ---
{{ APIRef("Web Audio API") }}
La méthode createGain de l'interface {{ domxref("AudioContext") }} crée un {{ domxref("GainNode") }} qui peut être utilisé pour contrôler le volume global du graphe audio.
var contexteAudio = new AudioContext(); var gainNode = contexteAudio.createGain();
Un {{domxref("GainNode")}} qui prend en entrée une ou plusieurs sources audio et en sortie un son dont le volume a été ajusté à un niveau indiqué par le paramètre de type a-rate {{domxref("GainNode.gain")}}.
L'exemple suivant montre l'utilisation d'un {{domxref("AudioContext")}} pour créer un {{ domxref("GainNode") }}, qui sert à activer et désactiver le son au clic d'un bouton, en changeant la valeur de la propriété gain.
L'extrait de code ci-dessous ne fonctionne pas tel quel - pour un exemple complet qui fonctionne, consulter la démo Voice-change-O-matic (et son code source.)
<div> <button class="boutonson">Mute button</button> </div>
var contexteAudio = new (window.AudioContext || window.webkitAudioContext)();
var gainNode = contexteAudio.createGain();
var boutonSon = document.querySelector('.boutonson'),
source;
if (navigator.getUserMedia) {
navigator.getUserMedia (
// contraintes - cette app nécessite seulement l'audio
{
audio: true
},
// fonction de rappel en cas de succès
function (flux) {
source = contexteAudio.createMediaStreamSource(flux);
},
// fonction de rappel en cas d'erreur
function (erreur) {
console.log("L'erreur à la noix suivante vient de se produire : " + erreur);
});
}
else {
console.log("getUserMedia n'est pas supporté par votre navigateur !");
}
source.connect(gainNode);
gainNode.connect(contexteAudio.destination);
...
boutonSon.onclick = couperSon;
function couperSon () {
if (boutonSon.id == "") {
gainNode.gain.value = 0;
boutonSon.id = "activated";
boutonSon.innerHTML = "Activer le son";
}
else {
gainNode.gain.value = 1;
boutonSon.id = "";
boutonSon.innerHTML = "Couper le son";
}
}
| Spécification | Status | Commentaire |
|---|---|---|
| {{SpecName('Web Audio API', '#widl-AudioContext-createGain-GainNode', 'createGain()')}} | {{Spec2('Web Audio API')}} |
| Fonctionnalité | Chrome | Edge | Firefox (Gecko) | Internet Explorer | Opera | Safari (WebKit) |
|---|---|---|---|---|---|---|
| Support basique | {{CompatChrome(10.0)}}{{property_prefix("webkit")}} | {{CompatVersionUnknown}} | {{CompatGeckoDesktop(25.0)}} | {{CompatNo}} | 15.0{{property_prefix("webkit")}} 22 (unprefixed) |
6.0{{property_prefix("webkit")}} |
| Fonctionnalité | Android | Edge | Firefox Mobile (Gecko) | Firefox OS | IE Mobile | Opera Mobile | Safari Mobile | Chrome for Android |
|---|---|---|---|---|---|---|---|---|
| Support basique | {{CompatUnknown}} | {{CompatVersionUnknown}} | 26.0 | 1.2 | {{CompatUnknown}} | {{CompatUnknown}} | {{CompatUnknown}} | 33.0 |