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

瀏覽器相容性