Kullanıcı Kılavuzu
MIDI Söz Dizimi
OnSong, MIDI komutlarını ifade etmek için metin tabanlı bir sözdizimi kullanır. Metadata Editörü'nde MIDI Olayları'nı kullanabilirsiniz, ancak MIDI komutlarını metinde de ifade edebilirsiniz.
Sınırlandırılmış Değerler
Her şeyden önce, birden fazla MIDI komutu çeşitli karakterlerle ayrılabilir; bunlar arasında: sekme karakteri, virgül, noktalı virgül, dikey çizgi veya yeni satır bulunur. Virgül en yaygın sınırlandırıcıdır. Örneğin:
1.2:0@0, PC1.2:3@0, N67@1, START, SS8
Kanal
Her giriş bir @ sembolü içerebilir. Sembolün sonrasındaki sayısal değer, komutun gönderileceği kanaldır. MIDI'de kanallar sıfırdan başladığı için, birinci kanal sıfır (0), ikinci kanal bir (1) olur vb.
Eğer @ sembolü kullanılmazsa, komut tüm kanallara gönderilir veya alınır.
Ön Ekler
Listedeki her giriş bir ön ek içerir. Bu ön ek, gönderilecek MIDI komutunun türünü belirler. Bunlar arasında:
- PC veya Ön Ek Yok bir program değişikliği olayıdır.
- N bir nota olayıdır
- CC bir kontrol değişikliği olayıdır.
- NRPN kaydedilmemiş bir parametre numarasıdır.
- SS bir şarkı seçme olayıdır.
- START bir başlatma komutudur.
- STOP bir durdurma komutudur.
- CONTINUE bir devam komutudur.
- WAIT daha fazla olay gönderilmeden önce belirli bir süre bekler.
- F0 bir SysEx mesajından öncedir.
- @ bir MIDI genel etiketinden öncedir.
Değerler
Komutun değeri, @ sembolünün hemen önünde veya eğer @ verilmemişse girdinin sonunda görülür. Bu, ön eke dayalı olarak program değişikliğinin, kontrol değişikliğinin, notanın veya şarkı seçiminin değeridir. SysEx girdileri söz konusu olduğunda, SysEx'in onaltılı değeri, tüm SysEx komutlarına başlık olarak kullanılan F0 ön ekinin hemen sonrasında sağlanır.
Alt Değerler
Bazı durumlarda, ek bilgiler MIDI komutunda alt değerler olarak aktarılır. Örneğin, MSB ve LSB, ayrıca kontrol değerlerinin hızı bu şekilde gönderilebilir. Bu, değer bölümüne iki nokta eklenerek ifade edilir. Alt değer, gönderilen MIDI komutunun türüne bağlı olarak farklı bağlama sahiptir:
- Program Değişikliği program değişikliğinin MSB/LSB'si ile hizalanan alt değerlere sahiptir. Bu değerler solda MSB ve sağda LSB ile bir nokta ile ayrılır.
- Kontrol Değişikliği bunu kullanarak ayarlanan kontrol değerine sahiptir. Sayı 0 ile 127 arasında olabilir. Atlanırsa, 127 değeri çıkarılır. Değerler arasında adım atmak için birden fazla değeri tire ile ayırabilirsiniz. Örneğin, 127-0 değeri açık ve kapalı durumlar arasında 127'yi kilitleyecektir.
- Nota Olayı notanın çalınması gereken hızla ilgili bir alt değere sahiptir. Bu, 0 ile 127 arasında sayısal bir değere ayarlanabilir. Tireler ile birbirinden ayırarak birden fazla nota hızında adım atabilirsiniz.
Örnekler
Basit bir program değişikliğiyle başlayalım. Bu senaryoda, kanal 1'de 4'lük bir MSB ve 2'lik bir LSB de gönderen program değişikliği 8'ini kullanıyoruz. Örnek, bu değişikliğin en karmaşık varyasyonundan başlar ve banka seçimini ve kanalı kaldırarak daha geniş hale gelir:
PC3.1:7@0, 3.1:7@0, 3:7@0, 3:7, 7@0, 7
Kontrol değişiklikleri benzer şekildedir, ancak sözdiziminin sol tarafı kontrol değişikliği numarası ve sağ tarafı isteğe bağlı bir değerdir. Değer sağlanmamışsa, 127 gönderilir. Kontrol Değişikliği 106'yı kanal 3'te 64 değeri ile göndereceğiz.
CC105:63@2, CC105:63. CC105@2, CC105
Şimdi nota olaylarına bakalım. OnSong MIDI C0'ı MIDI nota skalasında 0 olarak saymaya başladığı için, C4'ü kanal 8'de %75 hızda çalmak istiyorsak aşağıdakileri gireriz:
N60:95@7, N60@7, N60:95, N60
Yine, MIDI sözdiziminden değerler kaldırıldıkça, MIDI ifadesinin daha geniş ve daha az spesifik hale geldiğini hatırlamak önemlidir. Örneğin, nota olayının son versiyonu, C4'ü tüm kanallarda %100 hızda gönderecektir.
Ayrıca WAIT komutu ekleyerek MIDI'yi geciktirebiliriz. Aşağıdakiler, MIDI'yi 2 saniye kadar ve 500 ms (yarım saniye) kadar geciktirecektir. Saniyeler olarak 1-10 saniye veya milisaniye cinsinden belirtebilirsiniz.
WAIT2, WAIT500
Son olarak, önceden yapılandırılmış MIDI olay listelerinin başvurulabileceği MIDI globallerine başvurabiliriz. "on" etiketi (tırnak işareti olmadan) ile bir MIDI globaliniz varsa, o globalı aşağıdakilerle başvurabilirsiniz:
@on