AudioNode: connect() 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 connect()
Methode der AudioNode
Schnittstelle ermöglicht es Ihnen, einen der Ausgänge des Knotens mit einem Ziel zu verbinden, das entweder ein anderer AudioNode
(und damit die Audiodaten an den angegebenen Knoten leitet) oder ein AudioParam
sein kann, sodass die Ausgabedaten des Knotens automatisch verwendet werden, um den Wert dieses Parameters im Laufe der Zeit zu ändern.
Syntax
connect(destination)
connect(destination, outputIndex)
connect(destination, outputIndex, inputIndex)
Parameter
destination
-
Der
AudioNode
oderAudioParam
, mit dem verbunden werden soll. outputIndex
Optional-
Ein Index, der angibt, welcher Ausgang des aktuellen
AudioNode
mit dem Ziel verbunden werden soll. Die Indexnummern sind entsprechend der Anzahl der Ausgangskanäle definiert (siehe Audiokanäle). Während Sie einen gegebenen Ausgang nur einmal mit einem gegebenen Eingang verbinden können (wiederholte Versuche werden ignoriert), können Sie einen Ausgang mit mehreren Eingängen verbinden, indem Sieconnect()
wiederholt aufrufen. Dies macht Fan-out möglich. Der Standardwert ist 0. inputIndex
Optional-
Ein Index, der beschreibt, welcher Eingang des Ziels mit dem aktuellen
AudioNode
verbunden werden soll; der Standardwert ist 0. Die Indexnummern sind entsprechend der Anzahl der Eingangskanäle definiert (siehe Audiokanäle). Es ist möglich, einenAudioNode
mit einem anderenAudioNode
zu verbinden, der wiederum zurück zu dem erstenAudioNode
verbindet, wodurch ein Zyklus entsteht.
Rückgabewert
Wenn das Ziel ein Knoten ist, gibt connect()
eine Referenz auf das Ziel-AudioNode
-Objekt zurück, wodurch Sie mehrere connect()
-Aufrufe verketten können. In einigen Browsern geben ältere Implementierungen dieser Schnittstelle undefined
zurück.
Wenn das Ziel ein AudioParam
ist, gibt connect()
undefined
zurück.
Ausnahmen
IndexSizeError
DOMException
-
Wird ausgelöst, wenn der als
outputIndex
oderinputIndex
angegebene Wert nicht einem vorhandenen Eingang oder Ausgang entspricht. InvalidAccessError
DOMException
-
Wird ausgelöst, wenn der Zielknoten nicht Teil desselben Audiokontexts wie der Quellknoten ist.
NotSupportedError
DOMException
-
Wird ausgelöst, wenn die angegebene Verbindung einen Zyklus erzeugen würde (in dem das Audio wiederholt durch dieselben Knoten zurückläuft) und es keine
DelayNode
Objekte im Zyklus gibt, um zu verhindern, dass die resultierende Wellenform in der unendlichen Konstruktion desselben Audioframes stecken bleibt. Wird auch ausgelöst, wenn derinputIndex
Parameter verwendet wird, während das Ziel einAudioParam
ist.
Beispiele
Verbindung zu einem Audioeingang
Die offensichtlichste Verwendung der connect()
Methode besteht darin, die Audioausgabe von einem Knoten in den Audioeingang eines anderen Knotens zur weiteren Verarbeitung zu leiten. Zum Beispiel könnten Sie das Audio von einem MediaElementAudioSourceNode
—das heißt, das Audio von einem HTML-Medienelement wie <audio>
—durch einen Bandpassfilter führen, der mit einem BiquadFilterNode
implementiert wird, um Geräusche zu reduzieren, bevor das Audio dann an die Lautsprecher gesendet wird.
Dieses Beispiel erstellt einen Oszillator und verknüpft ihn mit einem Verstärkungsknoten, sodass der Verstärkungsknoten die Lautstärke des Oszillatorknotens steuert.
const audioCtx = new AudioContext();
const oscillator = audioCtx.createOscillator();
const gainNode = audioCtx.createGain();
oscillator.connect(gainNode);
gainNode.connect(audioCtx.destination);
AudioParam-Beispiel
In diesem Beispiel werden wir den Verstärkungswert eines GainNode
mit einem OscillatorNode
mit einer langsamen Frequenz ändern. Diese Technik ist bekannt als eine LFO-kontrollierte Parameter.
const audioCtx = new AudioContext();
// create an normal oscillator to make sound
const oscillator = audioCtx.createOscillator();
// create a second oscillator that will be used as an LFO (Low-frequency
// oscillator), and will control a parameter
const lfo = audioCtx.createOscillator();
// set the frequency of the second oscillator to a low number
lfo.frequency.value = 2.0; // 2Hz: two oscillations per second
// create a gain whose gain AudioParam will be controlled by the LFO
const gain = audioCtx.createGain();
// connect the LFO to the gain AudioParam. This means the value of the LFO
// will not produce any audio, but will change the value of the gain instead
lfo.connect(gain.gain);
// connect the oscillator that will produce audio to the gain
oscillator.connect(gain);
// connect the gain to the destination so we hear sound
gain.connect(audioCtx.destination);
// start the oscillator that will produce audio
oscillator.start();
// start the oscillator that will modify the gain value
lfo.start();
AudioParam Hinweise
Es ist möglich, einen AudioNode
Ausgang mit mehr als einem AudioParam
zu verbinden, und mehr als einen AudioNode
Ausgang mit einem einzigen AudioParam
zu verbinden, mit mehreren Aufrufen von connect()
. Fan-in und Fan-out werden daher unterstützt.
Ein AudioParam
nimmt die gerenderten Audiodaten von jedem verbundenen AudioNode
Ausgang und konvertiert sie durch Down-Mixing in Mono (falls sie nicht bereits Mono sind). Anschließend wird es mit allen anderen solchen Ausgängen und dem intrinsischen Parameterwert (dem Wert, den das AudioParam
normalerweise ohne Audioverbindungen hätte), einschließlich aller für den Parameter geplanten Zeitlinienänderungen, zusammengeführt.
Daher ist es möglich, den Bereich zu wählen, in dem sich ein AudioParam
ändern wird, indem man den Wert des AudioParam
auf die zentrale Frequenz setzt und einen GainNode
zwischen der Audioquelle und dem AudioParam
verwendet, um den Bereich der AudioParam
-Änderungen anzupassen.
Spezifikationen
Specification |
---|
Web Audio API # dom-audionode-connect |
Web Audio API # dom-audionode-connect-destinationparam-output |
Browser-Kompatibilität
BCD tables only load in the browser