乐器数字接口 (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,才能在设备本地启用该功能。
点击“MIDI”和“MIDI + SysEx”按钮,在 https://permission.site 网站上测试这项更改。
浏览器支持
在 Chrome 和 Firefox 浏览器中,访问 MIDI 设备都需要用户授予权限。
反馈
Chrome 团队和网络标准社区希望了解您对此次变更的体验。您可以通过对现有问题发表评论或提交新的 GitHub 问题来提供反馈。
实用链接
致谢
感谢 Michael Wilson 审核这篇帖子。