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

François Beaufort
François Beaufort

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

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

  • 43
  • 79
  • 108
  • x

แหล่งที่มา

เนื่องจากข้อกังวลด้านความปลอดภัยในการเข้าถึงอุปกรณ์ 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 ที่ตรวจสอบโพสต์นี้