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