MIDI檔案格式 - 中文百科知識

文章推薦指數: 80 %
投票人數:10人

MIDI檔案屬於二進制檔案,這種檔案一般都有如下基本結構: 檔案頭+數據描述檔案頭一般包括檔案的類型,因為Midi檔案僅以.mid為擴展名的就有0類和1類兩種,而大家熟悉的 ... MIDI檔案格式 MIDI檔案屬於二進制檔案,這種檔案一般都有如下基本結構:檔案頭+數據描述檔案頭一般包括檔案的類型,因為Midi檔案僅以.mid為擴展名的就有0類和1類兩種,而大家熟悉的點陣圖檔案的格式就更多了,所以才會出現檔案頭這種東西。

MIDI檔案格式分析MIDI檔案屬於二進制檔案,這種檔案一般都有如下基本結構:文件頭+數據描述檔案頭一般包括檔案的類型,因為Midi檔案僅以.mid為擴展名的就有0類和1類兩種,而大家熟悉的點陣圖檔案的格式就更多了,所以才會出現檔案頭這種東西。

以下是MIDI檔案塊結構類型長度數據4個位元組4個位元組4個位元組類型指的是"MThd"或"MTrk",長度指的是除去類型和長度兩部分外,其他數據占的位元組數。

而數據描述部份是主體,我們現在來一起分析它的結構:在每個Midi檔案的開頭都有如下內容,它們的十六進制代碼為:“4d54686400000006ffffnnnndddd”。

前四個是ASCII字元“MThd”是用來鑑別是否Midi檔案,而隨後的四個位元組是指明檔案頭描述部分的位元組數,它總是6,所以一定是“00000006”,以下是剩餘部分的含義:ffff指定Midi的格式0000單音軌0001多音軌,且同步。

這是最常見的0002多音軌,但不同步nnnn指定軌道數實際音軌數加上一個全局的音軌dddd指定基本時間格式類型類型1:定義一個四分音符的tick數,tick是MIDI中的最小時間單位類型2:定義每秒中SMTPE幀的數量及每個SMTPE幀的tick以上就是MIDI檔案頭了,後面的所有內容都是真正做事的,我們先來看看它的構成。

MIDI的數據是由若干個格式相同的子數據構成的,這些子數據在多音軌的格式中記錄了一個軌道的所有信息。

多加一個音軌,就簡單地把數據追加在前一音軌的後面就可以了,不過不要忘記更改檔案頭中的nnnn(軌道數)。

先看全局音軌。

全局音軌包括歌曲的附加信息(比如標題和著作權)、歌曲速度和系統碼(Sysx)等內容。

不管是全局音軌還是含有音符的音軌,都以“4D54726B”開頭,它其實是ASCII字元“MTrk”,其後跟著一個4個位元組的整數,它標誌了該軌道的位元組數,這不包括前面的4個位元組和本身的4個位元組。

這一點,我們可以在後面的例子中去理解。

接著就是記錄數據的地方了,每一個數據有著相同的結構:時間差+事件。

所謂時間差,指的是前一個事件到該事件的時間數,它的單位是tick(MIDI的最小時間單位)。

它的構成比較特殊,這裡要用二進制來說明。

一個位元組有8位,如果僅使用7位,它可以表示0~127這128個數,而剩下的一位,則用來作為標誌。

如果要表示的數在以上範圍,則這個標誌為0,這時,一個7位的位元組可以表示0~127tick。

如果要表示的數超出了這個範圍(比如240),則把標誌設定成1,然後記錄下高7位,剩下的留給下一個位元組,在該例中240可以分解成128*1+112,這裡的1就是第一個位元組要記錄的,加上標誌位,應該為10000001,即十六進制的81;而112是下一個位元組記錄的,它的十六進制為70:所以要表示240這個時間,要寫成8170。

同理,如果要表示65535tick,則可以先計算出65535=1282*3+1281*127+1280*127,然後得出結果:83FF7F。

由此,我們反過來也可以知道如何確定時間差:只要標誌位為0,則表示結束讀取時間差。

比如82C003表示1282*2+1281*64+1280*3=40963,如果基本時間為120,則有341:043個四分音符。

以這種方式記錄整數的位元組稱為動態位元組,它根據記錄的整數改變自身的長度,這在後面還要用到,所以必須熟練計算。

看完了這么麻煩的東西,我們再來看個更麻煩的東西:事件。

在這些標準的解釋後面,我們會通過一些例子來進一步掌握這些內容。

事件大體上可以分為音符、控制器和系統信息這幾個種類。

對於這些事件,都有統一的表達結構:種類+參數。

對於一個音符,由於它的有效範圍是0~127,所以直接用00~7F作為“種類”,可以認為是個音符,比如3C表示中央C。

而一個音符的最重要的參數是力度(也叫速度:velocity)。

比如,3C64表示一個力度為十進制100的中央C音符。

