이제 MIDI 기기에 액세스하려면 사용자 권한이 필요합니다.

François Beaufort
François Beaufort

MIDI (Musical Instrument Digital Interface)는 전자 악기, 하드웨어, 컴퓨터가 통신하는 표준 방식입니다. Web MIDI API를 사용하면 웹사이트에서 사용자의 MIDI 키보드나 컨트롤러에 연결하여 가상 신시사이저, 드럼 머신 또는 기타 악기를 제어할 수 있습니다.

브라우저 지원

  • Chrome: 43.
  • Edge: 79
  • Firefox: 108.
  • Safari: 지원되지 않음

소스

Web MIDI API로 연결된 MIDI 기기에 자유롭게 액세스하는 보안 문제로 인해 W3C Audio Working Group은 Web MIDI 사양의 모든 MIDI API 사용에 명시적 권한 요구사항을 요청했습니다. 이전에는 Chrome의 고급 MIDI 사용 (SysEx 메시지)에만 적용되었던 이 변경사항이 이제 표준 MIDI 상호작용에도 적용됩니다.

즉, 이제 전체 Web MIDI API가 권한 메시지에 따라 관리됩니다. 이 변경사항은 Chrome 124부터 점진적으로 적용될 예정입니다.

Chrome의 웹 MIDI 권한 메시지 스크린샷
Chrome의 웹 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 문제에 의견을 작성하거나 새 문제를 제출하여 의견을 보내주세요.

감사의 말씀

이 게시물을 검토해 주신 마이클 윌슨님께 감사드립니다.