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.

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 the AudioDestinationNode 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 an HTMLMediaElement. This can be used to play and manipulate audio from <video> or <audio> elements.
AudioContext.createMediaStreamSource()
Creates a MediaStreamAudioSourceNode associated with a MediaStream representing an audio stream which may come from the local computer microphone or other sources.
AudioContext.createMediaStreamDestination()
Creates a MediaStreamAudioDestinationNode associated with a MediaStream representing an audio stream which may be stored in a local file or sent to another computer.
AudioContext.createMediaStreamTrackSource()
Creates a MediaStreamTrackAudioSourceNode associated with a MediaStream representing an media stream track.
AudioContext.getOutputTimestamp()
Returns a new AudioTimestamp object containing two correlated context's audio stream position values.
AudioContext.suspend()
Suspends the progression of time in the audio context, temporarily halting audio hardware access and reducing CPU/battery usage in the process.

Deprecated methods

AudioContext.resume()
Resumes the progression of time in an audio context that has previously been suspended.

Note: The resume() method is still available — it is now defined on the BaseAudioContext interface (see BaseAudioContext.resume()) and thus can be accessed by both the AudioContext and OfflineAudioContext interfaces.

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

Update compatibility data on GitHub
DesktopMobile
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome for AndroidEdge MobileFirefox for AndroidOpera for AndroidSafari on iOSSamsung Internet
Basic supportChrome Full support 35
Full support 35
No support 14 — 57
Prefixed
Prefixed Implemented with the vendor prefix: webkit
Edge Full support YesFirefox Full support 25IE No support NoOpera Full support 22
Full support 22
No support 15 — 44
Prefixed
Prefixed Implemented with the vendor prefix: webkit
Safari Full support 6
Prefixed
Full support 6
Prefixed
Prefixed Implemented with the vendor prefix: webkit
WebView Android Full support YesChrome Android Full support 35
Full support 35
No support 18 — 57
Prefixed
Prefixed Implemented with the vendor prefix: webkit
Edge Mobile Full support YesFirefox Android Full support 26Opera Android Full support 22
Full support 22
No support 15 — 44
Prefixed
Prefixed Implemented with the vendor prefix: webkit
Safari iOS ? Samsung Internet Android Full support Yes
Full support Yes
No support ? — 7.0
Prefixed
Prefixed Implemented with the vendor prefix: webkit
AudioContext() constructorChrome Full support 55
Notes
Full support 55
Notes
Notes Each tab is limited to 6 audio contexts in Chrome; attempting to create more will throw a DOMException. For details see Per-tab audio context limitation in Chrome.
Notes If latencyHint isn't valid, Chrome throws a TypeError exception. See Non-standard exceptions in Chrome for details.
Edge Full support YesFirefox Full support 25IE No support NoOpera Full support 42Safari Full support Yes
Prefixed
Full support Yes
Prefixed
Prefixed Implemented with the vendor prefix: webkit
WebView Android Full support 55Chrome Android Full support 55
Notes
Full support 55
Notes
Notes Each tab is limited to 6 audio contexts in Chrome; attempting to create more will throw a DOMException. For details see Per-tab audio context limitation in Chrome.
Notes If latencyHint isn't valid, Chrome throws a TypeError exception. See Non-standard exceptions in Chrome for details.
Edge Mobile ? Firefox Android Full support 25Opera Android Full support 42Safari iOS ? Samsung Internet Android Full support 6.0
baseLatency
Experimental
Chrome Full support 58Edge ? Firefox No support NoIE No support NoOpera Full support 45Safari No support NoWebView Android Full support 58Chrome Android Full support 58Edge Mobile ? Firefox Android No support NoOpera Android Full support 45Safari iOS No support NoSamsung Internet Android No support No
outputLatencyChrome No support NoEdge ? Firefox No support NoIE No support NoOpera No support NoSafari No support NoWebView Android No support NoChrome Android No support NoEdge Mobile ? Firefox Android No support NoOpera Android No support NoSafari iOS ? Samsung Internet Android No support No
closeChrome Full support 42Edge ? Firefox Full support 40IE No support NoOpera Full support YesSafari ? WebView Android Full support 43Chrome Android Full support 43Edge Mobile ? Firefox Android Full support 40Opera Android Full support YesSafari iOS ? Samsung Internet Android Full support 4.0
createMediaElementSourceChrome Full support 14Edge Full support 12Firefox Full support 25IE No support NoOpera Full support 15Safari Full support 6WebView Android Full support YesChrome Android Full support 18Edge Mobile Full support YesFirefox Android Full support 26Opera Android Full support 15Safari iOS ? Samsung Internet Android Full support Yes
createMediaStreamSourceChrome Full support 14Edge Full support 12Firefox Full support 25IE No support NoOpera Full support 15Safari Full support 6WebView Android Full support YesChrome Android Full support 18Edge Mobile Full support YesFirefox Android Full support 26Opera Android Full support 15Safari iOS ? Samsung Internet Android Full support Yes
createMediaStreamDestinationChrome Full support 14Edge Full support YesFirefox Full support 25IE No support NoOpera Full support 15Safari Full support 6WebView Android Full support YesChrome Android Full support 18Edge Mobile Full support YesFirefox Android Full support 26Opera Android Full support 15Safari iOS ? Samsung Internet Android Full support Yes
createMediaStreamTrackSource
Experimental
Chrome ? Edge ? Firefox No support NoIE No support NoOpera ? Safari No support NoWebView Android ? Chrome Android ? Edge Mobile ? Firefox Android No support NoOpera Android ? Safari iOS No support NoSamsung Internet Android ?
getOutputTimestamp
Experimental
Chrome Full support 57Edge ? Firefox No support NoIE No support NoOpera Full support 44Safari No support NoWebView Android Full support 57Chrome Android Full support 57Edge Mobile ? Firefox Android No support NoOpera Android Full support 44Safari iOS No support NoSamsung Internet Android Full support 7.0
suspendChrome Full support 43Edge ? Firefox Full support 40IE No support NoOpera Full support YesSafari ? WebView Android Full support 43Chrome Android Full support 43Edge Mobile ? Firefox Android Full support 40Opera Android Full support YesSafari iOS ? Samsung Internet Android Full support 4.0

Legend

Full support  
Full support
No support  
No support
Compatibility unknown  
Compatibility unknown
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