MIDIAccess

This is an experimental technology
Check the Browser compatibility table carefully before using this in production.

The MIDIAccess interface of the Web MIDI API provides methods for listing MIDI input and output devices, and obtaining access to those devices.

Properties

MIDIAccess.inputs Read only
Returns an instance of MIDIInputMap which provides access to any available MIDI input ports.
MIDIAccess.outputs Read only
Returns an instance of MIDIOutputMap which provides access to any available MIDI output ports.
MIDIAccess.sysexEnabled Read only
A boolean attribute indicating whether system exclusive support is enabled on the current MIDIAccess instance.

Event Handlers

MIDIAccess.onstatechange
Called whenever a new MIDI port is added or an existing port changes state.

Examples

navigator.requestMIDIAccess()
  .then(function(access) {

     // Get lists of available MIDI controllers
     const inputs = access.inputs.values();
     const outputs = access.outputs.values();

     access.onstatechange = function(e) {

       // Print information about the (dis)connected MIDI controller
       console.log(e.port.name, e.port.manufacturer, e.port.state);
     };
  });

Specifications

Specification Status Comment
Web MIDI API Working Draft Initial definition.

Browser compatibility

DesktopMobile
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome for AndroidFirefox for AndroidOpera for AndroidSafari on iOSSamsung Internet
MIDIAccess
Experimental
Chrome Full support 43Edge Full support ≤79Firefox No support NoIE No support NoOpera Full support 33Safari No support NoWebView Android Full support 43Chrome Android Full support 43Firefox Android ? Opera Android Full support 33Safari iOS No support NoSamsung Internet Android Full support 4.0
inputs
Experimental
Chrome Full support 43Edge Full support ≤79Firefox No support NoIE No support NoOpera Full support YesSafari No support NoWebView Android Full support 43Chrome Android Full support 43Firefox Android ? Opera Android Full support YesSafari iOS No support NoSamsung Internet Android Full support 4.0
outputs
Experimental
Chrome Full support 43Edge Full support ≤79Firefox No support NoIE No support NoOpera Full support YesSafari No support NoWebView Android Full support 43Chrome Android Full support 43Firefox Android ? Opera Android Full support YesSafari iOS No support NoSamsung Internet Android Full support 4.0
statechange event
Experimental
Chrome Full support 43Edge Full support ≤79Firefox No support NoIE No support NoOpera ? Safari No support NoWebView Android Full support 43Chrome Android Full support 43Firefox Android ? Opera Android ? Safari iOS No support NoSamsung Internet Android Full support 4.0
sysexEnabled
Experimental
Chrome Full support 45Edge Full support ≤79Firefox No support NoIE No support NoOpera Full support YesSafari No support NoWebView Android Full support 45Chrome Android Full support 45Firefox Android ? Opera Android Full support YesSafari iOS No support NoSamsung Internet Android Full support 5.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.