之前在使用rtMIDI之類MIDI library開發虛擬樂器的時候,有些許不解之處,最近終於有空來仔細看MIDI 1.0的Spec了。
MIDI Message
基礎單位
MIDI訊號是由byte為單位構成的,這個訊號單位只分成兩種:
- 狀態位元組(Status byte):開頭(MSB)必定為1
- 資料位元組(Data byte):開頭(MSB)必定為0
例1:10000011 00010011
(單位為bit)
這個例子的前8個bits為Status byte,後8個bits為Data byte。
MIDI通道
在Status byte中,後4個bits用來表示這個MIDI訊號所使用的通道,0000
表示通道1(CH#1),0001
表示通道2(CH#2),以此類推,1111
表示通道16(CH#16)。
以例1來說,例1的Status byte中的後4bits為0011
,所以例1使用了通道4(CH#4)。
MIDI模式
若要解釋MIDI模式,則必須先了解Poly、Mono、Omni這幾個詞彙的意思。
- Poly(Polyphony):複音,有一些樂器天生是複音性質,能輕易的彈奏單音或和弦,例如:吉他、鋼琴
- Mono(Monophony):單音,有一些樂器在每一瞬間只能演奏一個音符,例如:單簧管
- Omni:源自於拉丁文,有全部、萬象、全能之意,此詞常見於軟體音源的控制視窗中,當Omni模式開啟(omni on),代表這個軟體音源/音源機,會對所有MIDI通道有所響應,換句話說,不論MIDI訊號中Status byte的後4bits為多少,當這個MIDI訊號被送至軟體音源/音源機,這個軟體音源/音源機都會發出相對應的聲音。
瞭解了上面三個詞彙後,來介紹四種MIDI模式:
- Mode1 – moni on/poly
- Mode2 – moni on/mono
- Mode3 – moni off/poly
- Mode4 – moni off/mono
使用表格來記憶更快速:
Poly on | Mono on | |
---|---|---|
Omni on | Mode 1 | Mode 3 |
Omni off | Mode 2 | Mode 4 |
[To be continued…]
參考資料
- The MIDI Manual – A Practical Guide to MIDI in the Project Studio, 3rd Edition
- 電子音樂互動教材第二版本