MIDIPort

可用性有限

此特性不是基线特性,因为它在一些最广泛使用的浏览器中不起作用。

安全上下文: 此功能仅在安全上下文(HTTPS)中可用,且支持此功能的浏览器数量有限。

MIDIPort 接口是 Web MIDI API 的一部分,它代表 MIDI 输入或输出端口。

当连接新的 MIDI 设备时,会创建一个 MIDIPort 实例。因此,它没有构造函数。

EventTarget MIDIPort

实例属性

MIDIPort.id 只读

返回一个包含端口唯一 ID 的字符串。

MIDIPort.manufacturer 只读

返回一个包含端口制造商的字符串。

MIDIPort.name 只读

返回一个包含端口系统名称的字符串。

MIDIPort.type 只读

返回一个包含端口类型的字符串,该类型是以下之一:

"input"

MIDIPort 是一个输入端口。

"output"

MIDIPort 是一个输出端口。

MIDIPort.version 只读

返回一个包含端口版本的字符串。

MIDIPort.state 只读

返回一个包含端口状态的字符串,该状态是以下之一:

"disconnected"

MIDIPort 所代表的设备已从系统中断开连接。

"connected"

MIDIPort 所代表的设备当前已连接。

MIDIPort.connection 只读

返回一个包含端口连接状态的字符串,该状态是以下之一:

"open"

MIDIPort 所代表的设备已打开并可用。

"closed"

MIDIPort 所代表的设备尚未打开,或已关闭。

"pending"

MIDIPort 所代表的设备已打开但随后断开了连接。

实例方法

此接口还继承了 EventTarget 的方法。

MIDIPort.open()

使连接到此 MIDIPort 的 MIDI 设备显式可用,并返回一个 Promise,该 Promise 在成功访问端口后解析。

MIDIPort.close()

使连接到此 MIDIPort 的 MIDI 设备不可用,将 state"open" 更改为 "closed"。这会返回一个 Promise,该 Promise 在端口关闭后解析。

事件

statechange

当现有端口更改其状态或连接时调用。

示例

列出端口及其信息

以下示例列出了输入和输出端口,并使用 MIDIPort 的属性显示了有关它们的信息。

js
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}'`,
    );
  }
}

将可用端口添加到选择列表中

以下示例将输入端口列表添加到选择列表中,以便用户可以选择他们想要使用的设备。

js
inputs.forEach((port, key) => {
  const opt = document.createElement("option");
  opt.text = port.name;
  document.getElementById("port-selector").add(opt);
});

规范

规范
Web MIDI API
# MIDIPort

浏览器兼容性