--- 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.

Syntaxe

var contexteAudio = new AudioContext();
var gainNode = contexteAudio.createGain();

Retourne

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")}}.

Exemple

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

Spécification Status Commentaire
{{SpecName('Web Audio API', '#widl-AudioContext-createGain-GainNode', 'createGain()')}} {{Spec2('Web Audio API')}}  

Compatibilité navigateur

{{CompatibilityTable}}
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

 

Voir aussi