Spec-Zone.ru › Web APIs

AudioNode: метод connect()

Базовая Широко доступна

Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна в браузерах с апреля 2021 года.

  • Подробнее
  • Полная совместимость
  • Отправить отзыв

Метод connect() интерфейса AudioNode позволяет соединить один из выходов узла с целевым объектом, который может быть другим AudioNode (тем самым направляя данные звука в указанный узел) или AudioParam, чтобы данные вывода узла автоматически использовались для изменения значения параметра со временем.

Синтаксис

connect(destination)
connect(destination, outputIndex)
connect(destination, outputIndex, inputIndex)

Параметры

destination

AudioNode или AudioParam, к которому необходимо подключиться.

outputIndex Необязательно

Индекс, указывающий, какой выходной канал текущего AudioNode подключить к назначению. Номера индексов определяются количеством выходных каналов (см. Аудиоканалы). Хотя вы можете подключить определенный выход только к одному входу (повторные попытки игнорируются), вы можете подключить выход к нескольким входам, вызвав connect() повторно. Это позволяет реализовать распределение выходов. Значение по умолчанию — 0.

inputIndex Необязательно

Индекс, описывающий, какой вход назначения вы хотите подключить к текущему AudioNode; значение по умолчанию — 0. Номера индексов определяются количеством входных каналов (см. Аудиоканалы). Можно подключить AudioNode к другому AudioNode, который, в свою очередь, подключается обратно к первому AudioNode, создавая цикл.

Возвращаемое значение

Если назначение — узел, connect() возвращает ссылку на объект назначения AudioNode, что позволяет вам объединить несколько вызовов connect(). В некоторых браузерах более старые реализации этого интерфейса возвращают undefined.

Если назначение — AudioParam, connect() возвращает undefined.

Исключения

IndexSizeError DOMException

Выбрасывается, если значение, указанное как outputIndex или inputIndex, не соответствует существующему входу или выходу.

InvalidAccessError DOMException

Выбрасывается, если целевой узел не входит в тот же аудиоконтекст, что и исходный узел.

NotSupportedError DOMException

Выбрасывается, если указанное подключение создаст цикл (в котором звук возвращается по тем же узлам), и в цикле нет объектов DelayNode, чтобы предотвратить застревание результата построения одного и того же кадра звука бесконечно. Также выбрасывается, если параметр inputIndex используется, когда назначение — AudioParam.

Примеры

Подключение к аудиовходу

Наиболее очевидное использование метода connect() — направить аудиовыход одного узла на аудиовход другого узла для дальнейшей обработки. Например, вы можете направить аудио с MediaElementAudioSourceNode — то есть аудио с элемента HTML-медиа, такого как <audio> — через полосовой фильтр, реализованный с помощью BiquadFilterNode, чтобы уменьшить шум, прежде чем направить аудио к динамикам.

В этом примере создаётся генератор, а затем он связывается с узлом усиления, таким образом, чтобы узел усиления контролировал громкость узла генератора.

const audioCtx = new AudioContext();

const oscillator = audioCtx.createOscillator();
const gainNode = audioCtx.createGain();

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

Пример AudioParam

В этом примере мы будем изменять значение усиления GainNode с помощью OscillatorNode со значением частоты с замедленной скоростью. Этот метод известен как LFO-контролируемый параметр.

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

Можно подключить выход AudioNode к нескольким AudioParam, и несколько выходов AudioNode к одному AudioParam с помощью нескольких вызовов connect(). Распределение выходов поэтому поддерживается.

AudioParam примет данные аудио, полученные с любого выхода AudioNode подключённого к нему, и переведёт его в моно, выполнив приведение (если это не уже моно). Затем он объединит его с любыми другими такими выходами, а также со значением внутреннего параметра (значением, которое AudioParam обычно имел бы без каких-либо подключённых аудиовыходов), включая любые запланированные изменения в графике для параметра.

Следовательно, можно выбрать диапазон, в котором будет изменяться AudioParam, задав значение AudioParam в центральную частоту, и использовать GainNode между источником аудио и AudioParam, чтобы отрегулировать диапазон изменений AudioParam.

Спецификации

Спецификация
Web Audio API
# dom-audionode-connect
Web Audio API
# dom-audionode-connect-destinationparam-output

Совместимость с браузерами

Рабочие столы Мобильные устройства
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari на iOS Samsung Internet WebView Android
connect 14 12 25 15 6 18 25 14 6 1.0 4.4.3

См. также

  • Использование Web Audio API

© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/AudioNode/connect

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API