Cara Berbicara MIDI

Dec 04 2022
Saya awalnya menulis artikel ini pada Mei 2019, tetapi memindahkannya ke sini setelah menghentikan situs web lama saya. Menikmati! Isi Lampiran I: Pesan Mode SaluranLampiran II: Bagan Pitch MIDILampiran III: Tugas CC StandarLampiran IV: Pesan Perubahan BankLampiran V: Sumber Daya Tambahan MIDI kuno, tetapi sangat berguna.

Saya awalnya menulis artikel ini pada Mei 2019, tetapi memindahkannya ke sini setelah menghentikan situs web lama saya. Menikmati!

Isi

  1. Apa itu MIDI
    1.1 Apa itu MIDI?
  2. Cara Kerjanya
    2.1 Memisahkan Pesan
    2.2 Byte Status dan Byte Data
  3. Jenis Pesan
    3.1 Note Off / Note On (0x8n, 0x9n)
    → 3.1.1 Tentang Nomor Pitch MIDI
    3.2 Perubahan Kontrol (0xBn)
    3.3 Pitch Bend (0xEn)
    3.4 Tekanan Kunci Polifonik dan Tekanan Channel (0xAn, 0xDn)
    3.5 Perubahan Program (0xCn )
    3.6 Sistem (0xFn)
  4. Tentang Heksadesimal
  5. Contoh Terapan: Simfoni Kelima Beethoven
  6. Pelajaran Bonus: Status Berlari

Lampiran I: Pesan Mode Saluran
Lampiran II: Bagan Pitch MIDI
Lampiran III: Penetapan CC Standar
Lampiran IV: Pesan Perubahan Bank
Lampiran V: Sumber Daya Tambahan

MIDI kuno, tapi sangat berguna. Ini menggerakkan keyboard yang Anda lihat di Guitar Center, mengontrol hal-hal seperti pencahayaan dan teknik kembang api di konser¹, dan telah digunakan untuk mencetak hampir setiap film dalam beberapa dekade terakhir.

Jika Anda seorang musisi modern, pengetahuan tentang MIDI sangatlah penting. Jika Anda adalah tipe orang yang membaca posting blog seperti ini, kemungkinan besar Anda sudah memiliki pengalaman bekerja dengannya; namun, menurut saya akan sangat membantu untuk mengetahui tidak hanya cara menggunakannya, tetapi juga cara membacanya, pada tingkat sedikit demi sedikit. Menerjemahkan dan menyusun pesan MIDI Anda sendiri mungkin terdengar menakutkan pada awalnya, tetapi sebenarnya sangat mudah, dan menurut saya ini adalah keterampilan penting yang harus dimiliki oleh setiap komposer modern. Ini mirip dengan mengetahui cara kerja mikrofon sebagai teknisi rekaman.

Artikel ini akan berfungsi sebagai pengantar dan panduan komprehensif untuk pesan MIDI yang berlaku untuk produksi musik. Yang bukan panduan ini adalah tutorial tentang komposisi MIDI, atau cara menggunakan editor MIDI di DAW Anda. Namun, panduan ini benar-benar ditujukan untuk komposer, karena Anda akan menemukan bahwa pengetahuan mendasar tentang MIDI akan sangat membantu saat mencari tahu alat MIDI Anda yang lebih canggih (dan rumit). Mari kita mulai.

Nabi 600 adalah salah satu synth pertama yang pernah mendukung MIDI.

1. Apa itu MIDI

Saya suka mulai mengajarkan sesuatu dari awal. Namun, jika Anda sudah jelas tentang apa itu MIDI dan apa fungsinya, silakan lompat ke How It Works , di mana kami akan langsung membahas mur dan bautnya. Kalau tidak, mari kita tinjau.

MIDI adalah akronim yang merupakan singkatan dari "Antarmuka Digital Alat Musik". Pada dasarnya, ini adalah cara komputer untuk mendeskripsikan dan mengirimkan pertunjukan musik satu sama lain. Sebenarnya, itu caranya . Jika Anda lahir setelah tahun 80-an, mungkin setiap keyboard atau mesin drum yang pernah Anda lihat menggunakan MIDI. Sementara banyak upaya telah dilakukan untuk merombak atau mengganti MIDI selama bertahun-tahun, produsen dan pengembang instrumen tampaknya benar-benar tidak peduli untuk menggunakan yang lain.

Dengan MIDI, Anda dapat:

  • Rekam pertunjukan musik dan edit dengan presisi bedah
  • "Menambal" penampilan ke instrumen apa pun dengan sedikit atau tanpa pekerjaan
  • Secara prosedural menghasilkan atau menyusun ulang pertunjukan
  • Atur pertunjukan ansambel dengan satu koneksi
  • Lakukan pencampuran yang belum sempurna, lengkap dengan "otomatisasi"

