MIDI আর্কিটেকচার

এই নিবন্ধটি জেনেরিক MIDI আর্কিটেকচার বর্ণনা করে, যেকোন প্ল্যাটফর্ম বাস্তবায়ন, API, বা প্ল্যাটফর্ম-নির্দিষ্ট বৈশিষ্ট্যগুলির থেকে স্বাধীন।

মূল ধারণা

ঘটনা

MIDI প্রোটোকলটি ইভেন্ট-ভিত্তিক যোগাযোগের জন্য ডিজাইন করা হয়েছে। একটি ঘটনা একটি ইঙ্গিত যে একটি নির্দিষ্ট সময়ে কিছু ঘটেছে বা ঘটবে। MIDI ইভেন্ট বার্তা দ্বারা প্রতিনিধিত্ব করা হয়, তথ্যের পারমাণবিক বান্ডিল.

পরিবহন

MIDI বার্তাগুলি এনকোড করা হয় এবং একটি ট্রান্সপোর্ট লেয়ার , সংক্ষেপে ট্রান্সপোর্টের মাধ্যমে বিতরণ করা হয়, যা প্রাপকের কাছে কাঁচা MIDI ডেটা পাঠায় যিনি তারপরে ডেটাকে বার্তাগুলিতে ডিকোড করে।

হার্ডওয়্যার-ভিত্তিক MIDI পরিবহন অন্তর্ভুক্ত:

  • 5-পিন DIN সংযোগকারী সহ MIDI 1.0 বর্তমান লুপ
  • ইউএসবি
  • ব্লুটুথ লো এনার্জি (BLE)

বার্তা প্রতিনিধিত্ব

একটি MIDI পরিবহন স্পেসিফিকেশন বর্ণনা করে যে কিভাবে বার্তা পাঠাতে হয়। যদিও বার্তাগুলির প্যাকেজিং সর্বনিম্ন স্তরে পরিবহন-নির্দিষ্ট, একটি উচ্চ স্তরে অ্যাপ্লিকেশনগুলি একটি সীমাবদ্ধ বাইট স্ট্রিম হিসাবে বার্তাগুলির একটি সময়-অনুযায়ী ক্রম বিবেচনা করতে পারে৷ এটি সম্ভব কারণ প্রতিটি বার্তায় বার্তার মোট দৈর্ঘ্য নির্ধারণের জন্য পর্যাপ্ত তথ্য রয়েছে, যদি বার্তার সীমানা শুরু হয় তা জানা থাকে।

বেশিরভাগ MIDI বার্তা ছোট (এক থেকে তিন বাইট), তবুও SysEx এর মাধ্যমে দীর্ঘ বার্তাগুলির জন্য ক্ষমতা রয়েছে।

টাইমস্ট্যাম্প

একটি টাইমস্ট্যাম্প হল একটি ঐচ্ছিক লেবেল যা উৎপত্তির সময় বা প্রাপ্তির সময় বার্তার সাথে সংযুক্ত থাকে, যা পরিবহনের উপর নির্ভর করে। টাইমস্ট্যাম্পকে টাইম ইউনিটে প্রকাশ করা হয় যেমন সেকেন্ড বা টিক

একটি সুস্পষ্ট টাইমস্ট্যাম্পের অনুপস্থিতিতে, সিস্টেমটিকে অবিলম্বে পূর্ববর্তী বার্তা বা বর্তমান সময়ের টাইমস্ট্যাম্প প্রতিস্থাপন করতে হবে। এই টাইমস্ট্যাম্পগুলির যথার্থতা, স্পষ্ট বা অন্তর্নিহিত, একটি MIDI-ভিত্তিক সিস্টেমের নির্ভরযোগ্যতার একটি গুরুত্বপূর্ণ দিক।

টাইমস্ট্যাম্পগুলি MIDI 1.0 প্রোটোকলের অংশ নয়৷ এগুলি প্রায়শই একটি প্ল্যাটফর্ম-নির্দিষ্ট API এর অংশ হিসাবে যুক্ত করা হয়। একটি BLE প্যাকেটের মধ্যে পাঠানো একাধিক পৃথক বার্তার সময় নির্দেশ করার জন্য BLE পরিবহনের টাইমস্ট্যাম্প রয়েছে।

ডিভাইস

একটি পেরিফেরাল একটি কম্পিউটারের জন্য ইনপুট/আউটপুট (I/O) ক্ষমতা প্রদান করে। MIDI পেরিফেরাল এবং MIDI ডিভাইস শব্দগুলি সাধারণত MIDI প্রোটোকল সমর্থন করে এমন কোনো হার্ডওয়্যার বা সফ্টওয়্যার মডিউলকে বোঝায়। এই নথির মধ্যে, MIDI পেরিফেরাল শারীরিক সত্তাকে বোঝায় এবং MIDI ডিভাইসটি মডিউলটি বর্ণনা করে যা আসলে MIDI প্রয়োগ করে।

বন্দর

একটি পোর্ট কম্পিউটার এবং পেরিফেরালগুলির মধ্যে একটি ইন্টারফেস পয়েন্ট।

MIDI 1.0 পোর্ট হিসাবে একটি মহিলা 5-পিন ডিআইএন সকেট ব্যবহার করে। প্রতিটি পোর্ট হয় OUT (MIDI ডেটার উৎস), IN (MIDI ডেটার জন্য সিঙ্ক), অথবা THRU (অর্থাৎ একটি IN যা সরাসরি একটি আউটে রুট করা হয়)।

