معماری 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 از یک سوکت زن 5 پین DIN به عنوان پورت استفاده می کند. هر پورت یا OUT (منبع داده‌های MIDI)، IN (سینک برای داده‌های MIDI)، یا THRU (به معنای ورودی است که مستقیماً به یک 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 میلی آمپر) یا کمتر مصرف می کنند. با این حال، برخی از تجهیزات جانبی بزرگتر، یا لوازم جانبی با خروجی صدا یا چراغ، به انرژی بیشتری نسبت به دستگاه میزبان نیاز دارند. اگر با مشکل مواجه شدید، یک وسیله جانبی MIDI دیگر یا یک هاب USB برقی را امتحان کنید.

کانال

هر جریان پیام MIDI بین 16 کانال چندگانه است. بیشتر پیام‌ها به یک کانال خاص هدایت می‌شوند، اما انواع پیام‌هایی وجود دارند که مختص کانال نیستند. به طور معمول کانال ها از یک تا 16 شماره گذاری می شوند، اگرچه با مقادیر کانال از صفر تا 15 نشان داده می شوند.

اگر برنامه به بیش از 16 کانال یا توان عملیاتی بالاتر از یک جریان پیام نیاز دارد، باید از چندین پورت استفاده شود.

در MIDI 1.0، این کار توسط کابل های متعددی که جفت پورت ها را به هم متصل می کنند، انجام می شود.

در حمل و نقل MIDI از طریق USB، یک نقطه پایانی USB می تواند چندین پورت را پشتیبانی کند که هر کدام با شماره کابل [sic] مشخص می شوند. با توجه به مشخصات USB MIDI، شماره کابل پورت مجازی را در نقطه پایانی مشخص می کند.

توجه: با توجه به اینکه شماره پورت یک پورت را مشخص می کند، عبارت دقیق تری بود.

بنابراین یک کابل فیزیکی USB می تواند بیش از یک مجموعه از 16 کانال را حمل کند.

پیاده سازی پلت فرم

همانطور که در مقدمه ذکر شد، این مفاهیم عمومی MIDI برای همه پیاده سازی ها اعمال می شود. برای تفسیر مفاهیم در پلتفرم اندروید، راهنمای کاربر MIDI Android برای android.media.midi را ببینید.