Интерфейс AudioContext можно представить как граф, состоящий из связанных между собой узлов AudioNode. С помощью этого интерфейса можно контролировать как создание узлов, из которых состоит AudioContext, так и контролировать обработку и декодирование звука. Необходимо создать AudioContext перед тем как делать что-либо ещё со звуком, так как всё что происходит при обработке звука, происходит внутри AudioContext.
AudioContext может выступать как слушатель событий, и он реализует интерфейс EventTarget.
Свойства
AudioContext.currentTimeТолько для чтения- Содержит число с типом double, которое содержит значение времени в секундах, полученное от часов компьютера клиента. Это значение не может быть изменено никаким образом, оно только для чтения.
AudioContext.destinationТолько для чтения- Содержит ссылку на
AudioDestinationNode, представляющий собой точку назначения для всего аудио в этом контексте. Может рассматриваться как, например, аудио-воспроизводящее устройство. AudioContext.listenerТолько для чтения- Содержит ссылку на объект
AudioListener, применяется для ориентирования в 3D-пространстве. AudioContext.sampleRateТолько для чтения- Содержит число с типом float, представляющее собой частоту сэмплирования звука (sample rate), используемую всеми узлами в этом контексте. Это значение только для чтения и не может быть изменено.
AudioContext.mozAudioChannelTypeТолько для чтения- Содержит ссылку на аудио-канал, который будет использоваться для воспроизведения звука в
AudioContextна устройствах с FireFox OS. Только для чтения.
Методы
Также реализованы методы из интерфейса EventTarget.
AudioContext.createBuffer()- Создаёт новый пустой объект
AudioBuffer, в который затем могут помещаться данные для воспроизведения черезAudioBufferSourceNode. AudioContext.createBufferSource()- Создаёт объект
AudioBufferSourceNode, который может быть использован для воспроизведения и обработки данных звукового потока, содержащегося в объектеAudioBuffer. Объекты типаAudioBufferсоздаются с помощью методаAudioContext.createBufferили возвращаются методомAudioContext.decodeAudioData, когда декодирование аудио-дорожки успешно завершено. AudioContext.createMediaElementSource()- Создаёт объект
MediaElementAudioSourceNode, ассоциированный сHTMLMediaElement. Может использоваться для воспроизведения или манипулирования данными звукового потока из<video>или<audio>элементов. AudioContext.createMediaStreamSource()- Создаёт объект
MediaStreamAudioSourceNode, ассоциированный сMediaStream, и который представляет аудио-поток, поступающий от подключённого к клиентскому компьютеру микрофона или других источников. AudioContext.createMediaStreamDestination()- Создаёт объект
MediaStreamAudioDestinationNode, ассоциированный сMediaStreamи представляющий собой аудио-поток, который можно сохранить в локальный файл или передать на другой компьютер. AudioContext.createScriptProcessor()- Создаёт объект
ScriptProcessorNode, который может быть использован для прямой обработки звука с помощью JavaScript. AudioContext.createAnalyser()- Создаёт объект
AnalyserNode, который может быть использован для получения времени воспроизведения и частоты воспроизводимого звука, что, в свою очередь может быть использовано для визуализации звукового потока. AudioContext.createBiquadFilter()- Создаёт объект
BiquadFilterNode, который представляет собой фильтр второго порядка, конфигурируемый как фильтр верхних частот, как фильтр нижних частот, фильтр полосы пропускания и так далее. AudioContext.createChannelMerger()- Создаёт объект
ChannelMergerNode, который используется для слияния каналов из множества аудио-потоков в один аудио-поток. AudioContext.createChannelSplitter()- Создаёт объект
ChannelSplitterNode, который используется для доступа к отдельным каналам аудио-потока для их дальнейшей обработки по отдельности. AudioContext.createConvolver()- Создаёт объект
ConvolverNode, который может быть использован для применения эффекта свёртки (convolution effect) к аудио-графу. Например, для создания эффекта реверберации. AudioContext.createDelay()- Создаёт объект
DelayNode, который может быть использован для задержки входящего аудио-сигнала на определённое время. Этот узел также удобен для создания петель обратной связи (feedback loops) в Web Audio графе. AudioContext.createDynamicsCompressor()- Создаёт объект
DynamicsCompressorNode, который может быть использован для акустической компрессии аудио-сигнала. AudioContext.decodeAudioData()- Асинхронно декодирует данные из аудио-файла, находящиеся в
ArrayBuffer. В этом случае ArrayBuffer заполняется при ответе на запросXMLHttpRequest.и установкеатрибутаresponseTypeвarraybuffer. Этот метод работает только с полными аудио-файлами и не работает с их фрагментами. AudioContext.createGain()- Создаёт объект
GainNode, который может быть использован для контроля общей громкости во всём аудио-графе. AudioContext.createOscillator()- Создаёт объект
OscillatorNode, источник, представляющий собой периодическую волну звукового сигнала. AudioContext.createPanner()- Создаёт объект
PannerNode, который используется для пространственного определения аудио-потока в трехмерном пространстве. AudioContext.createPeriodicWave()- Создаёт объект
PeriodicWave, используемый для определения периодической волны звукового сигнала, которая, в свою очередь, используется для определения вывода вOscillatorNode. AudioContext.createWaveShaper()- Создаёт объект
WaveShaperNode, который может быть использован для создания эффектов нелинейных звуковых искажений. AudioContext.createAudioWorker()- Создаёт объект
AudioWorkerNode, который может взаимодействовать с потоком web worker для непосредственных генерации, обработки или анализа аудио данных. Этот метод был добавлен в спецификацию 29 августа 2014 года и не в каждом браузере пока поддерживается.
Устаревшие методы
AudioContext.createJavaScriptNode()- Создаёт объект
JavaScriptNode, используемый для непосредственной обработки звука в JavaScript. Этот метод устарел и заменён наAudioContext.createScriptProcessor(). AudioContext.createWaveTable()- Создаёт объект
WaveTableNode, для определения периодической волны звукового сигнала. Этот метод устарел и заменён наAudioContext.createPeriodicWave().
Примеры
Простая декларация аудио-контекста:
var audioCtx = new AudioContext;
Кросс-браузерный вариант:
var AudioContext = window.AudioContext || window.webkitAudioContext; var audioCtx = new AudioContext(); var oscillatorNode = audioCtx.createOscillator(); var gainNode = audioCtx.createGain(); var finish = audioCtx.destination; // etc.
Спецификации
| Specification | Status | Comment |
|---|---|---|
| Web Audio API Определение 'AudioContext' в этой спецификации. |
Рабочий черновик |
Совместимость с браузерами
| Feature | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari (WebKit) |
|---|---|---|---|---|---|
| Базовая поддержка | 10.0webkit | 25.0 (25.0) | Нет | 15.0webkit 22 (unprefixed) |
6.0webkit |
| Feature | Android | Firefox Mobile (Gecko) | Firefox OS | IE Mobile | Opera Mobile | Safari Mobile | Chrome for Android |
|---|---|---|---|---|---|---|---|
| Базовая поддержка | ? | 26.0 | 1.2 | ? | ? | ? | 33.0 |