因為一個位元組有8位,所以剩餘的一位如果置1,再聯合其他的7位,則可以表示各種信息。

我們暫且無視一個音軌到底是全局的還是用於記錄音符的。

它們歸根結底都是用來記錄各種事件的,只不過有些應出現在全局音軌比較合乎邏輯而已。

既然這樣,我們就可以從下面的表來看事件:下表中,x表示音軌0~F,比如81表示鬆開第二軌的音符。

種類位元組含義參數(十六進制)8x鬆開音符音符(00~7F):鬆開的音符力度:00~7F9x按下音符音符(00~7F):按下的音符力度:00~7FAx觸後音符音符:00~7F力度:00~7FBx控制器控制器號碼:00~7F控制器參數:00~7FCx改變樂器樂器號碼:00~7FDx觸後通道值:00~7FEx滑音音高(Pitch)低位:Pitchmod128音高高位:Pitchdiv128F0系統碼系統碼位元組數:動態位元組系統碼:不含開頭的F0,但包括結尾的F7FF其他格式程式種類:00~FF數據占用的位元組數:動態位元組數據:個數由上一參數確定00~7F上次激活格式的參數(8x、9x、Ax、Bx、Cx、Dx、Ex)下表詳細地列出了FF的詳細情況,對於位元組數由數據決定的情況,表中以“--”表示。

種類位元組含義位元組數數據00設定軌道音序02音序號0000~FFFF01歌詞備註音軌文本--文本信息文本信息02歌曲著作權--版權資訊03歌曲標題音軌名稱--用於全局音軌音軌名04樂器名稱--音軌文本(同01/2)05歌詞--歌詞06標記--用文本標記(Marker)07開始點--用文本記錄開始點(同01/2)2F音軌結束標誌00無51速度033位元組整數,1個四分音符的微秒數58節拍04略59調號02大小調:0(大調),1(小調)升降號數:-7~-1(降號),0(C),1~7(升號)7F音序特定信息--音序特定信息相關詞條 檔案格式 檔案格式(或檔案類型)是指電腦為了存儲信息而使用的對信息的特殊編碼方式,是用於識別內部儲存的資料。

比如有的儲存圖片,有的儲存程式,有的儲存文字信息。

每一... 作用   類型   規範   擴展名   特徵簽名 MIDI MIDI(MusicalInstrumentDigitalInterface)樂器數字接口,是20世紀80年代初為解決電聲樂器之間的通信問題... 產生背景   發展歷程   技術原理   組成結構   主要功能 檔案類型 在Windows環境中,檔案的操作或結構特性的指定。

與檔案類型關聯的是它的圖示以及對應該檔案類型的程式。

在Macintosh環境中,標識Macintos... 簡介   檔案類型大全 wave[檔案格式] WAVE是錄音時用的標準的WINDOWS檔案格式,檔案的擴展名為“WAV”,數據本身的格式為PCM或壓縮型。

WAVE檔案格式是一種由微軟和IBM聯合開發... 檔案格式   格式剖析   優缺點   格式支持   格式轉換 MIDI基本原理 MIDI基本原理是MusicInstrumentDigitalInterface的縮寫,意思是:音樂設備的數位化界面(或連線)。

簡介   技術要求 檔案擴展名 檔案擴展名是作業系統用來標誌檔案格式的一種機制。

檔案擴展名包括   檔案擴展名大小寫的區別   檔案擴展名的漏洞   A對象代碼庫檔案 常用檔案擴展名 檔案擴展名(FilenameExtension,或作延伸檔案名稱、後綴名)是早期作業系統(如VMS/CP/M/DOS等)用來標誌檔案格式的一種機制。

以D...  含義   說明   相關連結 檔案後綴名大全 Citrix檔案IDBIDX 常用多媒體檔案格式與壓縮標準解析 jp2圖像檔案格式mp3音頻檔案格式mp4視頻檔案格式 基本信息   內容簡介   目錄 相關搜尋GIF檔案格式hex檔案格式檔案格式兼容包qxp檔案格式檔案格式轉換器wmf[檔案格式名]msi檔案格式PDS檔案格式檔案格式查看器DEB檔案格式熱門詞條2015央視春晚4月1日Nexus4Pixlr丁香園你不在南轅北轍右腦開發司馬庫斯大榮貨運婚禮司儀干戈我的美女老闆日系內衣杜蕾減肥瘦身煙囪瘋狂賣客耽美小說臺北馥敦飯店南京館過敏性結膜炎雨傘香蕉黑芝麻糊cardjquerylumix叢林冒險尋找大腳怪快速接頭搜尋引擎優化正午陽光水楊酸洛可可澄清湖第四核能發電廠置物架臺北雙子星大樓臺南奇美博物館謳歌cdx賴佩霞鄭經魔人普烏黃朝貴JYJ一步一腳印偷偷摸摸兄弟姊妹泳衣專賣店窩窩紅葉荊軻MIDI檔案格式@百科知識中文網



請為這篇文章評分?