MIDI 訊息定義

通常,MIDI 協議被分解為訊息。一般有 4 類訊息:

  • 頻道語音
  • 頻道模式
  • 系統常見
  • 系統實時訊息

訊息以高於 0x80 的位元組值開頭。低於 0x7F 的任何值都被視為資料。實際上意味著 127 是可以編碼為單個 MIDI 資料位元組的最大值。要編碼較大的值,需要兩個或更多 MIDI 資料位元組。

需要指出的是,必須在不中斷的情況下始終傳送訊息… EXCEPT …系統實時訊息,它是一個單位元組,可以在任何訊息的中間注入。

頻道語音留言

狀態 D7..D0 資料位元組 描述
1000nnnn 0kkkkkkk 0vvvvvvv 注意關閉事件。當釋放(結束)註釋時傳送此訊息。 (kkkkkkk)是關鍵(註釋)號碼。 (vvvvvvv)是速度。
1001nnnn 0kkkkkkk 0vvvvvvv 注意事件。按下音符(開始)時會傳送此資訊。 (kkkkkkk)是關鍵(註釋)號碼。 (vvvvvvv)是速度。
1010nnnn 0kkkkkkk 0vvvvvvv 和絃鍵壓力(觸後)。此訊息通常是在降至最低點後按下鍵傳送的。 (kkkkkkk)是關鍵(註釋)號碼。 (vvvvvvv)是壓力值。
1011nnnn 0ccccccc 0vvvvvvv 控制變化。當控制器值更改時,將傳送此訊息。控制器包括諸如踏板和槓桿的裝置。控制器號 120-127 保留為通道模式訊息(下面)。 (ccccccc)是控制器編號(0-119)。 (vvvvvvv)是控制器值(0-127)。
1100nnnn 0ppppppp 計劃變更。當修補程式編號更改時傳送此訊息。 (ppppppp)是新的程式編號。
1101nnnn 0vvvvvvv 通道壓力(觸控後)。此訊息通常是在降至最低點後按下鍵傳送的。此訊息與複音後觸控不同。使用此訊息傳送單個最大壓力值(所有當前按下的鍵)。 (vvvvvvv)是壓力值。
1110nnnn 0lllllll 0mmmmmmm 彎曲變化。傳送此訊息表示彎音機(通常為車輪或控制桿)發生變化。通過十四位值測量彎音器。中心(沒有音高變化)是 2000H。靈敏度是接收器的函式,但可以使用 RPN 0 設定。(lllllll)是最不重要的 7 位。 (mmmmmmm)是最重要的 7 位。

頻道模式訊息

狀態 D7..D0 資料位元組 描述
1011nnnn 0ccccccc 0vvvvvvv 頻道模式訊息。這與 Control Change(上面)相同,但通過使用保留的控制器號 120-127 實現模式控制和特殊訊息。命令是:
所有聲音關閉。當收到所有聲音關閉時,所有振盪器將關閉,並且它們的音量包絡將盡快設定為零。c = 120,v = 0:全部聲音關閉
重置所有控制器。收到重置所有控制器後,所有控制器值都將重置為其預設值。 (有關預設值,請參閱具體的建議措施)。
c = 121,v = x:除非在特定的推薦實踐中另有規定,否則值必須為零。
本地控制。當本地控制關閉時,給定通道上的所有裝置將僅響應通過 MIDI 接收的資料。播放的資料等將被忽略。Local Control On 恢復普通控制器的功能。
c = 122,v = 0:本地控制關閉
c = 122,v = 127:本地控制開啟
所有筆記關閉。收到 All Notes Off 後,所有振盪器都將關閉。
c = 123,v = 0:所有音符關閉(有關實際模式命令的說明,請參閱文字。)
c = 124,v = 0:Omni Mode Off
c = 125,v = 0:Omni Mode On
c = 126,v = M:單聲道模式開(Poly Off),其中 M 是通道數(Omni Off)或 0(Omni On)
c = 127,v = 0:Poly 模式開啟(單聲道關閉)(注意:這四條資訊也會導致所有音符關閉)

系統常見訊息

狀態 D7..D0 資料位元組 描述
11110000 0iiiiiii [0iiiiiii 0iiiiiii] 0ddddddd — — 0ddddddd 11110111 系統獨家。此訊息型別允許製造商建立自己的訊息(例如批量轉儲,補丁引數和其他非規範資料),並提供用於建立其他 MIDI 規範訊息的機制。製造商的 ID 程式碼(由 MMA 或 AMEI 分配)為 1 位元組(0iiiiiii)或 3 位元組(0iiiiiii 0iiiiiii 0iiiiiii)。1 個位元組 ID 中的兩個保留用於稱為通用專用訊息的擴充套件,這些擴充套件不是特定於製造商的。如果裝置將 ID 程式碼識別為自己的(或支援的通用訊息),它將偵聽訊息的其餘部分(0ddddddd)。否則,將忽略該訊息。 (注意:只有實時訊息可以與 System Exclusive 交錯。)
11110001 0nnndddd MIDI 時間碼四分之一幀。nnn =訊息型別 dddd =值
11110010 0lllllll 0mmmmmmm 歌曲位置指標。這是一個內部 14 位暫存器,可以儲存自歌曲開始以來的 MIDI 節拍數(1 拍= 6 個 MIDI 時鐘)。l 是 LSB,MSB。
11110011 0sssssss 歌曲選擇。歌曲選擇指定要播放的序列或歌曲。
11110100 未定義。 (保留)
11110101 未定義。 (保留)
11110110 調整請求。收到調諧請求後,所有模擬合成器都應調諧其振盪器。
11110111 獨家結束。用於終止 System Exclusive 轉儲(參見上文)。

系統實時訊息

狀態 D7..D0 資料位元組 描述
11111000 時鐘。需要同步時,每季度傳送 24 次註釋(參見文字)。
11111001 未定義。 (保留)
11111010 開始。開始播放當前序列。 (此訊息將跟隨定時時鐘)。
11111011 繼續。在序列停止的位置繼續。
11111100 停止。停止當前序列。
11111101 未定義。 (保留)
11111110 主動感應。此訊息旨在重複傳送,以告知接收方連線是否存在。使用此訊息是可選的。當最初接收時,接收器將期望每 300ms(最大)接收另一個 Active Sensing 訊息,如果沒有,則它將假定連線已經終止。在終止時,接收器將關閉所有聲音並返回正常(非活動感測)操作。
11111111 重啟。將系統中的所有接收器重置為開機狀態。這應該謹慎使用,最好在人工控制下使用。特別是,它不應該在上電時傳送。