BaseAudioContext: createGain() Methode

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.

Die createGain()-Methode der BaseAudioContext-Schnittstelle erzeugt ein GainNode, das verwendet werden kann, um die Gesamtverstärkung (oder Lautstärke) des Audiografen zu steuern.

Hinweis: Der GainNode()-Konstruktor ist die empfohlene Methode zur Erstellung eines GainNode; siehe Erstellen eines AudioNode.

Syntax

js
createGain()

Parameter

Keine.

Rückgabewert

Ein GainNode, das als Eingabe eine oder mehrere Audioquellen übernimmt und dessen Lautstärke in der Verstärkung (Lautstärke) auf ein durch den GainNode.gain a-rate-Parameter spezifiziertes Niveau angepasst wurde.

Beispiele

Das folgende Beispiel zeigt die grundlegende Verwendung eines AudioContext zur Erstellung eines GainNode, das dann verwendet wird, um den Ton stumm zu schalten und die Stummschaltung aufzuheben, wenn ein Stumm-Taste gedrückt wird, indem der Wert der gain-Eigenschaft geändert wird.

Das untenstehende Snippet würde nicht funktionieren, wie es ist — für ein vollständiges funktionierendes Beispiel, schauen Sie sich unser Voice-change-O-matic Demo an (Quelltext anzeigen.)

html
<div>
  <button class="mute">Mute button</button>
</div>
js
const audioCtx = new AudioContext();
const gainNode = audioCtx.createGain();
const mute = document.querySelector(".mute");
let source;

if (navigator.mediaDevices.getUserMedia) {
  navigator.mediaDevices.getUserMedia(
    // constraints - only audio needed for this app
    {
      audio: true,
    },

    // Success callback
    (stream) => {
      source = audioCtx.createMediaStreamSource(stream);
    },

    // Error callback
    (err) => {
      console.error(`The following gUM error occurred: ${err}`);
    },
  );
} else {
  console.error("getUserMedia not supported on your browser!");
}

source.connect(gainNode);
gainNode.connect(audioCtx.destination);

// …

mute.onclick = () => {
  if (mute.id === "") {
    // 0 means mute. If you still hear something, make sure you haven't
    // connected your source into the output in addition to using the GainNode.
    gainNode.gain.setValueAtTime(0, audioCtx.currentTime);
    mute.id = "activated";
    mute.textContent = "Unmute";
  } else {
    gainNode.gain.setValueAtTime(1, audioCtx.currentTime);
    mute.id = "";
    mute.textContent = "Mute";
  }
};

Spezifikationen

Specification
Web Audio API
# dom-baseaudiocontext-creategain

Browser-Kompatibilität

BCD tables only load in the browser

Siehe auch