অন্যান্য পরিবহন যেমন USB এবং BLE পোর্ট ধারণাকে প্রসারিত করে।

একটি MIDI ডিভাইসে কমপক্ষে একটি আউট পোর্ট, ইন পোর্ট বা উভয়ই থাকে৷

MIDI ডিভাইস প্রতিটি OUT পোর্টে উদ্ভূত বার্তাগুলির স্ট্রিম(গুলি) সরবরাহ করে এবং প্রতিটি IN পোর্টে আগত বার্তাগুলির স্ট্রিম(গুলি) গ্রহণ করে৷ IN এবং OUT শর্তাবলী অবশ্যই একটি পোর্টের সাথে সম্পর্কিত; অন্য পোর্টের দৃষ্টিকোণ থেকে বিপরীত শব্দটি প্রযোজ্য।

সংযোগ

MIDI 1.0 পরিবহনে, বর্তমান লুপের প্রকৃতির কারণে একটি আউট পোর্ট সর্বাধিক একটি IN বা THRU পোর্টের সাথে সংযোগ করে। ইউএসবি এবং বিএলই ট্রান্সপোর্টে, সর্বনিম্ন স্তরে একই কথা সত্য, যদিও একটি বাস্তবায়ন বার্তা স্ট্রীমকে পুনরায় কন্ডিশন করতে পারে যাতে এটি একাধিক IN পোর্টে সম্প্রচার করা যেতে পারে।

তারগুলি

একটি MIDI 1.0 কেবল হল তারের ভৌত বান্ডিল যা একটি আউট পোর্টকে একটি IN বা THRU পোর্টের সাথে সংযুক্ত করে। কেবলমাত্র ডেটা বহন করে।

দ্রষ্টব্য: MIDI-তে অ-মানক পরিবর্তন রয়েছে যা দুটি অব্যবহৃত পিনের উপর শক্তি সরবরাহ করে। একে ফ্যান্টম পাওয়ার বলে।

একটি USB কেবল একই রকম, সংযোগকারীর প্রকারের বিস্তৃত বৈচিত্র্য ছাড়া, এবং IN / OUT / THRU ধারণাটি হোস্ট/পেরিফেরাল ভূমিকা দ্বারা প্রতিস্থাপিত হয়।

USB হোস্ট মোডে কাজ করার সময়, হোস্ট ডিভাইসটি MIDI পেরিফেরালকে শক্তি সরবরাহ করে। বেশিরভাগ ছোট MIDI পেরিফেরালগুলি একটি USB ইউনিট লোড (100 mA) বা তার কম নেয়। তবে কিছু বড় পেরিফেরাল বা অডিও আউটপুট বা আলো সহ পেরিফেরালগুলির জন্য হোস্ট ডিভাইস সরবরাহ করতে পারে তার চেয়ে বেশি শক্তি প্রয়োজন। আপনি সমস্যা অনুভব করলে, অন্য MIDI পেরিফেরাল বা একটি চালিত USB হাব ব্যবহার করে দেখুন।

চ্যানেল

প্রতিটি MIDI বার্তা স্ট্রীম 16টি চ্যানেলের মধ্যে মাল্টিপ্লেক্স করা হয়। বেশিরভাগ বার্তা একটি নির্দিষ্ট চ্যানেলে নির্দেশিত হয়, তবে এমন বার্তার ধরন রয়েছে যা চ্যানেল-নির্দিষ্ট নয়। প্রচলিতভাবে চ্যানেলগুলিকে 1 থেকে 16 নম্বর দেওয়া হয়, যদিও চ্যানেলের মান শূন্য থেকে 15 পর্যন্ত উপস্থাপন করা হয়।

যদি অ্যাপ্লিকেশনটির জন্য 16 টির বেশি চ্যানেল বা একটি বার্তা স্ট্রিম সমর্থন করতে পারে তার চেয়ে বেশি থ্রুপুট প্রয়োজন, তবে একাধিক পোর্ট ব্যবহার করতে হবে।

MIDI 1.0-এ, এটি একাধিক তারের দ্বারা পোর্টের জোড়া সংযোগকারী দ্বারা সম্পন্ন হয়।

MIDI ওভার USB ট্রান্সপোর্টে, একটি একক USB এন্ডপয়েন্ট একাধিক পোর্ট সমর্থন করতে পারে, প্রতিটি একটি কেবল নম্বর [sic] দ্বারা চিহ্নিত করা হয়। ইউএসবি MIDI স্পেসিফিকেশন অনুযায়ী, তারের নম্বরটি শেষ পয়েন্টের মধ্যে ভার্চুয়াল পোর্টকে চিহ্নিত করে।

দ্রষ্টব্য: পোর্ট নম্বরটি আরও সঠিক শব্দ হবে, এটি একটি পোর্ট সনাক্ত করে।

এইভাবে একটি একক USB ফিজিক্যাল কেবল 16টি চ্যানেলের একাধিক সেট বহন করতে পারে।

প্ল্যাটফর্ম বাস্তবায়ন

ভূমিকায় উল্লিখিত হিসাবে, এই জেনেরিক MIDI ধারণাগুলি সমস্ত বাস্তবায়নের ক্ষেত্রে প্রযোজ্য। অ্যান্ড্রয়েড প্ল্যাটফর্মে ধারণাগুলির ব্যাখ্যার জন্য, android.media.midi এর জন্য Android MIDI ব্যবহারকারীর নির্দেশিকা দেখুন।