Artikel ini menjelaskan arsitektur MIDI generik, terlepas dari implementasi platform, API, atau fitur khusus platform apa pun.
Konsep utama
Peristiwa
Protokol MIDI dirancang untuk komunikasi berbasis peristiwa. Peristiwa adalah indikasi bahwa sesuatu telah terjadi atau akan terjadi pada waktu tertentu. Peristiwa MIDI direpresentasikan oleh pesan, paket informasi atomik.
Transport
Pesan MIDI dienkode dan dikirim melalui lapisan transpor, disingkat transpor, yang mengirimkan data MIDI mentah kepada penerima yang kemudian mendekode data menjadi pesan.
Transpor MIDI berbasis hardware mencakup:
- Loop arus MIDI 1.0 dengan konektor DIN 5 pin
- USB
- Bluetooth Hemat Energi (BLE)
Representasi pesan
Spesifikasi transpor MIDI menjelaskan cara menyampaikan pesan. Meskipun pengemasan pesan bersifat khusus transpor di tingkat terendah, pada tingkat yang lebih tinggi, aplikasi dapat mempertimbangkan urutan pesan yang diurutkan berdasarkan waktu sebagai byte stream yang dibatasi. Hal ini dimungkinkan karena setiap pesan berisi informasi yang cukup untuk menentukan total panjang pesan, asalkan awal batas pesan diketahui.
Sebagian besar pesan MIDI bersifat singkat (satu hingga tiga byte), tetapi ada kemampuan untuk pesan yang lebih panjang melalui SysEx.
Stempel waktu
Stempel waktu adalah label opsional yang dilampirkan ke pesan saat berasal atau saat diterima, bergantung pada transpor. Stempel waktu dinyatakan dalam satuan waktu seperti detik atau tick.
Jika tidak ada stempel waktu eksplisit, sistem harus mengganti stempel waktu pesan yang langsung sebelumnya atau waktu saat ini. Akurasi stempel waktu ini, baik eksplisit maupun implisit, adalah aspek penting dari keandalan sistem berbasis MIDI.
Stempel waktu bukan bagian dari protokol MIDI 1.0. API ini sering kali ditambahkan sebagai bagian dari API khusus platform. Transpor BLE memiliki stempel waktu untuk menunjukkan pengaturan waktu beberapa pesan individual yang dikirim dalam satu paket BLE.
Perangkat
Periferal menyediakan kemampuan input/output (I/O) untuk komputer. Istilah periferal MIDI dan perangkat MIDI biasanya mengacu pada modul hardware atau software yang mendukung protokol MIDI. Dalam dokumen ini, periferal MIDI mengacu pada entitas fisik dan perangkat MIDI menjelaskan modul yang sebenarnya menerapkan MIDI.
Port
Port adalah titik antarmuka antara komputer dan periferal.
MIDI 1.0 menggunakan soket DIN 5 pin perempuan sebagai port. Setiap port adalah OUT (sumber data MIDI), IN (sink untuk data MIDI), atau THRU (yang berarti IN yang dirutekan langsung ke OUT).
Transpor lain seperti USB dan BLE memperluas konsep port.
Perangkat MIDI memiliki minimal satu port OUT, port IN, atau keduanya.
Perangkat MIDI menyediakan aliran pesan yang berasal dari setiap port OUT, dan menerima aliran pesan yang masuk ke setiap port IN. Istilah IN dan OUT tentu saja relatif terhadap satu port; dari perspektif port lain, istilah terbalik berlaku.
Koneksi
Dalam transpor MIDI 1.0, port OUT terhubung ke maksimal satu port IN atau THRU karena sifat loop saat ini. Dalam transpor USB dan BLE, hal yang sama berlaku di lapisan terendah, meskipun implementasi dapat mengkondisikan ulang aliran pesan sehingga dapat disiarkan ke beberapa port IN.
Kabel
Kabel MIDI 1.0 adalah kumpulan kabel fisik yang menghubungkan port OUT ke port IN atau THRU. Kabel hanya membawa data.
Catatan: Ada modifikasi non-standar pada MIDI yang memasok daya melalui dua pin yang tidak digunakan. Hal ini disebut phantom power.
Kabel USB mirip, kecuali ada berbagai jenis konektor, dan konsep IN/OUT/THRU diganti dengan peran host/periferal.
Saat beroperasi dalam mode host USB, perangkat host akan menyalurkan daya ke periferal MIDI. Sebagian besar periferal MIDI kecil menggunakan satu beban unit USB (100 mA) atau kurang. Namun, beberapa periferal yang lebih besar, atau periferal dengan output audio atau lampu, memerlukan lebih banyak daya daripada yang dapat disediakan perangkat host. Jika Anda mengalami masalah, coba periferal MIDI lain atau hub USB yang diberi daya.
Saluran
Setiap aliran pesan MIDI dimultiplekskan di antara 16 saluran. Sebagian besar pesan ditujukan ke saluran tertentu, tetapi ada jenis pesan yang tidak spesifik per saluran. Secara konvensional, saluran diberi nomor satu hingga 16, meskipun diwakili oleh nilai saluran nol hingga 15.
Jika aplikasi memerlukan lebih dari 16 saluran atau throughput yang lebih tinggi dari yang dapat didukung oleh satu aliran pesan, beberapa port harus digunakan.
Di MIDI 1.0, hal ini dilakukan dengan beberapa kabel yang menghubungkan sepasang port.
Dalam transpor MIDI melalui USB, satu endpoint USB dapat mendukung beberapa port, yang masing-masing diidentifikasi dengan nomor kabel [sic]. Menurut spesifikasi USB MIDI, nomor kabel mengidentifikasi port virtual dalam endpoint.
Catatan: nomor port akan menjadi istilah yang lebih akurat, karena mengidentifikasi port.
Dengan demikian, satu kabel fisik USB dapat membawa lebih dari satu set 16 saluran.
Penerapan platform
Seperti yang disebutkan dalam pengantar, konsep MIDI umum ini berlaku untuk semua
penerapan. Untuk interpretasi konsep di platform
Android, lihat
Panduan Pengguna MIDI Android untuk android.media.midi
.