MIDI Nasıl Konuşulur

Dec 04 2022
Bu makaleyi ilk olarak Mayıs 2019'da yazmıştım, ancak eski web sitemi kullanımdan kaldırdıktan sonra buraya taşıdım. Zevk almak! İçindekiler Ek I: Kanal Modu MesajlarıEk II: MIDI Pitch ChartEk III: Standart CC AtamalarıEk IV: Banka Değiştirme MesajlarıEk V: Ek Kaynaklar MIDI eskidir, ancak çok faydalıdır.

Bu makaleyi ilk olarak Mayıs 2019'da yazmıştım, ancak eski web sitemi kullanımdan kaldırdıktan sonra buraya taşıdım. Zevk almak!

İçindekiler

  1. MIDI Nedir
    1.1 MIDI Ne Değildir
  2. Nasıl Çalışır
    2.1 Mesajları Ayırma
    2.2 Durum Baytları ve Veri Baytları
  3. Mesaj Tipleri
    3.1 Nota Kapalı / Not Açık (0x8n, 0x9n)
    → 3.1.1 MIDI Perde Numaraları Hakkında
    3.2 Kontrol Değişikliği (0xBn)
    3.3 Pitch Bend (0xEn)
    3.4 Polifonik Tuş Basıncı ve Kanal Basıncı (0xAn, 0xDn)
    3.5 Program Değişikliği (0xCn) )
    3.6 Sistem (0xFn)
  4. Onaltılık hakkında
  5. Uygulamalı Örnek: Beethoven'ın Beşinci Senfonisi
  6. Bonus Ders: Çalışma Durumu

Ek I: Kanal Modu Mesajları
Ek II: MIDI Adım Tablosu
Ek III: Standart CC Atamaları
Ek IV: Banka Değişiklik Mesajları
Ek V: Ek Kaynaklar

MIDI eski ama çok kullanışlı. Guitar Center'da gördüğünüz klavyeleri çalıştırır, ışıklandırma ve konserlerdeki piroteknik gibi şeyleri kontrol eder¹ ve son birkaç on yılda neredeyse her filmin müziklerini yapmak için kullanılmıştır.

Modern bir müzisyenseniz, çalışan bir MIDI bilgisi önemlidir. Bunun gibi blog gönderilerini okuyan türden biriyseniz, onunla çalışma konusunda zaten biraz deneyime sahip olma ihtimaliniz yüksektir; ancak, sadece nasıl kullanılacağını değil, aynı zamanda nasıl okunacağını da, bit düzeyinde bilmenin yararlı olduğunu düşünüyorum. Kendi MIDI mesajlarınızı çevirmek ve bir araya getirmek ilk başta göz korkutucu gelebilir, ancak aslında gerçekten çok kolay ve bence bu, herhangi bir modern bestecinin sahip olması gereken önemli bir beceri. Bir kayıt mühendisi olarak mikrofonların nasıl çalıştığını bilmek gibi.

Bu makale, müzik üretimine uygulandıkları için MIDI mesajlarına kapsamlı bir giriş ve kılavuz görevi görecek. Bu kılavuz, MIDI kompozisyonu veya DAW'nizde MIDI düzenleyicisinin nasıl kullanılacağı hakkında bir eğitim değildir . Bununla birlikte, bu kılavuz kesinlikle bestecilere yöneliktir, çünkü temel MIDI bilgisinin daha gelişmiş (ve karmaşık) MIDI araçlarınızı keşfederken çok yardımcı olacağını göreceksiniz. Başlayalım.

Prophet 600, MIDI'yi destekleyen ilk sentezleyicilerden biriydi.

1. MIDI Nedir?

Her şeyi en baştan öğretmeye başlamayı seviyorum. Bununla birlikte, MIDI'nin ne olduğu ve ne işe yaradığı konusunda zaten netseniz, doğrudan ayrıntılara dalacağımız How It Works bölümüne atlayabilirsiniz. Değilse, gözden geçirelim.

MIDI, “Musical Instrument Digital Interface” anlamına gelen bir kısaltmadır. Esasen, bilgisayarların müzikal performansları tanımlaması ve birbirlerine iletmesi için bir yoldur. Aslında yol bu . 80'lerden sonra doğduysanız muhtemelen şimdiye kadar gördüğünüz her klavye veya davul makinesi MIDI kullanır. Yıllar boyunca MIDI'yi elden geçirmek veya değiştirmek için birçok girişimde bulunulmasına rağmen, enstrüman üreticileri ve geliştiricileri gerçekten başka bir şey kullanmayı umursamıyor gibi görünüyor.

MIDI ile şunları yapabilirsiniz:

  • Müzik performanslarını kaydedin ve cerrahi hassasiyetle düzenleyin
  • Herhangi bir enstrümana çok az veya hiç çalışma yapmadan bir performansı "yamalayın"
  • Prosedürel olarak performansları oluşturun veya yeniden sıralayın
  • Topluluk performanslarını tek bir bağlantıyla düzenleyin
  • "Otomasyon" ile tamamlanmış ilkel karıştırma gerçekleştirin

