MIDI演出控制協議

原文:https://blog.csdn.net/weixin_43572492/article/details/84966690
  音樂數字接口(Musical Instrument Digital Interface,簡稱MIDI)是電腦CPU 8位處理時期的產物,一系列的演奏信息通過8bits的數值來區別及(單向)傳輸。一個字節(=8 bits)是0到255之間的一個數字(十進制)。通常,MIDI信息序列由兩部分組成:命令字節和數據字節。某些MIDI信息不含數據字節。
  表1 MIDI字節的組成
      命令字節數值範圍    數據字節數值範圍
十進制D   128~255         0~127
二進制B  1000 0000~1111 1111   0000 0000~0111 1111
十六進制H   0x80~0xFF         0x00~0x7F

用二進制或十六進制形式查看MIDI字節纔是有用的。但是,上表還是列出了十進制範圍內的範圍表示。使用二進制能夠快速分辨命令字節和數據字節——它們的最高位一定不同——命令字節的bit7≡1,而數據字節的bit7≡0。
  命令字節是MIDI 消息序列的第一個字節,接着是固定數量的MIDI數據字節。數據字節用於傳送諸如音符數、敲擊速度、鋼琴踏板位置、音量、音高和樂器號等信息。
  例如,要打開中央C調的MIDI消息序列是:
0x80 0x3C 0x64(128D 60D 100D)
  顯然,Byte1=0x80是一個命令字節(它的值爲128D),表示打開一個音符。這種命令字節需要緊跟兩個數據字節:前者表示要打開哪個音符;後者表示這個音符的速度(如果是打擊樂,可以描述爲該音符的擊打力度)。Byte2=0x3C,表示音高C(C4)。Byte3=0x64,表示擊打力度=100。

MIDI 命令字節

命令字節可以進一步拆分爲命令(高4bits)和通道號(低4bits)。這意味命令有8種,通道有16種。比如上面給出的音符開命令Byte1=0x80。把這個字節拆分,即得H4b=1000B和L4b=0000B。H4b是音符開命令,L4b表示播放該音符時的MIDI通道。L4b爲0000B,表示第一個MIDI信道。
  通常,用十六進制查看MIDI命令字節最爲方便。還以Byte1=0x80爲例。
  表2 命令字節的分解
    高4bits 低4bits
二進制B  1000   0000
十六進制H  0x8   0x0

  要使音源按你的意圖發出不同聲部的聲音(或同時發出),就必須使用MIDI的通道功能。即:將不同的聲部交給不同的通道去處理和演奏。可以像理解電視頻道一樣去理解MIDI通道的概念。
  表3 命令字節簡表
命令代碼 說明              數據字節1        數據字節2
8+通道4b 關閉音符            對應的音符0-127    關閉速度
9+通道4b 開啓音符            對應的音符0-127    打開速度
A+通道4b 觸後壓力            對應的音符0-127    觸後壓力值
B+通道4b 控制器              控制器的編號      控制的數值
C+通道4b 音色切換            音色號0-127      ——
D+通道4b 通道壓力            該通道全部鍵盤的觸後壓力| ——
E+通道4b 彎音輪              彎音輪低位數據    |彎音輪高位數據
F+通道4b 系統普通信息、實時信息、及高級信息代碼  0或無窮多數據字節

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章