توفّر "الواجهة الرقمية للآلات الموسيقية" (MIDI) طريقة عادية لنقل البيانات بين الآلات الموسيقية الإلكترونية والأجهزة وأجهزة الكمبيوتر. تتيح Web MIDI API للمواقع الإلكترونية التحكّم في أجهزة توليف الصوت الافتراضية أو آلات الطبل أو غيرها من الآلات الموسيقية من خلال الاتصال بلوحة مفاتيح MIDI أو وحدة التحكّم الخاصة بالمستخدم.
بسبب المخاوف الأمنية المتعلّقة بالوصول بحرية إلى أجهزة MIDI المتصلة باستخدام واجهة برمجة التطبيقات Web MIDI API، طلبت مجموعة العمل الصوتية في W3C متطلّبات إذن صريح لجميع استخدامات واجهة برمجة التطبيقات MIDI API في مواصفات Web MIDI. كان هذا التغيير ساريًا في السابق فقط لاستخدام MIDI المتقدّم (رسائل SysEx) في Chrome، ولكن تم الآن توسيع نطاقه ليشمل التفاعلات العادية مع MIDI أيضًا.
وهذا يعني أنّ واجهة برمجة تطبيقات Web MIDI بالكامل متاحة الآن بطلب إذن. سنبدأ بتطبيق هذا التغيير تدريجيًا اعتبارًا من الإصدار 124 من 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 في المستقبل.
الاختبار
يتم طرح هذا التغيير تدريجيًا في الإصدار 124 من Chrome. قد تحتاج إلى تشغيل Chrome باستخدام --enable-features=BlockMidiByDefault
مفتاح سطر الأوامر لتفعيله على جهازك.
يمكنك اختبار هذا التغيير على الموقع الإلكتروني https://permission.site من خلال النقر على الزرَّين "MIDI" و"MIDI + SysEx".
دعم المتصفح
يتطلب الوصول إلى أجهزة MIDI الحصول على إذن المستخدم في كل من متصفِّح Chrome وFirefox.
ملاحظات
يريد فريق Chrome ومجتمع معايير الويب معرفة تجاربك مع هذا التغيير. يمكنك تقديم الملاحظات من خلال التعليق على مشاكل GitHub الحالية أو الإبلاغ عن مشاكل جديدة.
روابط مفيدة
الشكر والتقدير
نشكر مايكل ويلسون على مراجعة هذه المشاركة.