现在需要获得用户权限才能访问 MIDI 设备

François Beaufort
François Beaufort

乐器数字接口 (MIDI) 是电子乐器、硬件和计算机通信的标准方式。借助 Web MIDI API,网站可以通过连接到用户的 MIDI 键盘或控制器来控制虚拟合成器、鼓机或其他乐器。

浏览器支持

  • 43
  • 79
  • 108
  • x

来源

考虑到通过 Web MIDI API 自由访问连接的 MIDI 设备存在安全问题,W3C 音频工作组要求针对 Web MIDI 规范中的所有 MIDI API 使用提出明确权限要求。这一变更以前仅适用于 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。

https://permission.site 网站上点击“MIDI”和“MIDI + SysEx”按钮以测试此更改。

浏览器支持

访问 MIDI 设备需要用户同时在 Chrome 和 Firefox 浏览器中授予权限。

反馈

Chrome 团队和网络标准社区希望了解您对此次变更的体验。通过评论现有问题或提交新的 GitHub 问题来提供反馈。

致谢

感谢 Michael Wilson 对这篇博文进行审核。