Ve bu, skor bile yapılırsa . 80'lerin sanal orkestraları kulağa gülünç derecede sahte gelirken, modern enstrümanlar o kadar iyi ses çıkarıyor ki sıradan dinleyiciler aradaki farkı anlayamıyor bile. Ve bu her şeyi değiştirdi. Düşük bütçeli filmlerde ve TV şovlarında, film müziği son versiyonda genellikle MIDI orkestralarını kullanır ve izleyiciler bundan daha akıllı değildir. Ve şaşırtıcı bir şekilde, bu tür araçlar hemen hemen her gelir düzeyindeki müzisyenler tarafından kullanılabilir.

1.1 MIDI Ne Değildir?

Devam etmeden önce, yeni gelenlerin bazen sahip olduğu birkaç yanlış kanıyı ortadan kaldırmak istiyorum. Uzun sürmeyecek.

İlk olarak, MIDI müzik yapmaz: sadece diğer cihazlara nasıl müzik yapılacağını söyler. Ama başka şeyler de yapabilir. Örneğin, profesyonel video yazılımında, MIDI mesajları, animasyon parametreleri gibi şeyleri kontrol etmek için kullanılır. Birçok stüdyo kontrol yüzeyi, miksaj yazılımını kontrol etmek için MIDI kullanır ve bu gösterişli piyano çalar, bunu robotik aktüatörleri tetiklemek için kullanır. Belirtmeye çalıştığım nokta, MIDI verileri ağırlıklı olarak sanal enstrümanları kontrol etmek için kullanılsa da, gerçekten herhangi bir şey için kullanılabilir ve kendi başına hiçbir şey gibi "kulağa" gelmediğidir.

