之前在使用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模式:

  1. Mode1 – moni on/poly
  2. Mode2 – moni on/mono
  3. Mode3 – moni off/poly
  4. Mode4 – moni off/mono

使用表格來記憶更快速:

Poly on Mono on
Omni on Mode 1 Mode 3
Omni off Mode 2 Mode 4

圖片來源:Philip Rees

[To be continued…]

參考資料

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。