Dan itu jika skornya dimainkan . Sementara orkestra virtual tahun 80-an terdengar sangat palsu, instrumen modern terdengar sangat bagus sehingga pendengar biasa bahkan tidak bisa membedakannya. Dan itu mengubah segalanya. Dalam film dan acara TV dengan anggaran lebih rendah, soundtrack akan sering menggunakan orkestra MIDI di versi final, dan penonton tidak ada yang lebih bijak. Dan yang luar biasa, alat semacam itu tersedia untuk musisi di hampir setiap tingkat pendapatan.

1.1 Apa itu MIDI Bukan

Sebelum melanjutkan, saya ingin menghilangkan beberapa kesalahpahaman yang terkadang dimiliki oleh pendatang baru. Tidak butuh waktu lama.

Pertama, MIDI tidak membuat musik: MIDI hanya memberi tahu perangkat lain cara membuat musik. Tapi itu bisa melakukan hal-hal lain juga. Misalnya, dalam perangkat lunak video profesional, pesan MIDI digunakan untuk mengontrol hal-hal seperti parameter animasi. Banyak permukaan kontrol studio menggunakan MIDI untuk mengontrol perangkat lunak pencampuran, dan piano pemain mewah ini menggunakannya untuk memicu aktuator robot. Poin yang saya coba sampaikan adalah bahwa meskipun data MIDI sebagian besar digunakan untuk mengontrol instrumen virtual, data tersebut benar-benar dapat digunakan untuk apa saja, dan tidak "terdengar" seperti apa pun dengan sendirinya.

Alat-alat yang digunakan komposer MIDI menggunakan kode komputer abstrak menjadi sesuatu yang lebih mudah untuk divisualisasikan. (Tangkapan layar Nuendo 8)

Kedua, data MIDI bukan hanya "lembaran musik untuk komputer", namun analoginya bisa bermanfaat. Sementara lembaran musik barat adalah media yang telah menyandikan semua musik paling ekspresif dalam sejarah, kenyataannya adalah ia meninggalkan banyak ruang untuk interpretasi - dan komputer tidak menangani ambiguitas dengan baik.

Sebaliknya, MIDI mungkin paling baik dianggap sebagai bahasa pemrograman, dan editor MIDI Anda sebagai lingkungan pemrograman visual. Editor MIDI merepresentasikan perintah MIDI sebagai bentuk pada gulungan piano, bukan seperti aslinya: instruksi digital yang dimuliakan. Dan seperti semua bahasa pemrograman, MIDI tunduk pada semua jenis bug dan gangguan. Misalnya, jika pesan "note on" tidak dipasangkan dengan benar dengan "note off", maka note tersebut akan terus diputar selamanya, karena komputer tidak memiliki akal sehat untuk berhenti.

Anyways, aku lelah menulis pengantar ini. Mari kupas semua lapisan abstraksi tersebut, dan pelajari, pada tingkat dasar, Cara Berbicara MIDI.

2. Cara Kerjanya

Seperti hampir semua hal di komputer, MIDI bermuara pada sekumpulan angka satu dan nol. Setiap digit disebut bit (kependekan dari “binary digit”) dan delapan di antaranya membentuk byte . Saat Anda memainkan piano digital, pesan MIDI dibuat secara internal dan dikirim ke generator nada instrumen, tempat pesan tersebut ditafsirkan dan diubah menjadi suara yang dapat didengar. Jika Anda mengintip sinyalnya, pesan yang dihasilkan mungkin terlihat seperti ini:

Ini adalah bentuk biner dari penampilan MIDI sederhana: empat not pertama dari Beethoven's Fifth. Jika Anda merekam urutan ini dan mengulanginya ke instrumen MIDI lain persis seperti yang dikirimkan, hasilnya akan menjadi salinan permainan yang identik. Jika Anda mengacaukan waktunya, Anda akan mengubah kecepatan kinerjanya. Segala hal lain tentang kinerja dikodekan dalam data itu sendiri.

Agak menarik untuk menyadari bahwa komposer saat ini pada dasarnya menghabiskan waktu mereka untuk membuat, mengedit, dan mengutak-atik apa yang bermuara pada pengiriman angka yang tepat waktu. Pokoknya, mari kita uraikan tugas menafsirkan kekacauan ini, selangkah demi selangkah.

2.1 Memisahkan Pesan

Hal pertama yang harus diketahui tentang pesan MIDI adalah bahwa pesan tersebut hampir selalu menjangkau lebih dari satu byte. Ini masuk akal jika Anda mempertimbangkan bahwa hanya ada 256 angka unik 8-bit, dan kami mungkin perlu menyandikan lebih banyak informasi daripada itu untuk mendeskripsikan sesuatu yang ekspresif seperti acara musik.