Bir MIDI bestecisinin kullandığı araçlar, bilgisayar kodunu görselleştirmesi daha kolay bir şeye soyutlar. (Nuendo 8'in ekran görüntüsü)

İkinci olarak, MIDI verileri sadece "bilgisayarlar için notalar" değildir, benzetme ne kadar faydalı olursa olsun. Batılı notalar, tarihin en anlamlı müziklerinin tamamını kodlamış bir ortam olsa da, gerçek şu ki, yorumlama için hatırı sayılır bir alan bırakıyor - ve bilgisayarlar belirsizliği pek iyi kaldıramıyor.

Bunun yerine, MIDI muhtemelen en iyi şekilde bir programlama dili olarak ve MIDI düzenleyiciniz de görsel bir programlama ortamı olarak düşünülür. MIDI editörleri, MIDI komutlarını gerçekte oldukları şey yerine piyano rulolarındaki şekiller olarak temsil eder: yüceltilmiş dijital talimatlar. Ve tüm programlama dilleri gibi, MIDI de her türlü hataya ve aksaklığa tabidir. Örneğin, bir "note on" mesajı bir "note off" ile düzgün bir şekilde eşleştirilmezse, o zaman nota sonsuza kadar çalmaya devam eder, çünkü bilgisayarlar duracak sağduyuya sahip değildir.

Her neyse, bu girişi yazmaktan yoruldum. Tüm bu soyutlama katmanlarını geride bırakalım ve temel düzeyde MIDI Nasıl Konuşulur öğrenelim.

2. Nasıl Çalışır?

Bilgisayarlardaki hemen hemen her şey gibi, MIDI da bir grup bir ve sıfırdan oluşur. Her basamak bit olarak adlandırılır ("ikili basamak"ın kısaltması) ve bunlardan sekizi bir bayt oluşturur . Bir dijital piyano çaldığınızda, MIDI mesajları dahili olarak oluşturulur ve enstrümanın ton üretecine gönderilir, burada yorumlanır ve işitilebilir sese dönüştürülür. Sinyale bir göz attıysanız, oluşturulan mesajlar şöyle görünebilir:

Bu, basit bir MIDI performansının ikili biçimidir: Beethoven'ın Beşinci'sinin ilk dört notası. Bu sekansı kaydedecek ve başka bir MIDI enstrümanına tam olarak verildiği gibi tekrarlayacak olsaydınız, sonuç performansın birebir aynısı olurdu. Zamanlamayı bozarsanız, performansın hızını değiştirirsiniz. Performansla ilgili diğer her şey verilerin kendisinde kodlanmıştır.

Bugünlerde bestecilerin zamanlarını, zamanlanmış bir sayı sunumuna indirgenen şeyleri yapmak, düzenlemek ve ince ayar yapmak için harcadıklarını fark etmek biraz ilginç. Her neyse, bu karmaşayı yorumlama işini adım adım çözelim.

2.1 Mesajları Ayırma

MIDI mesajları hakkında bilinmesi gereken ilk şey, bunların neredeyse her zaman birden fazla bayta yayılmasıdır. Yalnızca 256 benzersiz 8 bitlik sayı olduğunu ve müzikal bir olay kadar anlamlı bir şeyi tanımlamak için muhtemelen bundan çok daha fazla bilgiyi kodlamamız gerektiğini düşündüğünüzde bu mantıklıdır.

Öyleyse, birkaç küçük paket halinde, muhtemelen tek seferde bir mesaj alıyorsanız, bir mesajın nerede bitip diğerinin nerede başladığını nasıl anlarsınız? Gerçekçi olarak, mesaj başına kaç bayt bekleyeceğinizi biliyorsanız ve en baştan başlarsanız, hiçbiri iletimde kaybolmadığı sürece bunları birbirinden ayırabilmelisiniz. Ancak MIDI bize her mesajı çözümlememiz için kesin bir yol sunuyor: her baytın ilk bitini amaca ayırarak.

KURAL 1: Bir MIDI baytının ilk biti 1 ise , bayt bir MIDI mesajının ilk bölümünü işaretleyen bir durum baytıdır . İlk bit bir 0 ise, bu durumda mesajın gövdesini oluşturan bir veri baytıdır .

Kolay. Bir baytın başında 1 olduğu her seferde , yeni bir iletinin başlangıcını okuduğumuzu biliriz ve sonraki baytları ilk baytla uyumlu olarak yorumlayabiliriz. Yukarıdaki MIDI performansını ayrı mesajlara bölmek için bu kuralı kullanalım.

Artık biraz daha düzenli bir şeye baktığımıza göre, birkaç modelin ortaya çıktığını fark edebilirsiniz. Birincisi, her baytın yalnızca iki benzersiz sürümü vardır. Bu mesajların Beethoven'ın Beşinci Senfonisi'nin ilk dört notasını temsil ettiğini bildiğinize göre, ne anlama geldiklerini tahmin edebiliyor musunuz?

2.2 Durum Baytları ve Veri Baytları

Bir MIDI mesajının durum baytı, başlık görevi görür ve bu nedenle en önemli kısımdır. Bize mesajın ne yaptığını ve aşağıdaki veri baytlarının nasıl yorumlanacağını söyler. Veri baytlarının neyi kodladığı mesaja bağlıdır, ancak tipik olarak mesajın yürütülmesi için önemli olan bilgileri sağlarlar. Durum baytı "zıpla" diyorsa, veri baytları size ne kadar yüksek olduğunu söyleyebilir.

Her baytın ilk biti, iki bayt türünü birbirinden ayırmak için ayrıldığından, her ikisi tarafından da kullanılabilen yalnızca yedi bit vardır. İşte nasıl kullanıldıkları:

KURAL 2: Bir durum baytının 2, 3 ve 4. bitleri, mesaj tipini tanımlar . 5–8 bitleri , adreslediği MIDI kanalını tanımlar . Veri baytları, mesaj türüne bağlı olarak farklı işlevlere hizmet eder.

Mesaj türünü belirlemek için üç bit ve kanal numarası için dört bit, sekiz farklı mesaj türü ve 16 olası kanal olduğu anlamına gelir. Veri baytları, 0 ile 127 arasında herhangi bir değer içerebilir . İletilerin ezici çoğunluğu iki veri baytı kullanırken, bu sayı aslında iletinin ihtiyaçlarına bağlı olarak değişebilir. Örneğin, "program değişikliği" mesajları yalnızca bir veri baytına ihtiyaç duyar ve "sisteme özel" mesajları isteğe bağlı bir sayıya sahip olabilir.

Daha önce MIDI ile çalıştıysanız, muhtemelen MIDI kanallarını zaten biliyorsunuzdur. Ama olmamanız durumunda, her MIDI bağlantısı 16 sese kadar komut verebilir. Durum baytı, mesajın bu kanallardan hangisini adreslediğini en önemsiz dört bitinde belirtir.³

3. Mesaj Türleri

Aşağıdaki tablo, farklı MIDI mesaj türlerini ve bunların veri baytlarını nasıl kullandıklarını tanımlar. Aşağıdaki alt bölümlerde her birini inceleyeceğiz.

3.1 Nota Kapalı / Nota Açık (0x8n, 0x9n)

Bunlar MIDI mesajlarının en temel olanlarıdır ve anlaşılması en kolay olanlardır. Bir notayı çalmak istediğinizde "note on" mesajı gönderin ve notayı bitirmek istediğinizde "note off" mesajı gönderin. Bu mesajlar iki veri baytı kullanır: ilki hangi perdeyi kontrol etmek istediğinizi tanımlar ve ikincisi bir hızı tanımlar. ⁴ Hızı 0 olan bir "note on" ses çıkarmaz ve "note off" mesajına eşdeğerdir.

Hususlar:

  • Sıfır hızlı "not açık" mesajlarının varlığı, "not kapalı" mesajlarının tamamen gereksiz olduğu anlamına gelir. MIDI standardı özellikle "nota kapalı" ve sıfır hız "nota açık" mesajlarının eşdeğer olduğunu ve aynı şekilde ele alınması gerektiğini belirtir. Sonuç olarak, bir cihaz notaların tetiklemesini diğerinden farklı şekilde kaldırabilir.
  • Vericilerin tetiklemeyi kaldırmak için yalnızca bir yöntem kullanması gerekirken, alıcıların her ikisini de idare edebilmesi gerekir.
  • Bir “not kapalı” mesajında ​​hız değeri pek bir anlam ifade etmese de, yine de mesajın bir parçasıdır ve gönderilmesi gerekir. Değer kullanılmaz ve atılır.

Perde numaraları, temelde bire bir piyano tuşlarına eşlenir. Ancak, 128 olası değer ve yalnızca 88 piyano tuşu olduğundan, MIDI aslında piyanoda bulunmayan 40 yarı tonu destekler. Bunlardan 19'u en yüksek nota olan C7'nin üzerinde ve diğer 21'i en düşük nota olan A-1'in altındadır. MIDI perde aralığı, 60 numaralı nota olan Orta C'ye aşağı yukarı ortalanmıştır.

Üreticilerin hepsinin oktav sayıları konusunda hemfikir olmadığını unutmayın. Analog müzisyenler tarafından kullanılan bilimsel perde gösterimi, piyanodaki en düşük C'yi Orta C C4 yapan C1 olarak tanımlar . Öte yandan programcılar, genellikle 0 ile saymaya başlarlar, bu nedenle onlara göre en düşük C, C0 ve Orta C, C3'tür . Genelde kullandığım notasyon bu, çünkü tüm MIDI araçlarım bunu kullanıyor. Ancak, hangi sistemi kullanırsanız kullanın, Orta C her zaman nota numarası 60'tır.

Ek II'de , MIDI perde numaralarına ve bu numaralardan dönüştürmek için bir çizelge sunuyorum.

3.2 Kontrol Değişikliği (0xBn)

"Kontrol değişikliği" mesajları, bir kanalın sürekli denetleyicilerini değiştirmek için kullanılır . Sürekli kontrolör, bir otomasyon hattına benzer; bir kanalın performansının farklı yönleri üzerinde sürekli kontrol sağlar.

İlk veri baytı CC numarasını (0–119) tanımlar ve ikincisi ona bir değer (0–127) atar .

Hususlar:

  • Adından da anlaşılacağı gibi, sürekli denetleyici verileri sürekli değildir. Otomasyonun yaptığı gibi değerler arasında düzgün enterpolasyon yapmak yerine, bir CC şeridinin mevcut değeri yalnızca ayrık adımlarla değişebilir. Başka bir değere yumuşak bir şekilde yükselmek için, değeri kontrollü bir oranda artırarak veya azaltarak çok sayıda "kontrol değişikliği" mesajı göndermeniz gerekir.
  • MIDI spesifikasyonu, 120 CC'nin çoğunun ne için kullanılması gerektiğini tanımlar, ancak çok az cihaz bir avuçtan fazlasını gözlemler. Ek III'te tüm CC'lerin bir tablosunu sunuyorum .
  • Son sekiz CC numarası (120–127) aslında CC'leri hiç temsil etmez. Bunun yerine, kanal modu mesajları adı verilen özel bir mesaj kategorisini temsil ederler . Kanal modu mesajları, onu alan tüm cihazı etkileyen özel komutlardır. Uygulamada, onlar hakkında çok fazla endişelenmenize gerek kalmayacak, ancak onlar hakkında daha fazla bilgiyi Ek I'de veriyorum .
  • CC numaraları 0 ve 32 , birçok cihaz tarafından yama seçimi amacıyla kullanılır. Bununla ilgili daha fazla bilgiyi Ek IV'te bulabilirsiniz .

Perdeyi yukarı veya aşağı büker. Ah.

Pitch bend biraz CC gibi davranır. Aslında, çoğu MIDI editörü Pitch Bend'e başka bir CC gibi davranır. Ancak, 128 olası değere sahip 7 bitlik bir CC değeri perde bükme efekti satmak için yeterli çözünürlük sunmaz. Kulaklarımız perde yüksekliğini çözmede harikadır ve bu nedenle yeni bir perdeye her seferinde 1/128 oranında yaklaştığımızda bile kulağa yumuşak ve organik gelmez.

Daha iyi bir çözünürlük elde etmek için "pitch bend" mesajları, tek bir büyük değeri iletmek için iki veri baytı kullanır. Temel olarak, bir mesajın yedi bitini ve diğerinin yedi bitini bir araya getirirseniz, çözünürlüğünüzü 2⁷ veya 128 kat artırarak tek bir 14 bitlik değer oluşturabilirsiniz.

Şimdi, pitch bendimiz için 128 olası değer yerine, 16.384 gibi muazzam bir değere sahibiz — yumuşak bir pitch bend efekti oluşturmak için fazlasıyla yeterli adım. Sağ yarı, ilk veri baytı (En Az Önemli Bayt veya LSB) tarafından sağlanır ve sol yarı, ikinci veri baytı (En Önemli Bayt veya MSB) tarafından sağlanır.

Hususlar:

  • Pitch bend'in gücü (maksimuma ulaşmış bir pitch bend'in yukarı veya aşağı kaç yarım tonu temsil ettiği) enstrümandan enstrümana farklılık gösterir. Genellikle yapılandırılabilir.
  • Pitch bend, 8192'de (perde değişikliğinin olmadığı yerde) "ortalanır" .
  • Pitch bend'ler, tıpkı CC'lerin yaptığı gibi, bir kanaldaki tüm çalma notalarını etkiler.
  • MSB'ler ve LSB'ler ile programlama en iyi şekilde bitsel operatörlerle yapılır. Burada bunların üzerinden geçmeyeceğim, ancak daha fazla bilgi edinmek isterseniz Ek V'te bazı kaynaklar sağladım.

