MIDIPort

Secure context: This feature is available only in secure contexts (HTTPS), in some or all supporting browsers.

The MIDIPort interface of the Web MIDI API represents a MIDI input or output port.

A MIDIPort instance is created when a new MIDI device is connected. Therefore it has no constructor.

Properties

MIDIPort.idRead only

Returns a string containing the unique ID of the port.

MIDIPort.manufacturerRead only

Returns a string containing the manufacturer of the port.

MIDIPort.nameRead only

Returns a string containing the system name of the port.

MIDIPort.typeRead only

Returns a string containing the type of the port, one of:

"input"

The MIDIPort is an input port.

"output"

The MIDIPort is an output port.

MIDIPort.versionRead only

Returns a string containing the version of the port.

MIDIPort.stateRead only

Returns a string containing the state of the port, one of:

"disconnected"

The device that this MIDIPort represents is disconnected from the system.

"connected"

The device that this MIDIPort represents is currently connected.

MIDIPort.connectionRead only

Returns a string containing the connection state of the port, one of:

"open"

The device that this MIDIPort represents has been opened and is available.

"closed"

The device that this MIDIPort represents has not been opened, or has been closed.

"pending"

The device that this MIDIPort represents has been opened but has subsequently disconnected .

Event handlers

MIDIPort.onstatechange

Called when an existing port changes its state or connection.

Methods

This interface also inherits methods from EventTarget.

MIDIPort.open()

Makes the MIDI device connected to this MIDIPort explicitly available, and returns a Promise which resolves once access to the port has been successful.

MIDIPort.close()

Makes the MIDI device connected to this MIDIPort unavailable, changing the state from "open" to "closed". This returns a Promise which resolves once the port has been closed.

Examples

List ports and their information

The following example lists input and output ports, and displays information about them using properties of MIDIPort.

function listInputsAndOutputs( midiAccess ) {
  for (var entry of midiAccess.inputs) {
    var input = entry[1];
    console.log( "Input port [type:'" + input.type + "'] id:'" + input.id +
      "' manufacturer:'" + input.manufacturer + "' name:'" + input.name +
      "' version:'" + input.version + "'" );
  }

  for (var entry of midiAccess.outputs) {
    var output = entry[1];
    console.log( "Output port [type:'" + output.type + "'] id:'" + output.id +
      "' manufacturer:'" + output.manufacturer + "' name:'" + output.name +
      "' version:'" + output.version + "'" );
  }
}

Add available ports to a select list

The following example takes the list of input ports and adds them to a select list, in order that a user can choose the device they want to use.

inputs.forEach( function( port, key ) {
  var opt = document.createElement("option");
  opt.text = port.name;
  document.getElementById("inputportselector").add(opt);
});

Specifications

Specification
Web MIDI API
# MIDIPort

Browser compatibility

Desktop Mobile
Chrome Edge Firefox Internet Explorer Opera Safari WebView Android Chrome Android Firefox for Android Opera Android Safari on IOS Samsung Internet
MIDIPort
43
79
No
No
30
No
43
43
No
30
No
4.0
close
43
79
No
No
30
No
43
43
No
30
No
4.0
connection
43
79
No
No
30
No
43
43
No
30
No
4.0
id
43
79
No
No
30
No
43
43
No
30
No
4.0
manufacturer
43
79
No
No
30
No
43
43
No
30
No
4.0
name
43
79
No
No
30
No
43
43
No
30
No
4.0
onstatechange
43
79
No
No
30
No
43
43
No
30
No
4.0
open
43
79
No
No
30
No
43
43
No
30
No
4.0
state
43
79
No
No
30
No
43
43
No
30
No
4.0
statechange_event
43
≤79
No
No
30
No
43
43
No
30
No
4.0
type
43
79
No
No
30
No
43
43
No
30
No
4.0
version
43
79
No
No
30
No
43
43
No
30
No
4.0

© 2005–2021 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/MIDIPort