Jadi, jika Anda menerima pesan dalam beberapa paket kecil, mungkin sekaligus, bagaimana Anda tahu di mana satu pesan berakhir dan yang berikutnya dimulai? Secara realistis, jika Anda tahu berapa banyak byte yang diharapkan per pesan dan Anda mulai dari atas, Anda harus dapat membedakannya, asalkan tidak ada yang hilang dalam transmisi. Namun, MIDI menawarkan kepada kita cara yang pasti untuk mengurai setiap pesan: dengan mendedikasikan bit pertama dari setiap byte untuk penyebabnya.

ATURAN 1: Jika bit pertama byte MIDI adalah 1 , maka byte tersebut adalah status byte , yang menandai bagian pertama pesan MIDI. Jika bit pertama adalah 0 , maka itu adalah data byte , yang membentuk badan pesan.

Mudah. Setiap kali sebuah byte mengarah dengan 1 , kita tahu bahwa kita sedang membaca awal dari pesan baru, dan kita dapat menginterpretasikan byte berikut bersamaan dengan yang pertama. Mari kita gunakan aturan tersebut untuk memecah performa MIDI di atas menjadi pesan terpisah.

Sekarang kita sedang melihat sesuatu yang sedikit lebih teratur, Anda mungkin melihat beberapa pola muncul. Untuk satu hal, hanya ada dua versi unik dari setiap byte. Mengetahui bahwa pesan-pesan ini mewakili empat nada pertama dari Simfoni Kelima Beethoven, dapatkah Anda menebak apa artinya?

2.2 Byte Status dan Byte Data

Status byte dari pesan MIDI berfungsi sebagai headernya, dan merupakan bagian yang paling penting. Ini memberi tahu kita apa yang dilakukan pesan, dan bagaimana menginterpretasikan byte data berikut. Apa yang disandikan oleh byte data tergantung pada pesan, tetapi mereka biasanya akan memberikan informasi penting untuk menjalankan pesan. Jika byte status mengatakan, "lompat", byte data mungkin memberi tahu Anda seberapa tinggi.

Karena bit pertama dari setiap byte dicadangkan untuk membedakan dua jenis byte, hanya ada tujuh bit yang dapat digunakan oleh keduanya. Berikut cara penggunaannya:

ATURAN 2: Bit 2, 3, dan 4 dari byte status mengidentifikasi jenis pesannya . Bit 5–8 mengidentifikasi saluran MIDI yang dituju. Byte data melayani fungsi yang berbeda tergantung pada jenis pesan.

Tiga bit untuk menentukan jenis pesan dan empat untuk nomor saluran berarti ada delapan jenis pesan yang berbeda, dan 16 kemungkinan saluran. Byte data dapat berisi nilai apa pun dari 0 hingga 127 . Meskipun sebagian besar pesan menggunakan dua byte data, jumlah tersebut sebenarnya dapat berbeda tergantung pada kebutuhan pesan. Misalnya, pesan "perubahan program" hanya memerlukan satu byte data, dan pesan "eksklusif sistem" dapat memiliki nomor acak.

Jika Anda pernah bekerja dengan MIDI sebelumnya, Anda mungkin sudah terbiasa dengan saluran MIDI. Namun jika tidak, setiap koneksi MIDI dapat memerintahkan hingga 16 suara. Status byte menentukan dalam empat bit paling tidak signifikan mana dari saluran ini yang dituju oleh pesan.³

3. Jenis Pesan

Tabel berikut mengidentifikasi tipe pesan MIDI yang berbeda, dan bagaimana mereka menggunakan byte data. Kami akan menjelajahi masing-masing di subbagian berikut.

3.1 Catatan Nonaktif / Catatan Aktif (0x8n, 0x9n)

Ini adalah pesan MIDI paling dasar dan paling mudah dipahami. Saat Anda ingin memainkan not, kirim pesan "note on", dan saat Anda ingin mengakhirinya, kirim pesan "note off". Pesan ini menggunakan dua byte data: yang pertama mengidentifikasi tinggi nada yang ingin Anda kontrol, dan yang kedua mengidentifikasi kecepatan. ⁴ Sebuah "not on" dengan kecepatan 0 tidak menghasilkan suara, dan setara dengan pesan "note off".

Pertimbangan:

  • Keberadaan pesan “note on” dengan kecepatan nol berarti bahwa pesan “note off” sama sekali tidak diperlukan. Standar MIDI secara khusus menyatakan bahwa pesan "note off" dan "note on" kecepatan nol adalah setara dan harus diperlakukan secara identik. Akibatnya, satu perangkat dapat mengeluarkan catatan berbeda dari yang lain.
  • Sementara pemancar hanya perlu menggunakan satu metode untriggering note, penerima harus mampu menangani keduanya.
  • Meskipun nilai kecepatan tidak masuk akal dalam pesan "note off", itu masih merupakan bagian dari pesan dan harus dikirim. Nilai tidak terpakai dan dibuang.

