MIDIPort
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.
EventTarget MIDIPort
Instance properties
MIDIPort.id
Read only
Returns a string containing the unique ID of the port.
MIDIPort.manufacturer
Read only
Returns a string containing the manufacturer of the port.
MIDIPort.name
Read only
Returns a string containing the system name of the port.
MIDIPort.type
Read 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.version
Read only
Returns a string containing the version of the port.
MIDIPort.state
Read 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.connection
Read 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 .
Instance 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.
Events
MIDIPort.statechange_event
Called when an existing port changes its state or connection.
Examples
The following example lists input and output ports, and displays information about them using properties of MIDIPort
.
function listInputsAndOutputs ( midiAccess ) {
for ( const entry of midiAccess. inputs) {
const input = entry[ 1 ] ;
console. log (
` Input port [type:' ${ input. type} '] id:' ${ input. id} ' manufacturer: ' ${ input. manufacturer} ' name: ' ${ input. name} ' version: ' ${ input. version} ' `
) ;
}
for ( const entry of midiAccess. outputs) {
const 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 ( ( port, key ) => {
const opt = document. createElement ( "option" ) ;
opt. text = port. name;
document. getElementById ( "inputportselector" ) . add ( opt) ;
} ) ;
Specifications
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
10897–108
No
30
No
43
43
No
30
No
4.0
close
43
79
10897–108
No
30
No
43
43
No
30
No
4.0
connection
43
79
10897–108
No
30
No
43
43
No
30
No
4.0
id
43
79
10897–108
No
30
No
43
43
No
30
No
4.0
manufacturer
43
79
10897–108
No
30
No
43
43
No
30
No
4.0
name
43
79
10897–108
No
30
No
43
43
No
30
No
4.0
open
43
79
10897–108
No
30
No
43
43
No
30
No
4.0
state
43
79
10897–108
No
30
No
43
43
No
30
No
4.0
statechange_event
43
79
10897–108
No
30
No
43
43
No
30
No
4.0
type
43
79
10897–108
No
30
No
43
43
No
30
No
4.0
version
43
79
10897–108
No
30
No
43
43
No
30
No
4.0