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

François Beaufort
François Beaufort

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

対応ブラウザ

  • 43
  • 79
  • 108
  • x

ソース

Web MIDI API を使用して接続された MIDI デバイスに自由にアクセスするためのセキュリティ上の懸念により、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 で段階的に展開されます。デバイスでローカルに Chrome を有効にするには、--enable-features=BlockMidiByDefault コマンドライン スイッチを使用して Chrome を実行する必要があります。

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

ブラウザ サポート

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

フィードバック

Chrome チームとウェブ標準コミュニティでは、今回の変更に関する皆様のご意見をお待ちしています。既存の問題にコメントするか、新しい GitHub の問題を報告して、フィードバックを提供します。

謝辞

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