Nomor nada dipetakan ke tuts piano pada dasarnya satu-ke-satu. Namun, karena ada 128 nilai yang mungkin dan hanya 88 tuts piano, MIDI sebenarnya mendukung 40 seminada yang tidak ditemukan pada piano. 19 diantaranya terletak di atas nada tertinggi, C7, dan 21 lainnya berada di bawah nada terendah, A-1. Kisaran nada MIDI kurang lebih berpusat pada Middle C, yaitu nada nomor 60.

Ketahuilah bahwa tidak semua pabrikan menyetujui angka oktaf. Notasi nada ilmiah, yang digunakan oleh musisi analog, mengidentifikasi C terendah pada piano sebagai C1 , yang menjadikan C Tengah C4 . Pemrogram, di sisi lain, sering mulai menghitung dengan 0, jadi bagi mereka, C terendah adalah C0 , dan C Tengah adalah C3 . Ini adalah notasi yang biasa saya gunakan, karena itulah yang digunakan oleh semua alat MIDI saya. Namun, apapun sistem yang Anda gunakan, Middle C selalu mencatat nomor 60.

Dalam Lampiran II , saya menyediakan bagan untuk mengonversi ke dan dari nomor pitch MIDI.

3.2 Perubahan Kontrol (0xBn)

Pesan “Kontrol perubahan” digunakan untuk memodifikasi pengontrol kontinu saluran . Pengontrol kontinu dianalogikan dengan jalur otomasi; memungkinkan kontrol berkelanjutan atas berbagai aspek kinerja saluran.

Byte data pertama mengidentifikasi nomor CC (0–119) , dan yang kedua memberinya nilai (0–127) .

Pertimbangan:

  • Berbeda dengan namanya, data pengontrol kontinyu tidak kontinyu. Alih-alih menginterpolasi antara nilai dengan lancar seperti yang dilakukan otomatisasi, nilai jalur CC saat ini hanya dapat berubah dalam langkah-langkah terpisah. Untuk meningkatkan ke nilai lain dengan lancar, Anda harus mengirim pesan "perubahan kontrol" dalam jumlah besar, menambah atau mengurangi nilai pada kecepatan yang terkendali.
  • Spesifikasi MIDI menentukan untuk apa sebagian besar 120 CC dimaksudkan untuk digunakan, meskipun sangat sedikit perangkat yang mengamati lebih dari segelintir. Saya memberikan tabel semua CC di Lampiran III .
  • Delapan nomor CC terakhir (120–127) sebenarnya tidak mewakili CC sama sekali. Sebaliknya, mereka mewakili kategori pesan khusus yang disebut pesan mode saluran . Pesan mode saluran adalah perintah khusus yang memengaruhi seluruh perangkat yang menerimanya. Dalam praktiknya, Anda tidak perlu terlalu khawatir tentang mereka, tetapi saya memberikan lebih banyak informasi tentang mereka di Lampiran I .
  • Nomor CC 0 dan 32 digunakan oleh banyak perangkat untuk tujuan pemilihan tambalan. Baca selengkapnya di Lampiran IV .

Membengkokkan nada ke atas atau ke bawah. Duh.

Pitch bend berperilaku sedikit seperti CC. Faktanya, sebagian besar editor MIDI memperlakukan Pitch Bend seperti CC lainnya. Namun, nilai CC 7-bit, dengan 128 kemungkinan nilai, tidak menawarkan resolusi yang cukup untuk menjual efek pitch bend. Telinga kita luar biasa dalam menyelesaikan ketinggian titinada, jadi meskipun kita mendekati titinada baru 1/128 pada satu waktu, itu tidak terdengar halus dan organik.

Untuk mendapatkan resolusi yang lebih baik, pesan “pitch bend” menggunakan dua byte data untuk mengirimkan satu nilai besar. Pada dasarnya, jika Anda menyatukan tujuh bit dari satu pesan dan tujuh bit lainnya, Anda dapat menyusun satu nilai 14-bit, meningkatkan resolusi Anda dengan faktor 2⁷, atau 128.

Sekarang, alih-alih 128 nilai yang mungkin untuk tikungan nada kami, kami memiliki 16.384 kekalahan - lebih dari cukup langkah untuk membuat efek tikungan nada halus. Bagian kanan disediakan oleh byte data pertama (Byte Paling Signifikan, atau LSB) dan bagian kiri disediakan oleh byte kedua (Byte Paling Signifikan, atau MSB).

