AudioContext.createGain()

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2021.

La méthode createGain de l'interface AudioContext crée un GainNode qui peut être utilisé pour contrôler le volume global du graphe audio.

Syntaxe

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

Retourne

Un 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 GainNode.gain.

Exemple

L'exemple suivant montre l'utilisation d'un AudioContext pour créer un 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.)

html
<div>
  <button class="boutonson">Mute button</button>
</div>
js
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écifications

Specification
Web Audio API
# dom-baseaudiocontext-creategain

Compatibilité des navigateurs

BCD tables only load in the browser

Voir aussi