-
StackOverflow 文件
-
arduino 教程
-
MIDI 通訊
-
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 |
|
重啟。將系統中的所有接收器重置為開機狀態。這應該謹慎使用,最好在人工控制下使用。特別是,它不應該在上電時傳送。 |