Pertimbangan:

  • Kekuatan tikungan nada (berapa banyak seminada ke atas atau ke bawah yang diwakili oleh tikungan nada maksimal) berbeda dari satu instrumen ke instrumen lainnya. Ini sering dapat dikonfigurasi.
  • Pitch bend "berpusat" di 8192 (di mana tidak ada perubahan nada).
  • Pitch bend memengaruhi semua not yang diputar di saluran, seperti yang dilakukan CC.
  • Pemrograman dengan MSB dan LSB paling baik dilakukan dengan operator bitwise. Saya tidak akan membahasnya di sini, tetapi saya telah menyediakan beberapa sumber di Lampiran V jika Anda ingin mempelajari lebih lanjut.

Beberapa pengontrol MIDI, seperti Akai MPK225 , menampilkan sesuatu yang disebut aftertouch . Pengontrol aftertouch sensitif tidak hanya terhadap kecepatan setiap penekanan tombol, tetapi juga terus-menerus sensitif terhadap tekanan yang menahan tombol.

Aftertouch hadir dalam dua jenis: aftertouch saluran dan aftertouch polifonik . Channel aftertouch, juga dikenal sebagai tekanan mono , mengukur tekanan di seluruh keyboard, sedangkan aftertouch polifonik mengukur tekanan secara independen untuk setiap tombol. Karena biaya perangkat keras yang lebih rendah, aftertouch saluran lebih umum dari keduanya. Pesan tekanan saluran hanya menggunakan satu byte data, yang mewakili tingkat tekanan keseluruhan. Pesan tekanan kunci polifonik menggunakan dua: yang pertama melaporkan nada (menggunakan nomor nada standar), dan yang kedua melaporkan tekanannya.

Pertimbangan:

  • Sentuhan akhir polifonik adalah satu-satunya kontrol yang dapat diatur secara independen untuk setiap titinada. Setiap kontrol lainnya (selain nada aktif atau nonaktif) memengaruhi seluruh saluran.
  • Ekstensi ke MIDI, yang disebut "MIDI Polyphonic Expression" (MPE), dirancang untuk memungkinkan CC dan pitch bend diterapkan secara polifonik juga. MPE tidak terlalu umum, tetapi telah dipopulerkan oleh perangkat seperti ROLI Seaboard . Saya telah menyediakan tautan ke sumber yang membahasnya di Lampiran V .

Jika Anda tidak menggunakan banyak perangkat keras MIDI eksternal, Anda mungkin tidak akan terlalu sering menggunakan jenis pesan ini. Pesan "perubahan program" memerintahkan perangkat untuk memuat program baru (patch atau prasetel baru). Itu hanya menggunakan satu byte data, yang menentukan indeks tambalan.

Jenis pesan ini sangat membantu saat menulis dengan perangkat MIDI eksternal. Selama perangkat keras Anda mendukung prasetel, proyek atau sesi Anda dapat menangani pemilihan dan pemuatannya: cukup urutkan pesan "perubahan program" yang sesuai di awal.

Pertimbangan:

  • Instrumen dengan lebih dari 128 preset umumnya menyimpan tambalannya di beberapa bank . Untuk menarik kembali program yang disimpan di bank lain, CC 0 dan 32 digunakan kembali menjadi pesan "pilih bank". Di Appendix IV , saya membahas cara kerjanya.
  • Dengan penjadwalan pesan perubahan program yang cerdik, satu perangkat dapat menggunakan lebih dari 16 tambalan yang berbeda dalam satu bagian, selama mereka tidak bermain secara bersamaan. Meskipun nyata, Anda mungkin harus membagi beberapa hal menjadi tangkapan terpisah jika Anda perlu mengeluarkan banyak suara dari satu perangkat.
  • Cubase dan Nuendo menawarkan dukungan asli untuk pesan perubahan program di inspektur trek MIDI. Saya tidak yakin berapa banyak DAW lain yang mendukung ini.

Pesan sistem adalah topik lanjutan yang tidak akan saya bahas di sini. Mereka benar-benar layak mendapatkan artikel mereka sendiri. Mereka digunakan untuk segala macam hal; transfer data raksasa (disebut " dumps "), menyinkronkan jam, mentransmisikan kode waktu, dan banyak lagi.

Di masa mendatang, saya mungkin menulis panduan untuk pesan sistem, tetapi untuk saat ini, jangan khawatir tentang itu. Perlu diketahui bahwa mereka ada, dan umumnya tidak digunakan dalam komposisi MIDI.

4. Tentang Heksadesimal

