Spec-Zone.ru › Web APIs

AudioNode

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

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

* Некоторые части этой функции могут иметь различный уровень поддержки.

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

Интерфейс AudioNode является общим интерфейсом для представления модуля обработки звука.

Примеры включают:

  • источник звука (например, элемент HTML <audio> или <video>, узел OscillatorNode и т. д.),
  • назначение звука,
  • промежуточный модуль обработки (например, фильтр, такой как BiquadFilterNode или ConvolverNode), или
  • управление громкостью (например, GainNode)
EventTarget AudioNode

Примечание: Узел AudioNode может быть объектом обработки событий, поэтому он реализует интерфейс EventTarget.

Свойства экземпляра

AudioNode.context Только чтение

Возвращает связанный BaseAudioContext, то есть объект, представляющий граф обработки, в котором участвует узел.

AudioNode.numberOfInputs Только чтение

Возвращает количество входов, подаваемых на узел. Источниковые узлы определяются как узлы, имеющие свойство numberOfInputs со значением 0.

AudioNode.numberOfOutputs Только чтение

Возвращает количество выходов, выходящих из узла. Узлы назначения — такие как AudioDestinationNode — имеют значение 0 для этого атрибута.

AudioNode.channelCount

Представляет целое число, используемое для определения количества каналов, используемых при смешивании и разделении каналов подключений к любым входам узла. Его использование и точное определение зависят от значения AudioNode.channelCountMode.

AudioNode.channelCountMode

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

AudioNode.channelInterpretation

Представляет перечисление, описывающее значение каналов. Это толкование определит, как произойдёт смешивание и разделение каналов звука. Возможные значения — "speakers" или "discrete".

Методы экземпляра

Также реализует методы из интерфейса EventTarget.

AudioNode.connect()

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

AudioNode.disconnect()

Позволяет отключить текущий узел от другого узла, к которому он уже подключён.

Описание

Граф маршрутизации звука

AudioNodes participating in an AudioContext create an audio routing graph.

Каждый AudioNode имеет входы и выходы, и несколько узлов звука соединяются, чтобы создать график обработки. Этот граф содержится в AudioContext, и каждый узел звука может принадлежать только одному контексту звука.

Источник звука имеет ноль входов, но один или несколько выходов и может использоваться для генерации звука. С другой стороны, узел назначения не имеет выходов; вместо этого все его входы воспроизводятся непосредственно через динамики (или любое другое устройство вывода звука, используемое контекстом звука). Кроме того, существуют узлы обработки, имеющие входы и выходы. Точная обработка отличается в зависимости от AudioNode , но, как правило, узел считывает свои входы, выполняет некоторую обработку звука и генерирует новые значения для своих выходов или пропускает звук (например, в AnalyserNode, где результат обработки доступен отдельно).

Чем больше узлов в графе, тем выше задержка будет. Например, если у вашего графа задержка 500 мс, когда источник звука воспроизводит звук, потребуется полсекунды, прежде чем этот звук будет услышан через динамики (или даже дольше из-за задержки в базовом устройстве аудио). Поэтому, если вам нужна интерактивность аудио, поддерживайте граф как можно меньше и размещайте управляемые пользователем узлы звука в конце графа. Например, управление громкостью (GainNode) должно быть последним узлом, чтобы изменения громкости имели мгновенный эффект.

Каждый вход и выход имеет определённое количество каналов. Например, моноаудио имеет один канал, а стереоаудио — два канала. API Web Audio будет смешивать или разделять каналы по мере необходимости; см. спецификацию Web Audio для получения подробностей.

Список всех узлов звука см. на главной странице Web Audio API.

Создание узла AudioNode

Существует два способа создания узла AudioNode: через конструктор и через метод фабрики.

// constructor
const analyserNode = new AnalyserNode(audioCtx, {
  fftSize: 2048,
  maxDecibels: -25,
  minDecibels: -60,
  smoothingTimeConstant: 0.5,
});
// factory method
const analyserNode = audioCtx.createAnalyser();
analyserNode.fftSize = 2048;
analyserNode.maxDecibels = -25;
analyserNode.minDecibels = -60;
analyserNode.smoothingTimeConstant = 0.5;

Вы можете использовать конструкторы или методы фабрики, или сочетать их, однако существуют преимущества использования конструкторов:

  • Все параметры можно установить во время создания и не нужно устанавливать их по отдельности.
  • Вы можете наследовать узел аудио. Хотя фактическая обработка выполняется внутри браузером и не может быть изменена, вы можете написать оболочку вокруг узла аудио, чтобы обеспечить пользовательские свойства и методы.
  • Несколько лучшая производительность: и в Chrome, и в Firefox методы фабрики вызывают конструкторы внутри.

Краткая история: Первая версия спецификации Web Audio определяла только методы фабрики. После обзора дизайна в октябре 2013 года было решено добавить конструкторы, потому что у них есть многочисленные преимущества перед методами фабрики. Конструкторы были добавлены в спецификацию с августа по октябрь 2016 года. Методы фабрики продолжают включаться в спецификацию и не устарели.

Пример

Этот простой фрагмент кода демонстрирует создание некоторых узлов аудио и то, как можно использовать свойства и методы узла AudioNode. Примеры такого использования можно найти в любых примерах, связанных на странице Web Audio API (например, Violent Theremin).

const audioCtx = new AudioContext();

const oscillator = new OscillatorNode(audioCtx);
const gainNode = new GainNode(audioCtx);

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

oscillator.context;
oscillator.numberOfInputs;
oscillator.numberOfOutputs;
oscillator.channelCount;

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

Спецификация
Web Audio API
# AudioNode

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

Настольный компьютер Мобильный телефон
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari на iOS Samsung Internet WebView Android
AudioNode 14 12 25 15 6 18 25 14 6 1.0 4.4.3
channelCount 27 12 25 15 7 27 25 15 7 1.5 ≤37
channelCountMode 27 12 25 15 7 27 25 15 7 1.5 ≤37
channelInterpretation 27 12 25 15 7 27 25 15 7 1.5 ≤37
connect 14 12 25 15 6 18 25 14 6 1.0 4.4.3
context 14 12 25 15 6 18 25 14 6 1.0 4.4.3
disconnect 14 12 25 15 6 18 25 14 6 1.0 4.4.3
numberOfInputs 14 12 25 15 6 18 25 14 6 1.0 4.4.3
numberOfOutputs 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

Spec-Zone.ru

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