現在需要使用者授權才能存取 MIDI 裝置

François Beaufort
François Beaufort

樂器數位介面 (MIDI) 是電子樂器、硬體和電腦之間的一種通訊標準。Web MIDI API 可讓網站連線至使用者的 MIDI 鍵盤或控制器,藉此控制虛擬合成器、鼓機或其他樂器。

瀏覽器支援

  • 43
  • 79
  • 108
  • x

資料來源

由於有安全性疑慮,可透過 Web MIDI API 免費存取已連結的 MIDI 裝置,因此 W3C Audio Working Group 已要求所有 MIDI API 規格採用 Web MIDI 規格的明確權限要求。這項變更先前僅適用於 Chrome 的進階 MIDI 使用 (SysEx 訊息),現在也可以延伸至標準 MIDI 互動。

這表示整個 Web MIDI API 現在會透過權限提示受到保護。這項異動將從 Chrome 124 版開始陸續實施。

Chrome 中的 Web MIDI 權限提示螢幕截圖。
Chrome 的 Web MIDI 權限提示。

以下程式碼顯示如何在使用者尚未授予存取權時,處理呼叫 navigator.requestMIDIAccess() 觸發的權限提示。

try {
  // Prompt user to access MIDI devices.
  const access = await navigator.requestMIDIAccess();
  // Get lists of available MIDI controllers...

} catch (error) {
  if (error.name === "SecurityError") {
    // The website is not allowed to control and reprogram MIDI devices.
  }
}

只有在網站絕對需要這項功能的情況下,才可使用 navigator.requestMIDIAccess({ sysEx: true }) 請求 SysEx 訊息支援服務。Chrome 權限提示字串日後可能會變更。

測試

這項異動將在 Chrome 124 版中逐步推出。你可能需要使用 --enable-features=BlockMidiByDefault 指令列開關執行 Chrome,才能在裝置本機上啟用 Chrome。

按一下「MIDI」和「MIDI + SysEx」按鈕,然後在 https://permission.site 網站上測試這項變更。

瀏覽器支援

您必須透過 Chrome 和 Firefox 瀏覽器的使用者授權才能存取 MIDI 裝置。

意見回饋:

Chrome 團隊和網路標準社群想分享您對本次異動的體驗。評論現有問題或提出新的 GitHub 問題,藉此提供意見回饋。

特別銘謝

感謝 Michael Wilson 評論這篇貼文。