Sebelum melanjutkan, kita harus membicarakan semua 0x yang saya gunakan di bagian sebelumnya. Awalan 0x memberi tahu Anda bahwa sebuah angka dalam heksadesimal.⁵ Saat Anda mempelajari alat MIDI lanjutan dan manual perangkat, Anda akan melihat bahwa pesan MIDI hampir selalu direpresentasikan dalam heksadesimal, bukan biner atau basis sepuluh. Ini mungkin tampak kontra-intuitif pada awalnya - maksud saya, jika Anda akan mengonversi bilangan biner sama sekali, mengapa tidak mengonversi saja ke basis sepuluh yang dapat dibaca manusia?

Jawabannya adalah lebih praktis. Meskipun menurut saya biner adalah cara terbaik untuk mulai mempelajari MIDI, cukup rumit untuk benar-benar bekerja dengannya. Menyebarkan setiap byte lebih dari delapan digit membuat membaca dan menulis tugas, dan karena segala sesuatu dalam biner hanya satu dan nol, mudah kehilangan tempat Anda saat membaca urutan panjang.

Membalik sedikit dalam bilangan biner hanya dapat memengaruhi satu digit representasi heksadesimalnya.

Jadi, pemrogram bitwise biasanya bekerja dalam heksadesimal. Ini mengurangi setiap byte menjadi hanya dua digit, dan karena 16 adalah pangkat 2, setiap bit yang Anda ubah hanya memengaruhi satu digit dalam hex. Itu memungkinkan Anda untuk menganggap setiap digit heksadesimal sebagai angka empat bitnya sendiri. Jika Anda ingin bekerja bitwise pada representasi desimal, Anda harus mengubah seluruh byte menjadi biner dan kembali lagi.

Hanya ada beberapa hal yang perlu diingat saat bekerja dengan MIDI dalam heksadesimal.

  • Karena cara bit dikelompokkan dalam heksadesimal, Anda dapat mengetahui saluran MIDI mana yang ditangani byte status dengan hanya melihat digit hex kanan.
  • Jika digit kiri byte adalah 0x7atau kurang, Anda tahu itu adalah byte data, dan demikian juga, Anda tahu byte yang dimulai dengan 0x8atau lebih besar adalah byte status.
  • Nilai byte data maksimum, 127, 0x7F dalam heksadesimal.

5. Contoh Terapan: Simfoni Kelima Beethoven

Saat terakhir kali kami meninggalkan contoh ini, kami baru saja memecah biner mentah menjadi pesan terpisah. Itu terlihat seperti ini:

Untuk membuatnya lebih mudah untuk diperdebatkan, mari kita ubah menjadi heksadesimal. Saya akan membiarkan byte status merah, dan byte data biru.

Mengetahui apa yang kita ketahui sekarang, kita menyadari bahwa 0x9 dan 0x8 yang memimpin byte status mengidentifikasi pesan masing-masing sebagai "note on" dan "note off". Digit kanan byte memberi tahu kita bahwa mereka menargetkan Saluran MIDI 1.⁶

Inilah tampilan kinerja dengan byte status yang diterjemahkan.

Dalam tipe pesan “note on” dan “note off”, byte data pertama mengkodekan nada, dan yang kedua mengkodekan kecepatan. Nilai kecepatan hanyalah angka. Untuk mengetahui nada, kita perlu merujuk ke tabel catatan MIDI . Dan ingat, kecepatan "catatan" tidak digunakan.

Mari selesaikan terjemahannya:

Itu dia! Itu adalah instruksi MIDI yang diterjemahkan yang menyandikan empat not pertama Beethoven's Fifth. Dum dum dum duuum!

Mengetahui apa yang Anda ketahui sekarang, Anda dapat membuat dan mendekode pesan MIDI umum secara manual. Alat yang lebih canggih, seperti transformator MIDI dan editor logika, kini terbuka untuk Anda. Namun, selalu ada lebih banyak untuk dipelajari. Jika Anda rakus akan pengetahuan, saya telah menyediakan beberapa sumber yang dapat Anda gunakan untuk mempelajari MIDI lebih lanjut di Lampiran V .

6. Pelajaran Bonus: Status Berlari

Ada pintasan praktis yang ditawarkan MIDI yang belum saya sebutkan sampai sekarang demi menjaga semuanya tetap sederhana. Begini cara kerjanya: setelah Anda mengirim byte status, Anda tidak perlu mengirim yang lain hingga byte itu berbeda dari yang terakhir. Byte status terakhir yang diterima tetap "aktif", dan digunakan untuk menginterpretasikan semua byte data yang akan diikuti. Ini disebut sebagai Running Status .

Pertimbangkan rangkaian byte berikut:

Apa yang Anda lihat adalah performa yang persis sama dari Beethoven's Fifth yang kami terjemahkan dalam contoh terapan, tetapi hampir semua byte statusnya hilang. Namun, karena Running Status, performa ini sama validnya dengan yang pertama. Setelah kami mengirim status byte 0x90, itu menjadi Running Status, dan setiap pasangan byte yang mengikuti dapat diperlakukan seolah-olah didahului oleh " 0x90" mereka sendiri.

Ini memungkinkan kami untuk memotong banyak byte status berulang, yang secara dramatis dapat mempersingkat aliran MIDI kami. Dulu ketika komputer lebih lambat dan baud rate lebih ketat, ini sangat membantu. Hari ini, bagaimanapun, komputer sangat cepat sehingga menggunakan Running Status tidak benar-benar memberikan peningkatan kinerja yang nyata. Saya masih mengungkitnya, karena jika Anda menemukan diri Anda melakukan pemrograman MIDI, Anda harus siap untuk melihat byte status dihilangkan di sana-sini.

Perhatikan bahwa karena kecepatan nol "note on's" dihitung sebagai "note off's", kita dapat memulai dan mengakhiri not tanpa merusak status berjalan; setidaknya, sampai kita perlu mengirim perubahan kontrol atau pesan ke saluran lain.

  1. Ini dilakukan dengan ekstensi ke MIDI yang disebut MIDI Show Control.
  2. "Apa yang Anda lihat adalah apa yang Anda dapatkan".
  3. Nomor saluran MIDI dimulai dengan 1, sedangkan representasinya di sini dimulai dengan 0. Nilai 0 berarti Saluran 1, dan nilai 15 berarti Saluran 16.
  4. Kecepatan dapat dianggap sebagai seberapa "keras" sebuah nada dipukul.
  5. Notasi umum lainnya adalah mengikuti angka dengan huruf kapital "H", seperti pada "78H".
  6. Ingat, meskipun angka dalam pesan adalah nol, itu sesuai dengan Saluran 1 karena kita mulai menghitung angka pada 0 dan saluran pada 1.

Lampiran I: Pesan Mode Saluran

Pesan “Channel mode” adalah perintah khusus yang mengubah perilaku seluruh perangkat dengan mengubah mode MIDI -nya . Nah, semacam.

Dalam praktiknya, pesan "mode saluran" hanya digunakan untuk menghidupkan atau mematikan fitur tertentu dan mengirimkan perintah tertentu. Apa yang disebut MIDI sebagai "mode" pada dasarnya hanyalah konfigurasi berbeda dari tombol Omni dan Poly. Sejujurnya, menurut saya "mode" bukanlah cara yang sangat tepat untuk memikirkan tentang perintah ini; tapi setidaknya saya akan menjelaskan apa yang dilakukan perintah.

Pesan mode saluran tidak memiliki jenis pesannya sendiri. Alih-alih, apa yang akan menjadi delapan nomor pengontrol kontinu terakhir (CC 120–127) digunakan kembali. Pesan mode saluran adalah sebagai berikut:

Agar perangkat merespons pesan mode saluran, perangkat harus menerimanya di saluran dasarnya . Saluran dasar perangkat adalah satu-satunya saluran MIDI tempat pesan mode saluran dianggap valid. Untuk banyak perangkat, saluran ini dapat dikonfigurasi. Dengan begitu, pesan mode saluran dapat menargetkan perangkat tertentu dalam rantai daisi.