Akai MPK225 gibi bazı MIDI denetleyicileri , aftertouch adı verilen bir özelliğe sahiptir . Aftertouch denetleyicileri, yalnızca her bir tuşa basma hızına duyarlı olmakla kalmaz, aynı zamanda tuşların basılı tutulduğu basınca da sürekli olarak duyarlıdır.

Aftertouch iki çeşittir: kanal aftertouch ve polyphonic aftertouch . Mono basınç olarak da bilinen kanal art dokunuşu, klavyenin tamamındaki basıncı ölçerken polifonik art dokunuş, basıncı her tuş için bağımsız olarak ölçer. Daha düşük donanım maliyeti nedeniyle, kanal art dokunuş, ikisi arasında daha yaygın olanıdır. Kanal basınç mesajları, genel basınç seviyesini temsil eden yalnızca bir veri baytı kullanır. Polifonik tuş basıncı mesajları iki tane kullanır: ilki perdeyi bildirir (standart perde sayılarını kullanarak) ve ikincisi basıncını bildirir.

Hususlar:

  • Polifonik aftertouch, her perde için bağımsız olarak ayarlanabilen tek kontroldür. Diğer tüm kontroller (nota açık veya kapalı dışında) tüm kanalı etkiler.
  • “MIDI Polifonik İfade” (MPE) adı verilen bir MIDI uzantısı, CC'lerin ve pitch bend'in polifonik olarak da uygulanmasına izin vermek için tasarlanmıştır. MPE çok yaygın değildir, ancak ROLI Seaboard gibi cihazlar tarafından popüler hale getirilmiştir . Ek V'te bunu kapsayan kaynaklara bağlantılar sağladım .

