電子楽器デジタル インターフェース(MIDI)は、電子楽器やハードウェア、コンピュータの標準的な通信方法です。Web MIDI API を使用すると、ウェブサイトはユーザーの MIDI キーボードやコントローラに接続して、仮想シンセサイザー、ドラムマシン、その他の楽器を操作できます。
接続された MIDI デバイスに Web MIDI API を使用して自由にアクセスするセキュリティ上の懸念により、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 の問題にコメントするか、新しい問題を提出してフィードバックを提供します。
関連情報
謝辞
この投稿をレビューしてくれた Michael Wilson に感謝します。