Berikut adalah ringkasan singkat dari setiap pesan mode saluran. Lampiran V berisi sumber-sumber untuk studi lebih lanjut.

  • All Sound Off (“CC” 120): Mematikan semua suara yang sedang dibuat instrumen, termasuk peluruhan nada dan efek reverb.
  • Atur Ulang Semua Pengontrol (“CC” 121): Mengatur semua CC, pengontrol sakelar, pitch bend, dan efek aftertouch ke defaultnya. Nilai apa yang dikembalikan oleh setiap pengontrol bergantung pada pengontrol, dan ditentukan dalam spesifikasi MIDI.
  • Kontrol Lokal (“CC” 122): Melepaskan keyboard pada synthesizer dari generator nadanya. Ini memungkinkan Anda untuk menggunakan synthesizer sebagai pengontrol MIDI sekaligus mengurutkannya. Setel ke 0x00untuk mematikan kontrol lokal, dan 0x7Funtuk menyalakannya kembali.
  • All Notes Off (“CC” 123): “tombol panik”. All Notes Off sama dengan mengirim pesan "note off" untuk setiap nada di setiap saluran. Ini berguna untuk menyelesaikan catatan macet. Catatan yang dipicu secara lokal tidak terpengaruh.
  • Mode Omni Mati/Aktif (“CC's” 124, 125): Saat mode Omni aktif, setiap saluran akan merespons setiap pesan masuk, tidak peduli saluran mana yang ditunjukkan dalam byte status.
  • Mono Mode / Poly Mode (“CC's” 126, 127): Memaksa suara atau beberapa suara ke perilaku monofonik atau polifonik. Jika nilai “mono mode on” diatur ke 0x00, maka saluran dasar, dan setiap saluran di atasnya, akan diatur ke mode mono. Untuk nilai lain n , saluran n hingga n+m-1 akan disetel ke mode mono (di mana m adalah nilai byte data kedua). Pesan "mode poli aktif" akan mengatur semua saluran kembali ke mode poli.

Lampiran III: Penugasan CC Standar

Spesifikasi MIDI mendefinisikan penggunaan standar CC, yang telah saya salin di sini. Semua nomor CC ditentukan, kecuali untuk: 3, 9, 14, 15, 20–31, 85–90, dan 102–119 . CC yang paling banyak didukung adalah Modulation ( 0x01), Foot Controller ( 0x04), Channel Volume ( 0x07), Pan ( 0x0A), Expression ( 0x0B), dan Sustain ( 0x40).

Lihat sumber daya di Lampiran V jika Anda ingin mempelajari lebih lanjut tentang CC ini.

Lampiran IV: Pesan Perubahan Bank

Synthesizer modern dapat menyimpan dan mengingat banyak, lebih banyak preset daripada yang dapat diatasi oleh satu pesan perubahan program. Untuk menyiasatinya, pabrikan sering mengurutkan program mereka ke dalam bank . Setiap bank memiliki maksimal 128 preset, dan alamat unik 7-bit atau 14-bit.

Untuk menarik kembali tambalan dari bank lain, Anda harus terlebih dahulu mengirim pesan "pilih bank" dengan alamatnya. Setelah itu kirim pesan perubahan program seperti biasa, dan patch yang dimuat akan datang dari bank baru.

Seperti yang mungkin Anda perhatikan, ini sebenarnya adalah pesan "kontrol perubahan" untuk CC 0 dan 32 . Untuk alamat 7-bit, hanya CC 0 yang digunakan. Untuk alamat 14-bit, CC 0 melambangkan MSB, dan 32 melambangkan LSB. Jika Anda membutuhkan primer pada MSB dan LSB, ada satu di bagian Pitch Bend dari artikel utama.

Apakah perangkat menggunakan alamat 7-bit atau 14-bit agak sewenang-wenang, dan Anda harus memeriksa manual Anda untuk mengetahui mana yang harus digunakan saat berkomunikasi dengan perangkat Anda.

Lampiran V: Sumber Daya Tambahan

  • Asosiasi MIDI : Asosiasi MIDI adalah tempat penyimpanan utama informasi tentang atau terkait dengan teknologi MIDI. Ini gratis untuk mendaftar, dan setelah Anda melakukannya, Anda dapat mengunduh Spesifikasi Lengkap MIDI 1.0 Lengkap di sini .
  • Operasi Bitwise (Wikipedia) : Saya tahu, saya tahu, Wikipedia bukanlah sumber daya utama yang baik, tetapi saya menyukai artikel ini karena bebas bahasa dan tidak memiliki iklan. Pelajari tentang pergeseran bit aritmatika dan bitwise OR, yang berguna saat bekerja dengan MSB dan LSB.
  • Apa itu MPE? : Sebuah artikel di database dukungan ROLI membahas MIDI Polyphonic Expression, yang digunakan di pengontrol multidimensi seperti produk Seaboard. MPE secara resmi diadopsi oleh MIDI Manufacturer's Association pada Januari 2018, dan tautan unduhan ke spesifikasi tersedia di sini .
  • Mode MIDI (Electronic Music Interactive v2, University of Oregon): Halaman ini menawarkan ikhtisar yang bagus dan ringkas dari empat mode MIDI standar. Itu bagian dari kursus online yang lebih panjang tentang musik elektronik.
  • Daftar CC MIDI (Demam Nick) : Daftar CC standar dengan penjelasan yang lebih rumit. Jika Anda masih memerlukan informasi lebih lanjut setelah melalui daftar Nick, lihat Spesifikasi Detail MIDI 1.0 Lengkap, yang dapat Anda unduh di sini .
  • Pesan Umum Sistem MIDI , Pesan Realtime Sistem MIDI , dan Pesan Eksklusif Sistem MIDI (RecordingBlogs Wiki): Pengenalan yang sangat baik untuk setiap jenis pesan sistem.
  • Nomor Parameter Terdaftar MIDI (RecordingBlogs Wiki): Tinjauan tentang Nomor Parameter Terdaftar, yang dapat dianggap sebagai perpanjangan dari CC. Setelah Anda memahami RPN, NRPN (Non-Registered Parameter Numbers) juga akan dapat diakses oleh Anda.