Çok fazla harici MIDI donanımı kullanmıyorsanız, muhtemelen bu mesaj türünü çok sık kullanmazsınız. Bir "program değişikliği" mesajı, bir aygıta yeni bir program (yeni bir yama veya ön ayar) yüklemesi komutunu verir. Yalnızca yamanın dizinini belirten bir veri baytı kullanır.

Bu mesaj türü, harici MIDI cihazlarıyla oluştururken çok faydalıdır. Donanımınız ön ayarları desteklediği sürece, projeniz veya oturumunuz bunları seçip yükleyebilir: başlangıçta uygun "program değişikliği" mesajlarını sıralamanız yeterlidir.

Hususlar:

  • 128'den fazla ön ayara sahip enstrümanlar genellikle yamalarını birden çok bankada depolar . Diğer kümelerde depolanan programları geri çağırmak için, CC'nin 0 ve 32'si "bank seçme" mesajlarına dönüştürülür. Ek IV'te bunun nasıl çalıştığını ele alıyorum.
  • Program değişiklik mesajlarının akıllıca planlanmasıyla, aynı anda çalmadıkları sürece tek bir cihazın 16'dan fazla farklı yamayı tek parça halinde kullanması mümkündür. Gerçek olmasına rağmen, tek bir cihazdan bu kadar çok sesi sağmanız gerekiyorsa, muhtemelen her şeyi ayrı yakalamalara ayırmalısınız.
  • Cubase ve Nuendo, MIDI izleme denetçisinde program değişiklik mesajları için yerel destek sunar. Başka kaç DAW'ın bunu desteklediğinden emin değilim.

Sistem mesajları, burada ele almayacağım ileri düzey bir konudur. Gerçekten kendilerine ait bir makaleyi hak ediyorlar. Her tür şey için kullanılırlar; dev veri aktarımları (" dökümler " olarak adlandırılır), saatleri senkronize etme, zaman kodunu iletme ve daha fazlası.

Gelecekte, sistem mesajları için bir rehber yazabilirim ama şimdilik onlar için endişelenme. Sadece var olduklarının ve genellikle MIDI kompozisyonunda kullanılmadıklarının farkında olun.

4. Onaltılık Hakkında

