במאמר הזה מתוארת הארכיטקטורה הגנרית של MIDI, ללא קשר להטמעה בפלטפורמה, ל-API או לתכונות ספציפיות לפלטפורמה.
מושגים מרכזיים
אירועים
פרוטוקול MIDI מיועד לתקשורת מבוססת-אירועים. אירוע הוא אינדיקציה לכך שמשהו קרה או יקרה בזמן מסוים. אירועי MIDI מיוצגים על ידי הודעות, חבילות אטומיות של מידע.
תחבורה
הודעות MIDI מקודדות ונשלחות דרך שכבת תעבורה, בקיצור תעבורה, ששולחת את נתוני ה-MIDI הגולמיים לנמען, שמפענח את הנתונים להודעות.
אמצעי התעבורה של MIDI מבוססי החומרה כוללים:
- לולאת זרם MIDI 1.0 עם מחבר DIN 5-pin
- USB
- Bluetooth Low Energy (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 ערוצים. רוב ההודעות מופנות לערוץ ספציפי, אבל יש סוגי הודעות שלא ספציפיים לערוץ. באופן מסורתי, הערוצים ממוספרים מאחד עד 16, אבל הם מיוצגים על ידי ערכי ערוצים מ-0 עד 15.
אם האפליקציה צריכה יותר מ-16 ערוצים או תעבורת נתונים גבוהה יותר ממה שזרם הודעות אחד יכול לתמוך בו, צריך להשתמש בכמה יציאות.
ב-MIDI 1.0, הדבר נעשה באמצעות מספר כבלים שמחברים צמדים של יציאות.
בהעברת MIDI דרך USB, נקודת קצה אחת של USB יכולה לתמוך בכמה יציאות, שכל אחת מהן מזוהה באמצעות מספר כבל [sic]. בהתאם למפרט USB MIDI, מספר הכבל מזהה את היציאה הווירטואלית בנקודת הקצה.
הערה: המונח מספר יציאה היה מדויק יותר, מכיוון שהוא מזהה יציאה.
לכן, כבל USB פיזי אחד יכול לשאת יותר מקבוצה אחת של 16 ערוצים.
הטמעת פלטפורמה
כפי שצוין בהקדמה, המושגים הכלליים האלה של MIDI חלים על כל ההטמעות. לפרטים נוספים על המושגים בפלטפורמת Android, אפשר לעיין ב
מדריך למשתמש ב-Android MIDI עבור android.media.midi
.