MIDI デバイスにアクセスするにはユーザー権限が必要になりました

François Beaufort
François Beaufort

電子楽器デジタル インターフェース(MIDI)は、電子楽器やハードウェア、コンピュータの標準的な通信方法です。Web MIDI API を使用すると、ウェブサイトはユーザーの MIDI キーボードやコントローラに接続して、仮想シンセサイザー、ドラムマシン、その他の楽器を操作できます。

対応ブラウザ

  • Chrome: 43.
  • Edge: 79.
  • Firefox: 108.
  • Safari: サポートされていません。

ソース

接続された MIDI デバイスに Web MIDI API を使用して自由にアクセスするセキュリティ上の懸念により、W3C Audio Working Group は、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 を実行する必要があります。

https://permission.site ウェブサイトで、[MIDI] ボタンと [MIDI + SysEx] ボタンをクリックして、この変更をテストします。

ブラウザ サポート

MIDI デバイスにアクセスするには、Chrome ブラウザと Firefox ブラウザの両方でユーザーの許可が必要です。

フィードバック

Chrome チームとウェブ標準コミュニティでは、この変更に関するご意見をお聞かせいただきたいと考えています。既存の GitHub の問題にコメントするか、新しい問題を提出してフィードバックを提供します。

謝辞

この投稿をレビューしてくれた Michael Wilson に感謝します。