Devam etmeden önce, önceki bölümde kullandığım tüm 0x'lerden bahsetmeliyiz . 0x ön eki size bir sayının onaltılık olduğunu söyler.⁵ Gelişmiş MIDI araçlarınıza ve cihaz kılavuzlarınıza daldıkça, MIDI mesajlarının ikili veya onluk taban yerine neredeyse her zaman onaltılık olarak temsil edildiğini fark edeceksiniz. Bu ilk başta mantığa aykırı görünebilir - yani, eğer bir ikili sayıyı dönüştürecekseniz, neden sadece insan tarafından okunabilen on tabanına çevirmiyorsunuz?

Cevap, bunun daha pratik olduğudur. MIDI öğrenmeye başlamanın en iyi yolunun ikili olduğunu düşünsem de , aslında onunla çalışmak oldukça külfetli. Her baytı sekiz basamağa yaymak, okumayı ve yazmayı bir angarya haline getirir ve ikilikteki her şey yalnızca birler ve sıfırlardan oluştuğu için, uzun dizileri okurken yerinizi kaybetmek kolaydır.

Bir ikili sayıdaki biti çevirmek, onaltılık gösteriminin yalnızca bir basamağını etkileyebilir.

Bu nedenle, bit düzeyinde programcılar genellikle onaltılık olarak çalışır. Her baytı yalnızca iki basamağa düşürür ve 16, 2'nin bir kuvveti olduğu için, değiştirdiğiniz her bit onaltılık olarak yalnızca bir basamağı etkiler. Bu, her onaltılık basamağı kendi dört bitlik sayısı olarak düşünmenizi sağlar. Ondalık bir gösterimde bit düzeyinde çalışmak istiyorsanız, tüm baytı ikiliye dönüştürmeniz ve tekrar geri almanız gerekir.

MIDI ile onaltılık olarak çalışırken akılda tutulması gereken yalnızca birkaç şey vardır.

  • Bitlerin onaltılık biçimde gruplanma şekli nedeniyle, bir durum baytının hangi MIDI kanalını adreslediğini sağdaki onaltılı rakamdan başka bir şeye bakmadan anlayabilirsiniz.
  • Bir baytın sol hanesi 0x7veya daha küçükse, bunun bir veri baytı olduğunu bilirsiniz ve benzer şekilde, 0x8veya daha büyük bir baytın durum baytı olduğunu bilirsiniz.
  • Maksimum veri baytı değeri olan 127 0x7F onaltılıktır.

5. Uygulamalı Örnek: Beethoven'ın Beşinci Senfonisi

Bu örneği en son bıraktığımızda, ham ikiliyi ayrık mesajlara ayırmıştık. Bu şuna benziyordu:

Bunu daha kolay halletmek için, onu onaltılıya çevirelim. Durum baytlarını kırmızı ve veri baytlarını mavi bırakacağım.

Şimdi bildiklerimizi bildiğimize göre, durum baytlarının başında gelen 0x9'lar ve 0x8'lerin mesajları sırasıyla “note on” ve “note off” olarak tanımladığını biliyoruz. Baytın sağ rakamı bize MIDI Kanalı 1'i hedeflediklerini söyler.⁶

Çevrilmiş durum baytlarıyla performansın nasıl göründüğü aşağıda açıklanmıştır.

“note on” ve “note off” mesaj tiplerinde, ilk veri baytı bir ses perdesini, ikincisi ise bir hızı kodlar. Hız değeri sadece bir sayıdır. Perdeyi bulmak için bir MIDI nota tablosuna başvurmamız gerekir . Ve unutmayın, "not atın" hızları kullanılmaz.

Çeviriyi bitirelim:

Bu kadar! Bunlar, Beethoven'ın Beşinci'sinin ilk dört notasını kodlayan tercüme edilmiş MIDI talimatlarıdır. Dum dum dum duuum!

Artık bildiklerinizi bilerek, ortak MIDI mesajlarını elle oluşturabilir ve çözebilirsiniz. MIDI dönüştürücüler ve mantıksal düzenleyiciler gibi daha gelişmiş araçlar artık kullanımınıza açıktır. Ancak, her zaman öğrenecek daha çok şey vardır. Bilgiye obursanız, Ek V'te MIDI'yi daha fazla incelemek için kullanabileceğiniz bazı kaynaklar sağladım .

6. Bonus Ders: Çalışma Durumu

İşleri basit tutmak adına şimdiye kadar bahsetmediğim, MIDI'nin sunduğu kullanışlı bir kısayol var. Şu şekilde çalışır: Bir durum baytı gönderdikten sonra, öncekinden farklı olana kadar başka bir bayt göndermeniz gerekmez. Alınan son durum baytı bir nevi "açık" kalır ve izlenecek tüm veri baytlarını yorumlamak için kullanılır. Buna Çalışma Durumu denir .

Aşağıdaki bayt dizisini göz önünde bulundurun:

Baktığınız şey, uygulamalı örnekte çevirdiğimiz Beethoven'ın Beşinci performansının tamamen aynısı, ancak neredeyse tüm durum baytları eksik. Ancak Çalışıyor Durumu nedeniyle bu performans da ilki kadar geçerlidir. Durum baytını gönderdikten sonra 0x90, Çalışıyor Durumu olur ve takip eden her bayt çiftinden önce kendi " "leri varmış gibi ele alınabilir 0x90.

