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

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

แนวคิดหลัก

กิจกรรม

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

ขนส่ง

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

การขนส่ง MIDI ที่ใช้ฮาร์ดแวร์ประกอบด้วย:

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

การแสดงข้อความ

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

ข้อความ MIDI ส่วนใหญ่จะสั้น (หนึ่งถึงสามไบต์) แต่ก็มีความสามารถในการส่งข้อความที่ยาวกว่าผ่าน SysEx

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

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

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

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

อุปกรณ์

อุปกรณ์ต่อพ่วง ให้ความสามารถอินพุต/เอาท์พุต (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 หรือทั้งสองพอร์ตอย่างน้อยหนึ่งพอร์ต

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

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

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

สายเคเบิ้ล

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

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

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

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

ช่อง

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

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

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

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

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

ดังนั้นสายเคเบิลฟิสิคัล USB เส้นเดียวจึงสามารถพกพาช่องสัญญาณได้มากกว่าหนึ่งชุดที่มี 16 ช่อง

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

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