--- title: AudioNode.connect(AudioParam) slug: orphaned/Web/API/AudioNode/connect(AudioParam) translation_of: Web/API/AudioNode/connect(AudioParam) original_slug: Web/API/AudioNode/connect(AudioParam) ---
{{ APIRef("Web Audio API") }}
允许我们将当前节点的一个输出连接到音频参数的一个输入,并允许通过音频信号控制参数。
使AudioNode输出连接到多个AudioParam,并将多个AudioNode输出连接到单个 AudioParam,同时多次调用connect()。因此支持Fan-in and fan-out。
AudioParam可以从连接到它的任何AudioNode输出获取渲染的音频数据,并通过下混合将其转换为单声道(如果本身不是单声道的话)。然后,它将其他这样的输出和固定参数混合( AudioParam的值通常没有任何连接),包括为参数调度的任何时间的变化。
因此,可以通过将AudioParam的值设置为中心频率来选择AudioParam将要更改的范围,并使用音频源和AudioParam之间的GainNode来调整AudioParam更改的范围。
var lfo = audioCtx.createOscillator(); lfo.frequency.value = 2.0; // Hz, two times per second var lfoGain = audioCtx.createGain(); lfoGain.gain.value = 0.5; // this is the parameter that is going to be modulated var gain = audioCtx.createGain(); gain.gain.value = 0.5; // Oscillators go from -1 to 1 // Make it go from -0.5 to +0.5 by connecting it to a GainNode with a gain value of 0.5 lfo.connect(lfoGain); // because the value of the gain.gain AudioParam is originaly 0.5, the value is added, and it will go from 0.0 to 1.0 lfoGain.connect(gain.gain); lfo.connect(gain.gain);
Note: There can only be one connection between an output from one specific AudioNode
and an {{ domxref("AudioParam") }}. Multiple connections to the same termini are equivalent to a single such connection (the duplicates are ignored).
Void.
In this example, we will be altering the gain value of a {{domxref("GainNode")}} using an {{domxref("OscillatorNode")}} with a slow frequency value. This technique is know as an LFO-controlled parameter.
var AudioContext = window.AudioContext || window.webkitAudioContext; var audioCtx = new AudioContext(); // create an normal oscillator to make sound var oscillator = audioCtx.createOscillator(); // create a second oscillator that will be used as an LFO (Low-frequency // oscillator), and will control a parameter var lfo = audioCtx.createOscillator(); // set the frequency of the second oscillator to a low number lfo.frequency.value = 2.0; // 2Hz: two oscillations par second // create a gain whose gain AudioParam will be controlled by the LFO var 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();
AudioNode
you want to connect to the {{ domxref("AudioParam") }}. The index numbers are defined according to the number of output channels (see Audio channels.) If this parameter is out-of-bound, an INDEX_SIZE_ERR
exception is thrown.Specification | Status | Comment |
---|---|---|
{{SpecName('Web Audio API', '#widl-AudioNode-connect-void-AudioParam-destination-unsigned-long-output', 'connect(AudioParam)')}} | {{Spec2('Web Audio API')}} |
Feature | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari (WebKit) |
---|---|---|---|---|---|
connect (AudioParam) |
{{CompatVersionUnknown}} {{property_prefix("webkit")}} | {{CompatVersionUnknown}} | {{CompatNo}} | {{CompatVersionUnknown}} | {{CompatNo}} |
Feature | Android | Firefox Mobile (Gecko) | Firefox OS (Gecko) | IE Phone | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|
connect (AudioParam) |
{{CompatNo}} | {{CompatVersionUnknown}} | {{CompatVersionUnknown}} | {{CompatNo}} | {{CompatNo}} | {{CompatNo}} |