Bu, MIDI akışlarımızı önemli ölçüde kısaltabilen çok sayıda tekrarlanan durum baytını kesmemizi sağlar. Bilgisayarların daha yavaş ve baud hızlarının daha kısıtlayıcı olduğu zamanlarda, bu inanılmaz derecede yardımcıydı. Ancak günümüzde bilgisayarlar o kadar hızlı ki, Çalışıyor Durumunu kullanmak gerçekten fark edilebilir bir performans artışı sağlamıyor. Bununla birlikte, yine de gündeme getiriyorum, çünkü kendinizi herhangi bir MIDI programlaması yaparken bulursanız, durum baytlarının burada burada atlandığını görmeye hazırlıklı olmalısınız.

Dikkat edin, sıfır hız "nota açık" "nota kapalı" olarak sayıldığından, çalışma durumunu bozmadan notaları hem başlatabilir hem de bitirebiliriz; en azından, farklı bir kanala bir kontrol değişikliği veya mesaj göndermemiz gerekene kadar.

  1. Bu, MIDI Show Control adlı bir MIDI uzantısıyla yapılır.
  2. "Ne Görürsen Onu Alırsın".
  3. MIDI kanal numaraları 1 ile başlar, buradaki temsilleri ise 0 ile başlar. 0 değeri Kanal 1, 15 değeri Kanal 16 anlamına gelir.
  4. Hız, bir notanın ne kadar "sert" vurulduğu olarak düşünülebilir.
  5. Diğer bir yaygın notasyon, “78H” de olduğu gibi, sayıyı büyük “H” harfiyle takip etmektir.
  6. Unutmayın, mesajdaki sayı sıfır olsa da Kanal 1'e karşılık gelir çünkü sayıları 0'dan, kanalları 1'den saymaya başlıyoruz.

Ek I: Kanal Modu Mesajları

"Kanal modu" mesajları, MIDI modunu değiştirerek tüm cihazın davranışını değiştiren özel komutlardır . İyi sıralama.

Uygulamada, "kanal modu" mesajları yalnızca belirli özellikleri açıp kapatmak ve belirli komutlar göndermek için kullanılır. MIDI'nin "modlar" olarak numaralandırdığı şey, esasen Omni ve Poly geçişlerinin farklı yapılandırmalarıdır. Dürüst olmak gerekirse, "modların" bu komutlar hakkında düşünmenin çok uygun bir yolu olduğunu düşünmüyorum; ama en azından komutların ne işe yaradığını açıklayacağım.

Kanal modu mesajlarının kendi mesaj türleri yoktur. Bunun yerine, son sekiz sürekli denetleyici numarası (CC'nin 120-127'si) ne olacaktı, yeniden tasarlandı. Kanal modu mesajları aşağıdaki gibidir:

Bir cihazın kanal modu mesajlarına yanıt verebilmesi için, bunları temel kanalında alması gerekir . Bir cihazın temel kanalı, kanal modu mesajlarının geçerli olduğu tek MIDI kanalıdır. Birçok cihaz için bu kanal yapılandırılabilir. Bu şekilde, kanal modu mesajları bir papatya dizimi içindeki belirli cihazları hedefleyebilir.

