สถาปัตยกรรม MIDI

บทความนี้อธิบายสถาปัตยกรรม MIDI ทั่วไป ซึ่งไม่เกี่ยวข้องกับการใช้งานแพลตฟอร์ม API หรือฟีเจอร์เฉพาะแพลตฟอร์ม

หัวข้อสำคัญ

กิจกรรม

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

การขนส่ง

ข้อความ MIDI ได้รับการเข้ารหัสและส่งผ่านเลเยอร์การรับส่งหรือการรับส่งแบบย่อ ซึ่งจะส่งข้อมูล MIDI ดิบไปยังผู้รับ จากนั้นผู้รับจะถอดรหัสข้อมูลเป็นข้อความ

การรับส่ง MIDI ที่ใช้ฮาร์ดแวร์ ได้แก่

  • ลูปกระแส MIDI 1.0 พร้อมหัวต่อ DIN 5 พิน
  • USB
  • บลูทูธพลังงานต่ำ (BLE)

การนําเสนอข้อความ

ข้อกำหนดการขนส่ง MIDI จะอธิบายวิธีส่งข้อความ แม้ว่าการบรรจุข้อความจะเจาะจงสำหรับสื่อกลางในระดับต่ำสุด แต่แอปพลิเคชันในระดับที่สูงขึ้นอาจพิจารณาลำดับข้อความตามลำดับเวลาเป็นสตรีมไบต์ที่มีเครื่องหมายแบ่ง ซึ่งเป็นไปได้เนื่องจากข้อความแต่ละรายการมีข้อมูลเพียงพอที่จะระบุความยาวทั้งหมดของข้อความได้ หากทราบจุดเริ่มต้นของขอบเขตข้อความ

ข้อความ MIDI ส่วนใหญ่เป็นแบบสั้น (1-3 ไบต์) แต่สามารถส่งข้อความที่ยาวขึ้นได้ผ่าน SysEx

การประทับเวลา

การประทับเวลาเป็นป้ายกำกับที่ไม่บังคับซึ่งแนบไปกับข้อความตั้งแต่ต้นทางหรือเมื่อได้รับ โดยขึ้นอยู่กับการขนส่ง การประทับเวลาจะแสดงเป็นหน่วยเวลา เช่น วินาทีหรือทิก

หากไม่มีการประทับเวลาที่ชัดเจน ระบบต้องแทนที่การประทับเวลาของข้อความก่อนหน้าทันทีหรือเวลาปัจจุบัน ความถูกต้องของการประทับเวลาเหล่านี้ ไม่ว่าจะเป็นแบบชัดเจนหรือแบบนัย ล้วนเป็นปัจจัยสำคัญในความน่าเชื่อถือของระบบที่ใช้ MIDI

การประทับเวลาไม่ได้อยู่ในโปรโตคอล MIDI 1.0 ซึ่งมักจะเพิ่มไว้เป็นส่วนหนึ่งของ API สําหรับแพลตฟอร์มหนึ่งๆ การรับส่ง BLE มีการประทับเวลาเพื่อระบุเวลาของข้อความแต่ละรายการที่ส่งภายในแพ็กเก็ต BLE 1 รายการ

อุปกรณ์

อุปกรณ์ต่อพ่วงมีความสามารถในการรับ/ส่งข้อมูล (I/O) สำหรับคอมพิวเตอร์ โดยปกติแล้วคำว่าอุปกรณ์ต่อพ่วง MIDI และอุปกรณ์ MIDI จะหมายถึงโมดูลฮาร์ดแวร์หรือซอฟต์แวร์ที่รองรับโปรโตคอล MIDI ในเอกสารนี้ อุปกรณ์ต่อพ่วง MIDI หมายถึงตัวตนที่จับต้องได้ และอุปกรณ์ MIDI หมายถึงโมดูลที่ใช้ MIDI จริง

พอร์ต

พอร์ตเป็นจุดอินเทอร์เฟซระหว่างคอมพิวเตอร์กับอุปกรณ์ต่อพ่วง

MIDI 1.0 ใช้ซ็อกเก็ต DIN แบบตัวเมีย 5 ขาเป็นพอร์ต พอร์ตแต่ละพอร์ตจะเป็น OUT (แหล่งที่มาของข้อมูล MIDI), IN (ที่เก็บข้อมูล MIDI) หรือ THRU (หมายถึง IN ที่กําหนดเส้นทางไปยัง OUT โดยตรง)

สื่อกลางอื่นๆ เช่น USB และ BLE จะขยายแนวคิดพอร์ต

อุปกรณ์ MIDI มีพอร์ต OUT, IN หรือทั้ง 2 แบบอย่างน้อย 1 พอร์ต

