AudioContext
Интерфейс AudioContext можно представить как граф, состоящий из связанных между собой узлов AudioNode
. С помощью этого интерфейса можно контролировать как создание узлов, из которых состоит AudioContext, так и контролировать обработку и декодирование звука. Необходимо создать AudioContext перед тем как делать что-либо ещё со звуком, так как всё что происходит при обработке звука, происходит внутри AudioContext.
AudioContext может выступать как обработчик событий, и он реализует интерфейс EventTarget
.
Свойства
AudioContext.currentTime
Только для чтения-
Содержит число с типом double, которое содержит значение времени в секундах, полученное от часов компьютера клиента. Это значение не может быть изменено никаким образом, оно только для чтения.
AudioContext.destination
(en-US) Только для чтения-
Содержит ссылку на
AudioDestinationNode
(en-US), представляющий собой точку назначения для всего аудио в этом контексте. Может рассматриваться как, например, аудио-воспроизводящее устройство. AudioContext.listener
(en-US) Только для чтения-
Содержит ссылку на объект
AudioListener
(en-US), применяется для ориентирования в 3D-пространстве. AudioContext.sampleRate
(en-US) Только для чтения-
Содержит число с типом float, представляющее собой частоту сэмплирования звука (sample rate), используемую всеми узлами в этом контексте. Это значение только для чтения и не может быть изменено.
AudioContext.mozAudioChannelType
Non-standard Только для чтения-
Содержит ссылку на аудио-канал, который будет использоваться для воспроизведения звука в
AudioContext
на устройствах с FireFox OS. Только для чтения.
Методы
Также реализованы методы из интерфейса EventTarget
.
AudioContext.createBuffer()
(en-US)-
Создаёт новый пустой объект
AudioBuffer
, в который затем могут помещаться данные для воспроизведения черезAudioBufferSourceNode
(en-US). AudioContext.createBufferSource()
(en-US)-
Создаёт объект
AudioBufferSourceNode
(en-US), который может быть использован для воспроизведения и обработки данных звукового потока, содержащегося в объектеAudioBuffer
. Объекты типаAudioBuffer
создаются с помощью методаAudioContext.createBuffer
(en-US) или возвращаются методомAudioContext.decodeAudioData
(en-US), когда декодирование аудио-дорожки успешно завершено. AudioContext.createMediaElementSource()
-
Создаёт объект
MediaElementAudioSourceNode
, ассоциированный сHTMLMediaElement
. Может использоваться для воспроизведения или манипулирования данными звукового потока из<video>
или<audio>
элементов. AudioContext.createMediaStreamSource()
(en-US)-
Создаёт объект
MediaStreamAudioSourceNode
(en-US), ассоциированный сMediaStream
, и который представляет аудио-поток, поступающий от подключённого к клиентскому компьютеру микрофона или других источников. AudioContext.createMediaStreamDestination()
(en-US)-
Создаёт объект
MediaStreamAudioDestinationNode
(en-US), ассоциированный сMediaStream
и представляющий собой аудио-поток, который можно сохранить в локальный файл или передать на другой компьютер. AudioContext.createScriptProcessor()
(en-US)-
Создаёт объект
ScriptProcessorNode
(en-US), который может быть использован для прямой обработки звука с помощью JavaScript. AudioContext.createAnalyser()
(en-US)-
Создаёт объект
AnalyserNode
, который может быть использован для получения времени воспроизведения и частоты воспроизводимого звука, что, в свою очередь может быть использовано для визуализации звукового потока. AudioContext.createBiquadFilter()
(en-US)-
Создаёт объект
BiquadFilterNode
(en-US), который представляет собой фильтр второго порядка, конфигурируемый как фильтр верхних частот, как фильтр нижних частот, фильтр полосы пропускания и так далее. AudioContext.createChannelMerger()
(en-US)-
Создаёт объект
ChannelMergerNode
(en-US), который используется для слияния каналов из множества аудио-потоков в один аудио-поток. AudioContext.createChannelSplitter()
(en-US)-
Создаёт объект
ChannelSplitterNode
(en-US), который используется для доступа к отдельным каналам аудио-потока для их дальнейшей обработки по отдельности. AudioContext.createConvolver()
(en-US)-
Создаёт объект
ConvolverNode
(en-US), который может быть использован для применения эффекта свёртки (convolution effect) к аудио-графу. Например, для создания эффекта реверберации. AudioContext.createDelay()
(en-US)-
Создаёт объект
DelayNode
(en-US), который может быть использован для задержки входящего аудио-сигнала на определённое время. Этот узел также удобен для создания петель обратной связи (feedback loops) в Web Audio графе. AudioContext.createDynamicsCompressor()
(en-US)-
Создаёт объект
DynamicsCompressorNode
(en-US), который может быть использован для акустической компрессии аудио-сигнала. AudioContext.decodeAudioData()
(en-US)-
Асинхронно декодирует данные из аудио-файла, находящиеся в
ArrayBuffer
. В этом случае ArrayBuffer заполняется при ответе на запросXMLHttpRequest
.и установке
атрибутаresponseType
вarraybuffer
. Этот метод работает только с полными аудио-файлами и не работает с их фрагментами. AudioContext.createGain()
(en-US)-
Создаёт объект
GainNode
(en-US), который может быть использован для контроля общей громкости во всём аудио-графе. AudioContext.createOscillator()
(en-US)-
Создаёт объект
OscillatorNode
(en-US), источник, представляющий собой периодическую волну звукового сигнала. AudioContext.createPanner()
-
Создаёт объект
PannerNode
, который используется для пространственного определения аудио-потока в трёхмерном пространстве. AudioContext.createPeriodicWave()
(en-US)-
Создаёт объект
PeriodicWave
(en-US), используемый для определения периодической волны звукового сигнала, которая, в свою очередь, используется для определения вывода вOscillatorNode
(en-US). AudioContext.createWaveShaper()
(en-US)-
Создаёт объект
WaveShaperNode
(en-US), который может быть использован для создания эффектов нелинейных звуковых искажений. AudioContext.createAudioWorker()
-
Создаёт объект
AudioWorkerNode
, который может взаимодействовать с потоком web worker для непосредственных генерации, обработки или анализа аудио данных. Этот метод был добавлен в спецификацию 29 августа 2014 года и не в каждом браузере пока поддерживается.
Устаревшие методы
AudioContext.createJavaScriptNode()
(en-US)-
Создаёт объект
JavaScriptNode
, используемый для непосредственной обработки звука в JavaScript. Этот метод устарел и заменён наAudioContext.createScriptProcessor()
(en-US). AudioContext.createWaveTable()
(en-US)-
Создаёт объект
WaveTableNode
, для определения периодической волны звукового сигнала. Этот метод устарел и заменён наAudioContext.createPeriodicWave()
(en-US).
Примеры
Простая декларация аудио-контекста:
js
var audioCtx = new AudioContext();
Кросс-браузерный вариант:
js
var AudioContext = window.AudioContext || window.webkitAudioContext;
var audioCtx = new AudioContext();
var oscillatorNode = audioCtx.createOscillator();
var gainNode = audioCtx.createGain();
var finish = audioCtx.destination;
// etc.
Спецификации
Specification |
---|
Web Audio API # AudioContext |
Совместимость с браузерами
BCD tables only load in the browser