Arsitektur MIDI

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

Konsep kunci

Acara

Protokol MIDI dirancang untuk komunikasi berbasis peristiwa. Suatu peristiwa adalah indikasi bahwa sesuatu 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 mentah MIDI ke penerima yang kemudian menerjemahkan data tersebut menjadi pesan.

Transportasi MIDI berbasis perangkat keras meliputi:

  • MIDI 1.0 loop saat ini 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 level terendah, pada level 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.

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

Stempel waktu

Stempel waktu adalah label opsional yang dilampirkan pada pesan saat asal atau saat diterima, tergantung pada transportasinya. Stempel waktu dinyatakan dalam satuan waktu seperti detik atau ticks .

Dengan tidak adanya stempel waktu yang eksplisit, sistem harus mengganti stempel waktu dari pesan sebelumnya atau waktu saat ini. Keakuratan cap 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 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 perempuan sebagai port. Setiap port adalah 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 , IN port, atau keduanya.

Perangkat MIDI memasok 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 istilah sebaliknya berlaku.

Koneksi

Dalam transport MIDI 1.0, port OUT terhubung ke paling banyak satu port IN atau THRU karena sifat loop saat ini. Dalam transportasi USB dan BLE, hal yang sama berlaku pada lapisan terendah, meskipun implementasi dapat mengkondisikan ulang aliran pesan sehingga dapat disiarkan ke beberapa port IN .

Kabel

Kabel MIDI 1.0 adalah bundel fisik kabel yang menghubungkan port OUT ke port IN atau THRU . Kabel hanya membawa data.

Catatan: Ada modifikasi non-standar untuk MIDI yang memasok daya melalui dua pin yang tidak digunakan. Ini disebut kekuatan hantu .

Kabel USB serupa, kecuali ada berbagai jenis konektor, dan konsep IN / OUT / THRU digantikan oleh peran host/periferal.

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

Saluran

Setiap aliran pesan MIDI dimultipleks di antara 16 saluran . Sebagian besar pesan diarahkan pada saluran tertentu, tetapi ada jenis pesan yang tidak khusus saluran. Secara konvensional saluran diberi nomor satu sampai 16, meskipun diwakili oleh nilai saluran dari nol sampai 15.

Jika aplikasi membutuhkan 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, ini dilakukan dengan beberapa kabel yang menghubungkan pasangan port.

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

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

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

Implementasi platform

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