The AudioContext
interface represents an audio-processing graph built from audio modules linked together, each represented by an AudioNode
. An audio context controls both the creation of the nodes it contains and the execution of the audio processing, or decoding. You need to create an AudioContext
before you do anything else, as everything happens inside a context. It's recommended to create one AudioContext and reuse it instead of initializing a new one each time, and it's OK to use a single AudioContext
for several different audio source and pipeline concurrently.
<div id="interfaceDiagram" style="display: inline-block; position: relative; width: 100%; padding-bottom: 11.666666666666666%; vertical-align: middle; overflow: hidden;"><svg style="display: inline-block; position: absolute; top: 0; left: 0;" viewbox="-50 0 600 70" preserveAspectRatio="xMinYMin meet"><a xlink:href="/docs/Web/API/EventTarget" target="_top"><rect x="1" y="1" width="110" height="50" fill="#fff" stroke="#D4DDE4" stroke-width="2px" /><text x="56" y="30" font-size="12px" font-family="Consolas,Monaco,Andale Mono,monospace" fill="#4D4E53" text-anchor="middle" alignment-baseline="middle">EventTarget</text></a><polyline points="111,25 121,20 121,30 111,25" stroke="#D4DDE4" fill="none"/><line x1="121" y1="25" x2="151" y2="25" stroke="#D4DDE4"/><a xlink:href="/docs/Web/API/AudioContext" target="_top"><rect x="151" y="1" width="120" height="50" fill="#F4F7F8" stroke="#D4DDE4" stroke-width="2px" /><text x="211" y="30" font-size="12px" font-family="Consolas,Monaco,Andale Mono,monospace" fill="#4D4E53" text-anchor="middle" alignment-baseline="middle">AudioContext</text></a></svg></div>
a:hover text { fill: #0095DD; pointer-events: all;}
Constructor
AudioContext()
- Creates and returns a new
AudioContext
object.
Properties
Also inherits properties from its parent interface, BaseAudioContext
.
AudioContext.baseLatency
Read only- Returns the number of seconds of processing latency incurred by the
AudioContext
passing the audio from theAudioDestinationNode
to the audio subsystem. AudioContext.outputLatency
Read only- Returns an estimation of the output latency of the current audio context.
Methods
Also inherits methods from its parent interface, BaseAudioContext
.
AudioContext.close()
- Closes the audio context, releasing any system audio resources that it uses.
AudioContext.createMediaElementSource()
- Creates a
MediaElementAudioSourceNode
associated with anHTMLMediaElement
. This can be used to play and manipulate audio from<video>
or<audio>
elements. AudioContext.createMediaStreamSource()
- Creates a
MediaStreamAudioSourceNode
associated with aMediaStream
representing an audio stream which may come from the local computer microphone or other sources. AudioContext.createMediaStreamDestination()
- Creates a
MediaStreamAudioDestinationNode
associated with aMediaStream
representing an audio stream which may be stored in a local file or sent to another computer. AudioContext.createMediaStreamTrackSource()
- Creates a
MediaStreamTrackAudioSourceNode
associated with aMediaStream
representing an media stream track. AudioContext.getOutputTimestamp()
- Returns a new
AudioTimestamp
object containing two audio timestamp values relating to the current audio context. AudioContext.resume()
- Resumes the progression of time in an audio context that has previously been suspended/paused.
AudioContext.suspend()
- Suspends the progression of time in the audio context, temporarily halting audio hardware access and reducing CPU/battery usage in the process.
Examples
Basic audio context declaration:
var audioCtx = new AudioContext();
Cross browser variant:
var AudioContext = window.AudioContext || window.webkitAudioContext; var audioCtx = new AudioContext(); var oscillatorNode = audioCtx.createOscillator(); var gainNode = audioCtx.createGain(); var finish = audioCtx.destination; // etc.
Specifications
Specification | Status | Comment |
---|---|---|
Web Audio API The definition of 'AudioContext' in that specification. |
Working Draft |
Browser compatibility
Desktop | Mobile | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
AudioContext | Chrome
Full support
35
| Edge Full support ≤18 | Firefox Full support 25 | IE No support No | Opera
Full support
22
| Safari
Full support
6
| WebView Android Full support Yes | Chrome Android
Full support
35
| Firefox Android Full support 26 | Opera Android
Full support
22
| Safari iOS
Full support
6
| Samsung Internet Android
Full support
3.0
|
AudioContext() constructor | Chrome
Full support
55
| Edge Full support ≤18 | Firefox Full support 25 | IE No support No | Opera Full support 42 | Safari
Full support
Yes
| WebView Android Full support 55 | Chrome Android
Full support
55
| Firefox Android Full support 26 | Opera Android Full support 42 | Safari iOS
Full support
Yes
| Samsung Internet Android
Full support
6.0
|
baseLatency | Chrome Full support 58 | Edge Full support ≤79 | Firefox Full support 70 | IE No support No | Opera Full support 45 | Safari No support No | WebView Android Full support 58 | Chrome Android Full support 58 | Firefox Android No support No | Opera Android Full support 43 | Safari iOS No support No | Samsung Internet Android Full support 7.0 |
close | Chrome Full support 42 | Edge Full support 14 | Firefox Full support 40 | IE No support No | Opera Full support Yes | Safari Full support Yes | WebView Android Full support 43 | Chrome Android Full support 43 | Firefox Android Full support 40 | Opera Android Full support Yes | Safari iOS Full support Yes | Samsung Internet Android Full support 4.0 |
createConstantSource | Chrome
No support
14 — 56
| Edge No support ≤18 — 79 | Firefox
No support
25 — ?
| IE No support No | Opera
No support
22 — 43
| Safari
No support
6 — ?
| WebView Android
No support
? — 56
| Chrome Android
No support
18 — 56
| Firefox Android
No support
26 — ?
| Opera Android
No support
22 — 43
| Safari iOS No support No | Samsung Internet Android
No support
1.0 — 6.0
|
createMediaElementSource | Chrome Full support 14 | Edge Full support 12 | Firefox Full support 25 | IE No support No | Opera Full support 15 | Safari Full support 6 | WebView Android Full support Yes | Chrome Android Full support 18 | Firefox Android Full support 26 | Opera Android Full support 14 | Safari iOS Full support Yes | Samsung Internet Android Full support 1.0 |
createMediaStreamDestination | Chrome Full support 14 | Edge Full support ≤18 | Firefox Full support 25 | IE No support No | Opera Full support 15 | Safari Full support 6 | WebView Android Full support Yes | Chrome Android Full support 18 | Firefox Android Full support 26 | Opera Android Full support 14 | Safari iOS Full support Yes | Samsung Internet Android Full support 1.0 |
createMediaStreamSource | Chrome Full support 14 | Edge Full support 12 | Firefox Full support 25 | IE No support No | Opera Full support 15 | Safari Full support 6 | WebView Android Full support Yes | Chrome Android Full support 18 | Firefox Android Full support 26 | Opera Android Full support 14 | Safari iOS Full support Yes | Samsung Internet Android Full support 1.0 |
createMediaStreamTrackSource | Chrome No support No | Edge No support No | Firefox
Full support
68
| IE No support No | Opera No support No | Safari No support No | WebView Android No support No | Chrome Android No support No | Firefox Android
Full support
68
| Opera Android No support No | Safari iOS No support No | Samsung Internet Android No support No |
getOutputTimestamp | Chrome Full support 57 | Edge Full support ≤79 | Firefox Full support 70 | IE No support No | Opera Full support 44 | Safari No support No | WebView Android Full support 57 | Chrome Android Full support 57 | Firefox Android No support No | Opera Android Full support 43 | Safari iOS No support No | Samsung Internet Android Full support 7.0 |
outputLatency | Chrome No support No | Edge No support No | Firefox Full support 70 | IE No support No | Opera No support No | Safari No support No | WebView Android No support No | Chrome Android No support No | Firefox Android No support No | Opera Android No support No | Safari iOS No support No | Samsung Internet Android No support No |
resume | Chrome Full support 41 | Edge Full support ≤18 | Firefox Full support 40 | IE No support No | Opera Full support Yes | Safari Full support Yes | WebView Android Full support Yes | Chrome Android Full support 41 | Firefox Android Full support Yes | Opera Android Full support Yes | Safari iOS Full support Yes | Samsung Internet Android Full support 4.0 |
suspend | Chrome Full support 43 | Edge Full support 14 | Firefox Full support 40 | IE No support No | Opera Full support Yes | Safari Full support Yes | WebView Android Full support 43 | Chrome Android Full support 43 | Firefox Android Full support 40 | Opera Android Full support Yes | Safari iOS Full support Yes | Samsung Internet Android Full support 4.0 |
Legend
- Full support
- Full support
- No support
- No support
- Experimental. Expect behavior to change in the future.
- Experimental. Expect behavior to change in the future.
- See implementation notes.
- See implementation notes.
- Requires a vendor prefix or different name for use.
- Requires a vendor prefix or different name for use.