ตอนนี้ผู้ใช้ต้องการสิทธิ์เข้าถึงอุปกรณ์ MIDI

François Beaufort
François Beaufort

Musical Instrument Digital Interface (MIDI) คือวิธีมาตรฐานสำหรับการสื่อสารของเครื่องดนตรีอิเล็กทรอนิกส์ ฮาร์ดแวร์ และคอมพิวเตอร์ Web MIDI API ช่วยให้เว็บไซต์ควบคุมเครื่องสังเคราะห์เสียงเสมือนจริง ดรัมแมชชีน หรือเครื่องดนตรีอื่นๆ ได้โดยเชื่อมต่อกับแป้นพิมพ์หรือตัวควบคุม MIDI ของผู้ใช้

การรองรับเบราว์เซอร์

  • Chrome: 43.
  • ขอบ: 79
  • Firefox: 108
  • Safari: ไม่รองรับ

แหล่งที่มา

เนื่องจากมีข้อกังวลด้านความปลอดภัยในการเข้าถึงอุปกรณ์ MIDI ที่เชื่อมต่อด้วย Web MIDI API อย่างอิสระ กลุ่มทำงานด้านเสียงของ W3C จึงขอข้อกำหนดสิทธิ์ที่ชัดเจนสำหรับการใช้งาน MIDI API ทั้งหมดในข้อกำหนดเฉพาะของ Web MIDI ก่อนหน้านี้การเปลี่ยนแปลงนี้มีผลเฉพาะกับการใช้งาน MIDI ขั้นสูง (ข้อความ SysEx) ใน Chrome แต่ตอนนี้ได้ขยายผลไปยังการโต้ตอบ MIDI มาตรฐานด้วย

ซึ่งหมายความว่า Web MIDI API ทั้งหมดจะอยู่ภายใต้ข้อความแจ้งสิทธิ์ การเปลี่ยนแปลงนี้จะทยอยเปิดตัวใน Chrome 124

ภาพหน้าจอของข้อความแจ้งสิทธิ์ Web MIDI ใน Chrome
ข้อความแจ้งสิทธิ์ Web MIDI ใน Chrome

โค้ดต่อไปนี้แสดงวิธีจัดการข้อความแจ้งสิทธิ์ที่เรียกให้แสดงโดยเรียก 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.
  }
}

ขอรับการสนับสนุนเกี่ยวกับข้อความ SysEx กับ navigator.requestMIDIAccess({ sysEx: true }) เฉพาะในกรณีที่เว็บไซต์ของคุณต้องการฟีเจอร์นี้จริงๆ เท่านั้น สตริงข้อความแจ้งเกี่ยวกับสิทธิ์ของ Chrome อาจมีการเปลี่ยนแปลงในอนาคต

การทดสอบ

เราจะทยอยเปิดตัวการเปลี่ยนแปลงนี้ใน Chrome 124 คุณอาจต้องเรียกใช้ Chrome ด้วยสวิตช์บรรทัดคำสั่ง --enable-features=BlockMidiByDefault เพื่อเปิดใช้ในอุปกรณ์

ทดสอบการเปลี่ยนแปลงนี้ในเว็บไซต์ https://permission.site โดยคลิกปุ่ม "MIDI" และ "MIDI + SysEx"

การสนับสนุนเบราว์เซอร์

การเข้าถึงอุปกรณ์ MIDI ต้องใช้สิทธิ์ของผู้ใช้ทั้งในเบราว์เซอร์ Chrome และ Firefox

ความคิดเห็น

ทีม Chrome และชุมชนมาตรฐานเว็บอยากทราบความคิดเห็นของคุณเกี่ยวกับการเปลี่ยนแปลงนี้ แสดงความคิดเห็นโดยแสดงความคิดเห็นในปัญหา GitHub ที่มีอยู่หรือแจ้งปัญหาใหม่

ขอขอบคุณ

ขอขอบคุณ Michael Wilson ที่ตรวจสอบโพสต์นี้