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="https://developer.mozilla.org/en-US/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="https://developer.mozilla.org/en-US/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 APIThe definition of 'AudioContext' in that specification. | Working Draft |
Browser compatibility
The compatibility table on this page is generated from structured data. If you'd like to contribute to the data, please check out https://github.com/mdn/browser-compat-data and send us a pull request.
Update compatibility data on GitHub
Desktop | Mobile | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
AudioContext
|
Chrome Full support 35 Full support 35 No support 14 — 57 Prefixed' Implemented with the vendor prefix: webkit |
Edge
Full support 12 |
Firefox
Full support 25 |
IE
No support No |
Opera Full support 22 Full support 22 No support 15 — 44 Prefixed' Implemented with the vendor prefix: webkit |
Safari Full support 6 Full support 6 Prefixed' Implemented with the vendor prefix: webkit |
WebView Android
Full support Yes |
Chrome Android Full support 35 Full support 35 No support 18 — 57 Prefixed' Implemented with the vendor prefix: webkit |
Firefox Android
Full support 26 |
Opera Android Full support 22 Full support 22 No support 14 — 43 Prefixed' Implemented with the vendor prefix: webkit |
Safari iOS Full support 6 Full support 6 Prefixed' Implemented with the vendor prefix: webkit |
Samsung Internet Android Full support 3.0 Full support 3.0 No support 1.0 — 7.0 Prefixed' Implemented with the vendor prefix: webkit |
AudioContext() constructor
|
Chrome Full support 35 Full support 35 Notes' Prior to Chrome 66, each tab is limited to 6 audio contexts in Chrome; attempting to create more will throw a Prefixed' Implemented with the vendor prefix: webkit |
Edge
Full support 12 |
Firefox
Full support 25 |
IE
No support No |
Opera Full support 22 Full support 22 Notes' Prior to Opera 53, each tab is limited to 6 audio contexts in Opera; attempting to create more will throw a Prefixed' Implemented with the vendor prefix: webkit |
Safari Full support 6.1 Full support 6.1 Prefixed' Implemented with the vendor prefix: webkit |
WebView Android Full support 37 Full support 37 Notes' Prior to WebView 66, each tab is limited to 6 audio contexts in WebView; attempting to create more will throw a Prefixed' Implemented with the vendor prefix: webkit |
Chrome Android Full support 35 Full support 35 Notes' Prior to Chrome 66, each tab is limited to 6 audio contexts in Chrome; attempting to create more will throw a Prefixed' Implemented with the vendor prefix: webkit |
Firefox Android
Full support 26 |
Opera Android Full support 22 Full support 22 Notes' Prior to Opera Android 47, each tab is limited to 6 audio contexts in Opera; attempting to create more will throw a Prefixed' Implemented with the vendor prefix: webkit |
Safari iOS Full support 6.1 Full support 6.1 Prefixed' Implemented with the vendor prefix: webkit |
Samsung Internet Android Full support 3.0 Full support 3.0 Notes' Prior to Samsung Internet 9.0, each tab is limited to 6 audio contexts in Samsung Internet; attempting to create more will throw a Prefixed' Implemented with the vendor prefix: webkit |
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 |
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 79 |
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 Full support 68 Notes' Firefox 68 implements the updated standard's definition of the "first" audio track; now the first track is the one whose ID comes first lexicographically. |
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 Full support 68 Notes' Firefox 68 implements the updated standard's definition of the "first" audio track; now the first track is the one whose ID comes first lexicographically. |
Opera Android
No support No |
Safari iOS
No support No |
Samsung Internet Android
No support No |
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 14 |
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.
See also
AudioContext by Mozilla Contributors is licensed under CC-BY-SA 2.5.