Arsitektur MIDI

Artikel ini menjelaskan arsitektur MIDI generik, terlepas dari implementasi platform, API, atau fitur spesifik platform apa pun.

Konsep-konsep kunci

Acara

Protokol MIDI dirancang untuk komunikasi berbasis peristiwa. Peristiwa merupakan suatu petunjuk bahwa sesuatu telah terjadi atau akan terjadi pada waktu tertentu. Peristiwa MIDI diwakili oleh pesan , kumpulan informasi atom.

Mengangkut

Pesan MIDI dikodekan dan dikirim melalui lapisan transport , disingkat transport , yang mengirimkan data MIDI mentah ke penerima yang kemudian menerjemahkan data tersebut menjadi pesan.

Transportasi MIDI berbasis perangkat keras meliputi:

  • Loop arus MIDI 1.0 dengan konektor DIN 5-pin
  • USB
  • Bluetooth Hemat Energi (BLE)

Representasi pesan

Spesifikasi transport MIDI menjelaskan cara menyampaikan pesan. Meskipun pengemasan pesan bersifat spesifik transportasi pada tingkat terendah, pada tingkat yang lebih tinggi aplikasi dapat mempertimbangkan urutan pesan berdasarkan waktu sebagai aliran byte yang dibatasi. Hal ini dimungkinkan karena setiap pesan berisi informasi yang cukup untuk menentukan panjang total pesan, asalkan awal batas pesan diketahui.

Kebanyakan pesan MIDI berukuran pendek (satu hingga tiga byte), namun ada kemampuan untuk pesan yang lebih panjang melalui SysEx .

Stempel waktu

Stempel waktu adalah label opsional yang ditempelkan pada pesan pada saat asal atau setelah diterima, bergantung pada pengangkutannya. Stempel waktu dinyatakan dalam satuan waktu seperti detik atau tick .

Jika tidak ada stempel waktu yang eksplisit, sistem harus mengganti stempel waktu dari pesan sebelumnya atau waktu saat ini. Keakuratan stempel waktu ini, baik eksplisit maupun implisit, merupakan aspek penting dari keandalan sistem berbasis MIDI.

Stempel waktu bukan bagian dari protokol MIDI 1.0. Mereka sering kali ditambahkan sebagai bagian dari API khusus platform. Transportasi BLE memiliki stempel waktu untuk menunjukkan 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 merujuk pada modul perangkat keras atau perangkat lunak apa pun yang mendukung protokol MIDI. Dalam dokumen ini, perangkat MIDI mengacu pada entitas fisik dan perangkat MIDI menjelaskan modul yang benar-benar mengimplementasikan MIDI.

Pelabuhan

Port adalah titik antarmuka antara komputer dan periferal.

MIDI 1.0 menggunakan soket DIN 5-pin betina sebagai portnya. Setiap port bisa berupa OUT (sumber data MIDI), IN (sink untuk data MIDI), atau THRU (artinya IN yang langsung dirutekan ke OUT ).

Transportasi lain seperti USB dan BLE memperluas konsep port .

Perangkat MIDI memiliki setidaknya satu port OUT , port IN , atau keduanya.

Perangkat MIDI menyuplai aliran pesan yang berasal dari setiap port OUT , dan menerima aliran pesan yang tiba di setiap port IN . Istilah IN dan OUT tentu saja relatif terhadap satu port; dari perspektif pelabuhan lain berlaku istilah sebaliknya.

Koneksi

Dalam transportasi MIDI 1.0, port OUT terhubung ke paling banyak satu port IN atau THRU karena sifat loop saat ini. Dalam transport USB dan BLE, hal yang sama juga berlaku pada lapisan paling bawah, 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 menyuplai daya melalui dua pin yang tidak digunakan. Ini disebut kekuatan hantu .

Kabel USB serupa, hanya saja jenis konektornya beragam, dan konsep IN / OUT / THRU digantikan oleh peran host/periferal.

Saat beroperasi dalam mode host USB, perangkat host menyuplai daya ke perangkat MIDI. Kebanyakan periferal MIDI kecil memerlukan satu beban unit USB (100 mA) atau kurang. Namun beberapa periferal yang lebih besar, atau periferal dengan output audio atau lampu, memerlukan daya lebih besar daripada yang dapat disuplai oleh perangkat host. Jika Anda mengalami masalah, coba perangkat MIDI lain atau hub USB yang aktif.

Saluran

Setiap aliran pesan MIDI dimultipleks di antara 16 saluran . Sebagian besar pesan ditujukan ke saluran tertentu, namun ada jenis pesan yang tidak spesifik saluran. Biasanya saluran diberi nomor satu sampai 16, meskipun diwakili oleh nilai saluran dari nol sampai 15.

Jika aplikasi memerlukan lebih dari 16 saluran atau throughput yang lebih tinggi daripada yang dapat didukung oleh satu aliran pesan, maka beberapa port harus digunakan.

Di MIDI 1.0, hal ini dilakukan dengan beberapa kabel yang menghubungkan sepasang port.

Dalam transportasi MIDI melalui USB, satu titik akhir USB dapat mendukung banyak port, masing-masing diidentifikasi dengan nomor kabel [sic]. Menurut spesifikasi USB MIDI, nomor kabel mengidentifikasi port virtual dalam titik akhir.

Catatan: nomor port akan menjadi istilah yang lebih akurat, mengingat nomor tersebut mengidentifikasi suatu port.

Jadi satu kabel fisik USB dapat membawa lebih dari satu set 16 saluran.

Implementasi platform

Seperti disebutkan dalam pendahuluan, konsep umum MIDI ini berlaku untuk semua implementasi. Untuk interpretasi konsep pada platform Android, lihat Panduan Pengguna Android MIDI untuk android.media.midi .