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

François Beaufort
François Beaufort

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

浏览器支持

  • Chrome:43.
  • 边缘:79。
  • Firefox:108。
  • Safari:不支持。

来源

由于存在使用 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,才能在设备本地启用该功能。

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

浏览器支持

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

反馈

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

致谢

感谢 Michael Wilson 审核这篇帖子。