อุปกรณ์ MIDI จะส่งสตรีมข้อความที่มาจากพอร์ต OUT แต่ละพอร์ต และรับสตรีมข้อความที่มาถึงพอร์ต IN แต่ละพอร์ต คำว่า IN และ OUT นั้นสัมพันธ์กับพอร์ตหนึ่งๆ แน่นอน จากมุมมองของพอร์ตอีกฝั่งหนึ่ง จะใช้คำย้อนกลับ

การเชื่อมต่อ

ในการส่งผ่าน MIDI 1.0 พอร์ต OUT จะเชื่อมต่อกับพอร์ต IN หรือ THRU ได้สูงสุด 1 พอร์ตเนื่องจากลักษณะของลูปปัจจุบัน ในสื่อกลาง USB และ BLE การดำเนินการจะเหมือนกันที่เลเยอร์ต่ำสุด แม้ว่าการใช้งานอาจปรับสภาพสตรีมข้อความอีกครั้งเพื่อให้ออกอากาศไปยังพอร์ต IN หลายพอร์ตได้

สายไฟ

สาย MIDI 1.0 คือกลุ่มสายไฟที่เชื่อมต่อพอร์ต OUT กับพอร์ต IN หรือ THRU สายนี้ใช้ส่งข้อมูลเท่านั้น

หมายเหตุ: มีการปรับ MIDI ที่ไม่เป็นไปตามมาตรฐานซึ่งจ่ายไฟผ่านขาที่ไม่ได้ใช้ 2 ขา ซึ่งเรียกว่าเพาเวอร์แฟนตาม

สาย USB ก็คล้ายกัน ยกเว้นว่ามีหัวต่อหลายประเภท และแนวคิด IN/OUT/THRU เปลี่ยนไปใช้บทบาทโฮสต์/อุปกรณ์ต่อพ่วงแทน

เมื่อทำงานในโหมดโฮสต์ USB อุปกรณ์โฮสต์จะจ่ายไฟให้กับอุปกรณ์ต่อพ่วง MIDI อุปกรณ์ต่อพ่วง MIDI ขนาดเล็กส่วนใหญ่ใช้โหลด USB 1 หน่วย (100 mA) หรือน้อยกว่า อย่างไรก็ตาม อุปกรณ์ต่อพ่วงขนาดใหญ่บางรุ่นหรืออุปกรณ์ต่อพ่วงที่มีเอาต์พุตเสียงหรือไฟต้องใช้พลังงานมากกว่าที่อุปกรณ์โฮสต์จ่ายได้ หากพบปัญหา ให้ลองใช้อุปกรณ์ต่อพ่วง MIDI ตัวอื่นหรือฮับ USB ที่มีไฟ

ช่อง

สตรีมข้อความ MIDI แต่ละรายการจะมัลติเพล็กซ์กันระหว่างแชแนล 16 ช่อง ข้อความส่วนใหญ่จะส่งไปยังแชแนลที่เจาะจง แต่ก็มีข้อความบางประเภทที่ไม่ได้เจาะจงแชแนล ตามธรรมเนียมแล้ว ช่องจะมีหมายเลขตั้งแต่ 1 ถึง 16 แต่แสดงด้วยค่าช่องตั้งแต่ 0 ถึง 15

หากแอปพลิเคชันต้องการมากกว่า 16 ช่องหรือมีอัตราข้อมูลที่สูงกว่าที่สตรีมข้อความ 1 รายการรองรับ คุณต้องใช้พอร์ตหลายพอร์ต

ใน MIDI 1.0 การเชื่อมต่อนี้ทำได้โดยใช้สายหลายเส้นที่เชื่อมต่อคู่พอร์ต

ในการส่งผ่าน MIDI ผ่าน USB ปลายทาง USB หนึ่งรองรับพอร์ตได้หลายพอร์ต โดยแต่ละพอร์ตจะระบุด้วยหมายเลขสาย [sic] ตามข้อกำหนดของ USB MIDI หมายเลขสายจะระบุพอร์ตเสมือนภายในปลายทาง

หมายเหตุ: หมายเลขพอร์ตน่าจะเป็นคําที่ถูกต้องกว่าเนื่องจากระบุพอร์ต

ดังนั้นสาย USB เส้นเดียวจึงสามารถส่งสัญญาณได้มากกว่า 1 ชุด 16 ช่อง

การติดตั้งใช้งานแพลตฟอร์ม

ดังที่ระบุไว้ในบทนำ แนวคิด MIDI ทั่วไปเหล่านี้มีผลกับการใช้งานทั้งหมด ดูการตีความแนวคิดในแพลตฟอร์ม Android ได้ที่ คู่มือผู้ใช้ MIDI ของ Android สำหรับ android.media.midi