简体中文 繁體中文
上一頁下一頁

37. MIDI數據

前面在「數位樂器介面」中提到,MIDI訊息是由數位數據組成。這裡的數據並不代表數據聲音本身,正如在「數位聲音代表」中談到的。而是一組包含著音樂演出方式的訊息,這些數據根據一部份數據組傳輸到另一部份數據組當中來實現音樂的表達。

早期的MIDI訊息描述例如「輕柔的彈奏中央C」。這類型的MIDI訊息很常見,並且為學習MIDI訊息的編碼提供很好的基礎。

之前提到的訊息「奏輕柔的演奏中央C」是通過一系列的字母組合序列實現的。MIDI訊息的工作方式基本上是相同,但有兩個重要的區別。首先,電腦和含有微處理器的MIDI樂器只懂得數據,並不懂得拼寫。第二MIDI訊息不用字母,也不用0,1,2,3,4,5,6,7,8和9,而是只用兩個數字:0和1。

但如原始訊息「奏輕柔的演奏中央C」這裡的字母以字群的形式組成有意義的意群,而在二進位系統中數字0和1也用一定的方法及合組成了對於MIDI或者電腦微處理器有意義的MIDI訊息。例如,數字序列例如數字系列10010000 00111100。00011000在MIDI語句中意思為「奏輕柔的演奏中央C」。此處請注意0和1的組合與語句的組合非常相似。

每一個0和1都代表一個二進位數字,也就是比特。這些數字每八個組成一個字節(與作者的貓名同名!)。每個字節可以表示0到255的數字。 MIDI協議對每個特定數字給以特定用途。

字節分為兩種類型。在128到255之間的字節稱做狀態字節。狀態字節描述的是完成了什麼以及在哪個頻道完成。狀態字節通常是MIDI訊息中的第一個字節,由於總是以「1」為開頭,所以方便辨認。

在0到127之間的字節稱為數據字節。數據字節通常一對一對出現,通常描述的是需要做的附加訊息。數據字節在狀態字節後面,總是以「0」開頭,因此也非常容易辨認。

為確保能瞬間傳輸這些比特和字節,MIDI以每秒為31,250比特的速度傳輸。這種同一時間同一個數字通過傳輸的方式稱做串行。串行傳輸基本上可以傳送所有MIDI訊息。

狀態字節和數據字節的架構從一個字節到上千字節的長度。大多數 MIDI信息,如常見的演奏指令,通常由一個狀態字節緊接著一個或兩個數據字節構成。

例如,一個單一的開啟音符訊息,就由一個狀態字節緊跟著兩個數據字節組成。如一個MIDI指令可能描述是MIDI頻道1(狀態字節)以最大力度(數據字節 2)演奏中央C(數據字節 1)。

此處需要解釋的是數據字節定義演奏的音符,演奏力度,MIDI系統中包括128個MIDI音符,甚至超過鋼琴鍵盤,還有127種不同的力度(0是一種特殊情況)。

MIDI指令中任何變化都會產生不同結果。對於上面的例子,你可以將指令改變成為在MIDI第二頻道演奏(狀態字節),音符改為升C(數據字節1),並且應該是小一點的力度(數據字節2)。

使用這種技術讓音符的指令很容易實現,並且容易控制音符起後的力度(稱為後觸發),彎音以及其他上百種指令稱作控制變化指令,這些指令用來塑造音樂。