Aşağıda, her kanal modu mesajının hızlı bir özeti yer almaktadır. Ek V, daha fazla çalışma için kaynakları içerir.

  • All Sound Off (“CC” 120): Enstrümanın o anda yaptığı, nota çürümesi ve yankı efektleri dahil olmak üzere tüm sesi keser.
  • Tüm Denetleyicileri Sıfırla (“CC” 121): Tüm CC'leri, anahtar denetleyicileri, pitch bend ve aftertouch efektlerini varsayılan değerlerine ayarlar. Her denetleyicinin döndürdüğü değer, denetleyiciye bağlıdır ve MIDI spesifikasyonunda tanımlanır.
  • Yerel Kontrol (“CC” 122): Bir sentezleyicideki klavyenin ton oluşturucusundan bağlantısını keser. Bu, bir sentezleyiciyi bir MIDI denetleyicisi olarak kullanırken aynı zamanda onun için sıralama yapmanızı sağlar. 0x00Yerel kontrolü kapatmak ve 0x7Ftekrar açmak için olarak ayarlayın .
  • Tüm Notlar Kapalı (“CC” 123): “panik düğmesi.” Tüm Notlar Kapalı, her kanaldaki her adım için "not kapalı" mesajları göndermeye eşdeğerdir. Sıkışmış notları çözmek için kullanışlıdır. Yerel olarak tetiklenen notlar etkilenmez.
  • Omni Modu Kapalı/Açık (“CC'ler” 124, 125): Omni modu açıkken, durum baytında hangi kanal belirtilirse belirtilsin, her kanal gelen her mesaja yanıt verecektir.
  • Mono Modu / Poly Modu (“CC'ler” 126, 127): Bir sesi veya sesleri monofonik davranışa veya polifonik davranışa zorlar. "mono mod açık" değeri olarak ayarlanırsa 0x00, temel kanal ve onun üzerindeki her kanal mono moda ayarlanacaktır. Diğer herhangi bir n değeri için, n'den n+m-1'e kadar olan kanallar mono moda ayarlanacaktır (burada m , ikinci veri baytının değeridir). Bir "çoklu mod açık" mesajı, tüm kanalları yeniden çoklu moda ayarlar.

Ek III: Standart CC Atamaları

MIDI belirtimi, buraya kopyaladığım CC'lerin standartlaştırılmış kullanımlarını tanımlar. 3, 9, 14, 15, 20–31, 85–90 ve 102–119 dışındaki tüm CC numaraları tanımlanmıştır . En yaygın olarak desteklenen CC'ler Modülasyon ( 0x01), Ayak Kumandası ( 0x04), Kanal Hacmi ( 0x07), Kaydırma ( 0x0A), İfade ( 0x0B) ve Sustain'dir ( 0x40).

Bu CC'ler hakkında daha fazla bilgi edinmek istiyorsanız, Ek V'teki kaynaklara göz atın .

Ek IV: Banka Değişiklik Mesajları

Modern sentezleyiciler, tek bir program değişiklik mesajıyla ele alınabilecek olandan çok daha fazla ön ayarı saklayabilir ve geri çağırabilir. Bunu aşmak için üreticiler genellikle programlarını bankalara ayırır . Her bankanın maksimum 128 ön ayarı ve benzersiz bir 7 bit veya 14 bit adresi vardır.

Farklı bir bankadan bir yamayı geri çağırmak için, önce adresini içeren bir "banka seçimi" mesajı göndermelisiniz. Bundan sonra, her zamanki gibi bir program değişikliği mesajı gönderin, yüklenen yama yeni bankadan gelecektir.

Fark etmiş olabileceğiniz gibi, bunlar aslında CC'nin 0 ve 32'si için “kontrol değişikliği” mesajlarıdır . 7 bitlik adresler için sadece CC 0 kullanılır. 14 bit adresler için, CC 0 bir MSB'yi ve 32 bir LSB'yi temsil eder. MSB'ler ve LSB'ler hakkında bir başlangıç ​​kitabına ihtiyacınız varsa, ana makalenin Pitch Bend bölümünde bir tane var .

Bir cihazın 7 bitlik mi yoksa 14 bitlik mi adres kullandığı keyfidir ve cihazınızla iletişim kurarken hangisini kullanacağınızı öğrenmek için el kitabınıza bakmanız gerekir.

Ek V: Ek Kaynaklar

  • MIDI Derneği : MIDI Derneği, MIDI teknolojisi hakkında veya onunla ilgili birincil bilgi deposudur. Kaydolmak ücretsizdir ve bir kez yaptığınızda Eksiksiz MIDI 1.0 Ayrıntılı Spesifikasyonunu buradan indirebilirsiniz .
  • Bitwise Operation (Wikipedia) : Biliyorum, biliyorum, Wikipedia iyi bir birincil kaynak değil, ama bu makaleyi dil açısından tarafsız olduğu ve reklam içermediği için seviyorum. MSB'ler ve LSB'lerle çalışırken yararlı olan aritmetik bit kaydırmaları ve bitsel OR üzerinde çalışın.
  • MPE nedir? : Seaboard ürünleri gibi çok boyutlu denetleyicilerde kullanılan MIDI Polyphonic Expression ile ilgili ROLI'nin destek veritabanındaki bir makale. MPE, Ocak 2018'de MIDI Üreticileri Derneği tarafından resmi olarak kabul edildi ve teknik özelliklerin indirme bağlantısı burada mevcuttur .
  • MIDI Modları (Electronic Music Interactive v2, University of Oregon): Bu sayfa, dört standart MIDI moduna iyi ve özlü bir genel bakış sunar. Elektronik müzik üzerine daha uzun bir çevrimiçi kursun parçası.
  • MIDI CC Listesi (Nick Fever) : Daha ayrıntılı açıklamalar içeren standart CC'lerin listesi. Nick'in listesini inceledikten sonra hala daha fazla bilgiye ihtiyacınız varsa, buradan indirebileceğiniz Eksiksiz MIDI 1.0 Ayrıntılı Spesifikasyonuna bakın .
  • MIDI Sistemi Ortak Mesajları , MIDI Sistemi Gerçek Zamanlı Mesajları ve MIDI Sistemine Özel Mesajı (RecordingBlogs Wiki): Her tür sistem mesajı için mükemmel tanıtımlar.
  • MIDI Kayıtlı Parametre Numarası (RecordingBlogs Wiki): CC'lerin bir uzantısı olarak düşünülebilecek Kayıtlı Parametre Numaralarına genel bakış. RPN'leri anladığınızda, NRPN'lere (Kayıtlı Olmayan Parametre Numaraları) da erişebileceksiniz.