Веб-API для аудио
Базовая версия Широко поддерживается *
Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна во всех браузерах с апреля 2021 года.
* Некоторые части этой функции могут иметь различный уровень поддержки.
Веб-API для аудио предоставляет мощную и универсальную систему управления звуком в веб-приложениях, позволяя разработчикам выбирать источники звука, добавлять эффекты к звуку, создавать визуализации звука, применять пространственные эффекты (например, панорамирование) и многое другое.
Основные понятия и использование веб-API для аудио
Веб-API для аудио предполагает обработку аудиоопераций внутри аудиоконтекста и разработан для модульного маршрутизирования. Базовые аудиооперации выполняются с помощью аудиоузлов, которые связываются друг с другом, образуя граф маршрутизации аудио. Поддерживается несколько источников с различными типами компоновки каналов даже в рамках одного контекста. Эта модульная структура обеспечивает гибкость для создания сложных функций аудио с динамическими эффектами.
Аудиоузлы связываются в цепочки и простые сети через свои входы и выходы. Обычно они начинаются с одного или нескольких источников. Источники предоставляют массивы интенсивностей звука (образцы) в очень малых временных срезах, часто десятки тысяч из них в секунду. Они могут быть вычислены математически (например, OscillatorNode), или они могут быть записями из звуковых/видео файлов (например, AudioBufferSourceNode и MediaElementAudioSourceNode) и аудиопотоков (MediaStreamAudioSourceNode). Фактически, звуковые файлы — это просто записи интенсивностей звука, которые поступают с микрофонов или электронных инструментов и смешиваются в одну сложную волну.
Выходы этих узлов могут быть связаны со входами других, которые смешивают или изменяют эти потоки образцов звука в разные потоки. Распространённое изменение — умножение образцов на значение, чтобы сделать их громче или тише (как в случае с GainNode). После того, как звук был достаточно обработан для желаемого эффекта, он может быть связан с входом назначения (BaseAudioContext.destination), которое отправляет звук на динамики или наушники. Это последнее соединение необходимо только в том случае, если пользователь должен услышать звук.
Типичный простой рабочий процесс для веб-аудио выглядит следующим образом:
- Создайте аудиоконтекст
- Внутри контекста создайте источники — например,
<audio>, генератор, поток - Создайте узлы эффектов, такие как реверберация, биквадратный фильтр, панорамирование, компрессор
- Выберите конечное назначение аудио, например, динамики вашего устройства
- Подключите источники к эффектам, а эффекты к назначению.
Время контролируется с высокой точностью и низкой задержкой, позволяя разработчикам писать код, который точно реагирует на события и способен нацеливаться на конкретные образцы, даже при высокой частоте дискретизации. Таким образом, такие приложения, как ударные установки и секвенсоры, вполне осуществимы.
Веб-API для аудио также позволяет контролировать пространственное расположение звука. Используя систему, основанную на модели «источник-слушатель», он позволяет управлять моделью панорамирования и обрабатывает затухание, вызванное расстоянием, от перемещающегося источника (или перемещающегося слушателя).
Примечание: Более подробную информацию о теории веб-API для аудио можно найти в нашей статье Основные понятия веб-API для аудио.
Целевая аудитория веб-API для аудио
Веб-API для аудио может показаться сложным для тех, кто не знаком с аудио- или музыкальными терминами, и, поскольку он включает в себя большое количество функций, для разработчиков может быть непросто начать работу.
Он может использоваться для добавления аудио в ваш веб-сайт или приложение, например, создавая атмосферу как futurelibrary.no, или предоставляя слуховые подсказки для форм. Однако он также может использоваться для создания сложных интерактивных инструментов. Учитывая это, он подходит как для разработчиков, так и для музыкантов.
У нас есть простой вводный учебник для тех, кто знаком с программированием, но нуждается в хорошем введении в термины и структуру API.
Также есть статья Основные понятия веб-API для аудио, чтобы помочь вам понять работу цифрового звука, особенно в контексте API. Она также включает хорошее введение в некоторые концепции, на которых основан API.
Обучение программированию похоже на игру в карты — вы учите правила, играете, возвращаетесь и учите правила снова, и так далее. Поэтому если некоторые теоретические аспекты не совсем понятны после первого руководства и статьи, существует расширенное руководство, которое дополняет первое, помогая вам практиковаться в изученном и применять более продвинутые методы для создания секвенсора.
У нас также есть другие учебники и справочные материалы, охватывающие все функции API. Дополнительную информацию см. в боковой панели этой страницы.
Если вы более знакомы с музыкальной стороной, знакомы с концепциями музыкальной теории, хотите создавать инструменты, то можете начать создавать их, используя расширенное руководство и другие руководства в качестве пособия (в указанном руководстве рассматриваются планирование нот, создание индивидуальных генераторов и огибающих, а также LFO и многие другие темы).
Если вы не знакомы с основами программирования, возможно, вам сначала стоит обратиться к руководствам по JavaScript для начинающих, а затем вернуться сюда — наш модуль по изучению JavaScript для начинающих — отличное место для начала.
Интерфейсы веб-API для аудио
Веб-API для аудио имеет ряд интерфейсов и связанных событий, которые мы разделили на девять категорий функций.
Общее определение графа аудио
Общие контейнеры и определения, формирующие графики аудио в веб-API для аудио.
AudioContext-
Интерфейс
AudioContextпредставляет собой граф обработки аудио, созданный из соединенных друг с другом аудиомодулей, каждый из которых представленAudioNode. Аудиоконтекст управляет созданием узлов, которые он содержит, и выполнением обработки аудио или декодирования. Вам нужно создатьAudioContextперед выполнением любых других действий, так как все происходит внутри контекста. AudioNode-
Интерфейс
AudioNodeпредставляет собой модуль обработки аудио, такой как источник звука (например, HTML<audio>или<video>элемент), назначение звука, промежуточный модуль обработки (например, фильтр, какBiquadFilterNode, или управление громкостью, какGainNode). AudioParam-
Интерфейс
AudioParamпредставляет собой параметр, связанный со звуком, например, один изAudioNode. Он может быть установлен на определенное значение или изменён, и его можно запланировать на определённое время и по определённому шаблону. AudioParamMap-
Предоставляет интерфейс типа карты для группы интерфейсов
AudioParam, что означает, что он предоставляет методыforEach(),get(),has(),keys(), иvalues(), а также свойствоsize. BaseAudioContext-
Интерфейс
BaseAudioContextслужит базовым определением для онлайн и офлайн графиков обработки звука, представленных соответственноAudioContextиOfflineAudioContext. Вы не будете использоватьBaseAudioContextнапрямую — вы будете использовать его функции через один из этих двух наследуемых интерфейсов. - Событие
ended -
Событие
endedсрабатывает, когда воспроизведение остановлено из-за достижения конца медиа.
Определение источников звука
Интерфейсы, определяющие источники звука для использования в API Web Audio.
AudioScheduledSourceNode-
Интерфейс
AudioScheduledSourceNodeявляется родительским интерфейсом для нескольких типов интерфейсов узлов источников звука. Он являетсяAudioNode. OscillatorNode-
Интерфейс
OscillatorNodeпредставляет собой периодическую форму волны, такую как синусоидальная или треугольная. Это модуль обработки аудиоAudioNode, который вызывает создание волны с заданной частотой. AudioBuffer-
Интерфейс
AudioBufferпредставляет собой короткий аудио-актив, хранящийся в памяти, созданный из аудиофайла с помощью методаBaseAudioContext.decodeAudioDataили созданный с использованием исходных данных с помощьюBaseAudioContext.createBuffer. После декодирования в этот формат аудио может быть помещен вAudioBufferSourceNode. AudioBufferSourceNode-
Интерфейс
AudioBufferSourceNodeпредставляет собой источник звука, состоящий из аудиоданных в памяти, хранящихся вAudioBuffer. ЭтоAudioNode, который действует как источник звука. MediaElementAudioSourceNode-
Интерфейс
MediaElementAudioSourceNodeпредставляет собой источник звука, состоящий из HTML-элемента<audio>или<video>. ЭтоAudioNode, который действует как источник звука. MediaStreamAudioSourceNode-
Интерфейс
MediaStreamAudioSourceNodeпредставляет собой источник звука, состоящий изMediaStream(например, веб-камеры, микрофона или потока, отправляемого с удаленного компьютера). Если в потоке присутствует несколько аудиодорожек, используется дорожка, чьё значениеidстоит первой лексикографически (алфавитно). ЭтоAudioNode, который действует как источник звука. MediaStreamTrackAudioSourceNode-
Узел типа
MediaStreamTrackAudioSourceNodeпредставляет собой источник звука, данные которого поступают сMediaStreamTrack. При создании узла с помощью методаcreateMediaStreamTrackSource()для создания узла вы указываете, какую дорожку использовать. Это предоставляет больший контроль, чемMediaStreamAudioSourceNode.
Определение фильтров аудиоэффектов
Интерфейсы для определения эффектов, которые вы хотите применить к своим источникам звука.
BiquadFilterNode-
Интерфейс
BiquadFilterNodeпредставляет собой простой фильтр низкого порядка. ЭтоAudioNode, который может представлять различные виды фильтров, устройств управления тоном или графических эквалайзеров. УBiquadFilterNodeвсегда ровно один вход и один выход. ConvolverNode-
Интерфейс
ConvolverNodeявляетсяAudioNode, который выполняет линейную свёртку над заданнымAudioBufferи часто используется для достижения эффекта реверберации. DelayNode-
Интерфейс
DelayNodeпредставляет собой линию задержки; модуль обработки аудиоAudioNode, который вызывает задержку между поступлением входных данных и его распространением на выход. DynamicsCompressorNode-
Интерфейс
DynamicsCompressorNodeобеспечивает эффект компрессии, который понижает громкость самых громких частей сигнала, чтобы предотвратить клиппинг и искажение, которые могут возникнуть при воспроизведении и одновременном мультиплексировании нескольких звуков. GainNode-
Интерфейс
GainNodeпредставляет собой изменение громкости. Это модуль обработки аудиоAudioNode, который применяет заданный усиление к входным данным перед их распространением на выход. WaveShaperNode-
Интерфейс
WaveShaperNodeпредставляет собой нелинейный искажатель. ЭтоAudioNode, который использует кривую для применения волнового искажения к сигналу. Помимо очевидных эффектов искажения, его часто используют, чтобы добавить тепло к сигналу. PeriodicWave-
Описывает периодическую волну, которая может использоваться для формирования выходного сигнала
OscillatorNode. IIRFilterNode-
Реализует общий фильтр бесконечной импульсной характеристики (IIR); этот тип фильтра может использоваться для реализации устройств управления тоном и графических эквалайзеров.
Определение аудио-назначений
После обработки звука, эти интерфейсы определяют, куда его выводить.
AudioDestinationNode-
Интерфейс
AudioDestinationNodeпредставляет собой конечное назначение источника звука в данном контексте — обычно динамики вашего устройства. MediaStreamAudioDestinationNode-
Интерфейс
MediaStreamAudioDestinationNodeпредставляет собой аудио-назначение, состоящее из WebRTCMediaStreamс единственнымAudioMediaStreamTrack, который может быть использован подобноMediaStream, полученному изgetUserMedia(). ЭтоAudioNode, который действует как аудио-назначение.
Анализ и визуализация данных
Если вам нужно извлечь временные, частотные и другие данные из вашего аудио, то вам понадобится AnalyserNode.
AnalyserNode-
Интерфейс
AnalyserNodeпредставляет собой узел, способный предоставлять информацию о частотной и временной области в режиме реального времени для целей анализа и визуализации данных.
Разделение и объединение аудиоканалов
Для разделения и объединения аудиоканалов вы будете использовать эти интерфейсы.
ChannelSplitterNode-
Интерфейс
ChannelSplitterNodeразделяет различные каналы источника звука на набор моно выходов. ChannelMergerNode-
Интерфейс
ChannelMergerNodeобъединяет различные моно входы в один выход. Каждый вход будет использован для заполнения канала на выходе.
Аудио пространств
Эти интерфейсы позволяют вам добавлять эффекты панорамирования аудио пространств к вашим источникам звука.
AudioListener-
Интерфейс
AudioListenerпредставляет собой положение и ориентацию единственного человека, слушающего аудио сцену, используемую в аудио пространственном звуке. PannerNode-
Интерфейс
PannerNodeпредставляет собой положение и поведение сигнала источника звука в 3D пространстве, позволяя создавать сложные эффекты панорамирования. StereoPannerNode-
Интерфейс
StereoPannerNodeпредставляет собой простой стерео-панорамный узел, который может использоваться для панорамирования аудиопотока влево или вправо.
Обработка аудио в JavaScript
Используя аудио-ворклеты, вы можете определять пользовательские аудио-узлы, написанные на JavaScript или WebAssembly. Аудио-ворклеты реализуют интерфейс Worklet, облегчённую версию интерфейса Worker.
AudioWorklet-
Интерфейс
AudioWorkletдоступен через объектAudioContextпо свойствуaudioWorkletи позволяет добавлять модули в аудио-ворклет для выполнения вне основного потока. AudioWorkletNode-
Интерфейс
AudioWorkletNodeпредставляет аудио-узел, встроенный в аудио-граф, и может передавать сообщения соответствующемуAudioWorkletProcessor. AudioWorkletProcessor-
Интерфейс
AudioWorkletProcessorпредставляет код обработки звука, выполняющийся вAudioWorkletGlobalScopeи генерирующий, обрабатывающий или анализирующий звук непосредственно, и может передавать сообщения соответствующемуAudioWorkletNode. AudioWorkletGlobalScope-
Интерфейс
AudioWorkletGlobalScope— производный отWorkletGlobalScopeобъект, представляющий контекст потока, в котором выполняется скрипт обработки звука; он предназначен для возможности генерации, обработки и анализа аудиоданных непосредственно с помощью JavaScript в потоке ворклета, а не в основном потоке.
Устаревшие: узлы script processor
До определения аудио-ворклетов API Web Audio использовал ScriptProcessorNode для обработки звука на JavaScript. Поскольку код выполняется в основном потоке, производительность у них плохая. ScriptProcessorNode сохраняется по историческим причинам, но отмечен как устаревший.
-
ScriptProcessorNodeУстаревший -
Интерфейс
ScriptProcessorNodeпозволяет генерировать, обрабатывать или анализировать звук с помощью JavaScript. Это модуль обработки аудио, который связан с двумя буферами: одним, содержащим текущий вход, и другим, содержащим выход. Каждый раз, когда буфер ввода содержит новые данные, в объект отправляется событие, реализующее интерфейсAudioProcessingEvent, а обработчик события завершается, когда он заполнит буфер вывода данными. -
audioprocess(событие) Устаревший -
Событие
audioprocessсрабатывает, когда буфер ввода API Web AudioScriptProcessorNodeготов к обработке. -
AudioProcessingEventУстаревший -
AudioProcessingEventпредставляет события, возникающие, когда буфер вводаScriptProcessorNodeготов к обработке.
Обработка звука офлайн/в фоновом режиме
Можно очень быстро обработать/отрендерить аудио-граф в фоновом режиме — отрендерить его в AudioBuffer, а не в динамики устройства — с помощью следующего.
OfflineAudioContext-
Интерфейс
OfflineAudioContext— это интерфейсAudioContext, представляющий аудио-граф, построенный из соединённыхAudioNodeэлементов. В отличие от стандартногоAudioContext,OfflineAudioContextне рендерит звук, а генерирует его, насколько это возможно быстро, в буфере. -
complete(событие) -
Событие
completeсрабатывает, когда завершается рендерингOfflineAudioContext. OfflineAudioCompletionEvent-
OfflineAudioCompletionEventпредставляет события, которые происходят при завершении обработкиOfflineAudioContext. Событиеcompleteиспользует этот интерфейс.
Руководства и учебные пособия
- Расширенные методы: Создание и упорядочивание звука
В этом руководстве мы рассмотрим создание и изменение звука, а также временные интервалы и планирование. Мы познакомимся с загрузкой образцов, огибающими, фильтрами, таблицей волн и модуляцией частоты. Если вы знакомы с этими терминами и ищете введение в их применение с помощью API Web Audio, вы попали по адресу.
- Обработка звука в фоновом режиме с помощью AudioWorklet
В этой статье объясняется, как создать процессор аудио-ворклет и использовать его в приложении Web Audio.
- Основные понятия API Web Audio
В этой статье объясняются некоторые теоретические основы звука, лежащие в основе работы функций API Web Audio, чтобы помочь вам принимать обоснованные решения при проектировании схемы маршрутизации звука в вашем приложении. Если вы не звукоинженер, эта статья предоставит достаточно информации, чтобы понять, почему API Web Audio работает именно так.
- Управление несколькими параметрами с помощью ConstantSourceNode
В этой статье показано, как использовать
ConstantSourceNodeдля связывания нескольких параметров вместе, чтобы они делили одно значение, которое можно изменить, установив значение параметраConstantSourceNode.offset.- Пример и учебное пособие: Простой синтезатор с клавиатурой
В этой статье представлены код и демонстрация работы виртуальной клавиатуры, которую можно играть с помощью мыши. Клавиатура позволяет переключаться между стандартными формами волн, а также одной пользовательской формой волны, и вы можете контролировать основной усиление с помощью ползунка громкости под клавиатурой. В этом примере используются следующие интерфейсы API Web:
AudioContext,OscillatorNode,PeriodicWave, иGainNode.- Использование IIR-фильтров
Интерфейс
IIRFilterNodeAPI Web Audio представляет собой процессор, реализующий общий фильтр бесконечной импульсной характеристики (IIR); этот тип фильтра может использоваться для реализации устройств коррекции тона и графических эквалайзеров, а параметры отклика фильтра могут быть указаны, что позволяет настроить его в соответствии с вашими потребностями. В этой статье показано, как реализовать его и использовать в простом примере.- Использование API Web Audio
Давайте рассмотрим, как начать работу с API Web Audio. Мы кратко рассмотрим некоторые концепции, а затем изучим простой пример бумбокса, который позволит нам загрузить аудиодорожку, воспроизводить и приостанавливать её, изменять громкость и стереопанорамирование.
- Визуализация с помощью API Web Audio
Одна из самых интересных особенностей API Web Audio — это возможность извлекать данные о частоте, форме волны и другие данные из вашего источника звука, которые затем можно использовать для создания визуализаций. В этой статье рассказывается, как это сделать, и приводятся несколько основных примеров использования.
- Рекомендации по использованию API Web Audio
Нет строго правильного или неправильного способа написания творческого кода. Достаточно учесть безопасность, производительность и доступность, чтобы приспособиться к собственному стилю. В этой статье мы поделимся рядом рекомендаций — указаний, советов и приёмов работы с API Web Audio.
- Основы пространственной обработки звука Web Audio
Как будто обширного разнообразия возможностей обработки звука (и прочего) недостаточно, API Web Audio также содержит средства для имитации различия звука в зависимости от перемещения слушателя вокруг источника звука, например, панорамирования, когда вы перемещаетесь вокруг источника звука внутри 3D игры. Официальное название этого — пространственная обработка звука, и в этой статье будут рассмотрены основы реализации такой системы.
Примеры
Вы можете найти множество примеров в нашем репозитории webaudio-examples на GitHub.
Спецификации
| Спецификация |
|---|
| API Web Audio # AudioContext |
Совместимость с браузерами
| Настольный | Мобильный | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox for Android | Opera Android | Safari on IOS | Samsung Internet | WebView Android | |
AudioContext |
35["До Chrome 66 каждая вкладка в Chrome ограничена 6 аудиоконтекстами; попытка создать больше вызовет исключениеDOMException. Подробнее см. Ограничение аудиоконтекста на вкладку в Chrome.", "Если latencyHint недействителен, Chrome выдаёт исключение TypeError. Подробнее см. Нестандартные исключения в Chrome."] |
12 | 25 |
22["До Opera 53 каждая вкладка в Opera ограничена 6 аудиоконтекстами; попытка создать больше вызовет исключениеDOMException. Подробнее см. Ограничение аудиоконтекста на вкладку в Chrome.", "Если latencyHint недействителен, Opera выдаёт исключение TypeError. Подробнее см. Нестандартные исключения в Chrome."] |
14.1Новые аудиоконтексты приостанавливаются до тех пор, пока методresume() не будет вызван действием пользователя, например, событием click. |
35["До Chrome Android 66 каждая вкладка в Chrome Android ограничена 6 аудиоконтекстами; попытка создать больше вызовет исключениеDOMException. Подробнее см. Ограничение аудиоконтекста на вкладку в Chrome Android.", "Если latencyHint недействителен, Chrome Android выдаёт исключение TypeError. Подробнее см. Нестандартные исключения в Chrome Android."] |
25 |
22["До Opera Android 47 каждая вкладка в Opera ограничена 6 аудиоконтекстами; попытка создать больше вызовет исключениеDOMException. Подробнее см. Ограничение аудиоконтекста на вкладку в Chrome.", "Если latencyHint недействителен, Opera выдаёт исключение TypeError. Подробнее см. Нестандартные исключения в Chrome."] |
14.5Новые аудиоконтексты приостанавливаются до тех пор, пока методresume() не будет вызван действием пользователя, например, событием click. |
3.0["До Samsung Internet 9.0 каждая вкладка в Samsung Internet ограничена 6 аудиоконтекстами; попытка создать больше вызовет исключениеDOMException. Подробнее см. Ограничение аудиоконтекста на вкладку в Chrome.", "Если latencyHint недействителен, Samsung Internet выдаёт исключение TypeError. Подробнее см. Нестандартные исключения в Chrome."] |
37["До WebView 66 каждая вкладка в WebView ограничена 6 аудиоконтекстами; попытка создать больше вызовет исключениеDOMException. Подробнее см. Ограничение аудиоконтекста на вкладку в Chrome.", "Если latencyHint недействителен, WebView выдаёт исключение TypeError. Подробнее см. Нестандартные исключения в Chrome."] |
Web_Audio_API |
3514–57 | 12 | 25 | 2215–44 | 14.16–14.1 | 3518–57 | 25 | 2214–43 | 14.56–14.5 | 3.01.0–7.0 | 374.4–57 |
baseLatency |
58 | 79 | 70 | 45 | 14.1 | 58 | 79 | 43 | 14.5 | 7.0 | 58 |
close |
42 | 14 | 40 | 29 | 9 | 42 | 40 | 29 | 9 | 4.0 | 42 |
createMediaElementSource |
15 | 12 | 25Если частота дискретизации указана для аудиоконтекста, она должна совпадать с частотой дискретизации потока, иначе этот метод завершится неудачей. |
15 | 6 | 18 | 25Если частота дискретизации указана для аудиоконтекста, она должна совпадать с частотой дискретизации потока, иначе этот метод завершится неудачей. |
14 | 6 | 1.0 | ≤37 |
createMediaStreamDestination |
25 | 79 | 25 | 15 | 11 | 25 | 25 | 14 | 11 | 1.5 | ≤37 |
createMediaStreamSource |
22 | 12 | 25 | 15 | 11 | 25 | 25 | 14 | 11 | 1.5 | ≤37 |
createMediaStreamTrackSource |
Нет | Нет | 68Firefox 68 реализует обновлённое определение "первой" звуковой дорожки в стандарте; теперь первой дорожкой является та, чей ID идёт первым лексикографически. |
Нет | Нет | Нет | 68Firefox for Android 68 реализует обновлённое определение "первой" звуковой дорожки в стандарте; теперь первой дорожкой является та, чей ID идёт первым лексикографически. |
Нет | Нет | Нет | Нет |
error_event |
128 | 128 | Нет | 114 | Нет | 128 | Нет | 85 | Нет | Нет | 128 |
getOutputTimestamp |
57 | 79 | 70 | 44 | 14.1 | 57 | 79 | 43 | 14.5 | 7.0 | 57 |
outputLatency |
102 | 102 | 70 | 88 | Нет | 102 | 79 | 70 | Нет | 19.0 | 102 |
resume |
41 | 14 | 40 | 28 | 9 | 41 | 40 | 28 | 9 | 4.0 | 41 |
setSinkId |
110 | 110 | Нет | 96 | Нет | 110 | Нет | 74 | Нет | 21.0 | 110 |
sinkId |
110 | 110 | Нет | 96 | Нет | 110 | Нет | 74 | Нет | 21.0 | 110 |
sinkchange_event |
110 | 110 | Нет | 96 | Нет | 110 | Нет | 74 | Нет | 21.0 | 110 |
suspend |
41 | 14 | 40 | 28 | 9 | 41 | 40 | 28 | 9 | 4.0 | 41 |
См. также
Учебники/руководства
- Основные понятия Web Audio API
- Использование Web Audio API
- Расширенные техники: создание звука, последовательность, синхронизация, планирование
- Руководство по автовоспроизведению для медиа и Web Audio API
- Использование фильтров IIR
- Визуализация с помощью Web Audio API
- Основы пространственного звука Web Audio API
- Управление несколькими параметрами с помощью ConstantSourceNode
- Смешивание позиционного звука и WebGL (2012)
- Разработка звукового сопровождения игр с помощью Web Audio API (2012)
Библиотеки
- Tones: простая библиотека для воспроизведения определенных тонов/нот с помощью Web Audio API.
- Tone.js: фреймворк для создания интерактивной музыки в браузере.
- howler.js: библиотека аудио JS, которая по умолчанию использует Web Audio API и использует HTML Audio в качестве резервного варианта, а также предоставляет другие полезные функции.
- Mooog: цепочки AudioNodes в стиле jQuery, микшер-стильные отправки/возвраты и многое другое.
- XSound: Библиотека Web Audio API для синтезатора, эффектов, визуализации, записи и т. д.
- OpenLang: веб-приложение для лаборатории языка HTML-видео, использующее Web Audio API для записи и объединения видео и звука из разных источников в один файл (исходный код на GitHub)
- Pts.js: упрощает визуализацию веб-аудио (руководство)
Связанные темы
© 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/Web_Audio_API