樂器數位介面 (MIDI) 是電子樂器、硬體和電腦間的標準通訊方式。Web MIDI API 可讓網站連線至使用者的 MIDI 鍵盤或控制器,藉此控制虛擬合成器、鼓機或其他樂器。
基於安全性考量,使用 Web MIDI API 自由存取已連線的 MIDI 裝置,W3C 音訊工作小組已要求在 Web MIDI 規格中,所有 MIDI API 使用方式都必須符合明確的權限規定。這項變更先前只適用於 Chrome 中的進階 MIDI 用途 (SysEx 訊息),現在也適用於標準 MIDI 互動。
也就是說,整個 Web MIDI API 都必須經過權限提示才能使用。這項異動將從 Chrome 124 版開始逐步推出。
以下程式碼說明如何在使用者尚未授予存取權時,處理呼叫 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,才能在裝置上啟用該功能。
在 https://permission.site 網站上點選「MIDI」和「MIDI + SysEx」按鈕測試這項變更。
瀏覽器支援
使用者必須授予 Chrome 和 Firefox 瀏覽器權限,才能存取 MIDI 裝置。
意見回饋
Chrome 團隊和網路標準社群希望瞭解你對這項變更的使用體驗。如要提供意見回饋,請對現有問題發表評論,或提交新的 GitHub 問題。
實用連結
特別銘謝
感謝 Michael Wilson 審查這篇文章。