電子楽器デジタル インターフェース(MIDI)は、電子楽器やハードウェア、コンピュータの標準的な通信方法です。Web MIDI API を使用すると、ウェブサイトはユーザーの MIDI キーボードやコントローラに接続して、仮想シンセサイザー、ドラムマシン、その他の楽器を操作できます。
Web MIDI API で接続された MIDI デバイスに自由にアクセスすることのセキュリティ上の懸念から、W3C Audio Working Group は、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 を実行する必要があります。
https://permission.site ウェブサイトで、[MIDI] ボタンと [MIDI + SysEx] ボタンをクリックして、この変更をテストします。
ブラウザ サポート
MIDI デバイスにアクセスするには、Chrome ブラウザと Firefox ブラウザの両方でユーザーの許可が必要です。
フィードバック
Chrome チームとウェブ標準コミュニティでは、この変更に関するご意見をお聞かせいただきたいと考えています。既存の GitHub Issues にコメントするか、新しい Issues を登録してフィードバックを送信してください。
関連情報
謝辞
この投稿をレビューしてくれた Michael Wilson に感謝します。