MIDI是二進制格式的文件。
這種文件的基本結構壹般是“文件頭+數據描述”,文件頭壹般包括文件的類型;而MIDI的數據是由若幹個格式相同的子數據構成的,這些子數據在多音軌的格式中記錄了壹個軌道的所有信息。
MIDI僅僅是壹個通信標準,它是由電子樂器制造商們建立起來的,用以確定電腦音樂程序、合成器和其他電子音響的設備互相交換信息與控制信號的方法,用於連接各種MIDI設備所用的電纜為5芯電纜,通常人們也把它稱為MIDI電纜。MIDI系統實際就是壹個作曲、配器、電子模擬的演奏系統。
從壹個MIDI設備傳送到另壹個MIDI設備上去的數據就是MIDI信息。MIDI數據不是數字的音頻波形,而是音樂代碼或稱電子樂譜。MIDI是壹種電子樂器之間以及電子樂器與電腦之間的統壹交流協議。很多流行的遊戲、娛樂軟件中都有不少以MID、RMI為擴展名的MIDI格式音樂文件。
MIDI文件構成
1、MIDI的數據是由若幹個格式相同的子數據構成的,這些子數據在多音軌的格式中記錄了壹個軌道的所有信息。多加壹個音軌,就簡單地把數據追加在前壹音軌的後面就可以了,不過不要忘記更改文件頭中的nn nn(軌道數)。
2、先看全局音軌。全局音軌包括歌曲的附加信息(比如標題和版權)、歌曲速度和系統碼(Sysx)等內容。
3、不管是全局音軌還是含有音符的音軌,都以“4D54726B”開頭,它其實是ASCII字符“MTrk”,其後跟著壹個4個字節的整數,它標誌了該軌道的字節數,這不包括前面的4個字節和本身的4個字節。這壹點,我們可以在後面的例子中去理解。
4、接著就是記錄數據的地方了,每壹個數據有著相同的結構:時間差+事件。所謂時間差,指的是前壹個事件到該事件的時間數,它的單位是tick(MIDI的最小時間單位)。它的構成比較特殊,這裏要用二進制來說明。