BitMusic是一款可以播放Fc游戲音樂和Midi格式音樂的平臺,支持MIDI文件的屬性編寫,其實小編也不太了解,有興趣的可以下載研究下。
使用說明
BitMusic的Musiccode格式是我自己設計的,有四個屬性,其語法格式如下:
{波形0~3,響度0~1000,頻率0.0~200000.0,延遲時間毫秒}
某一屬性不改變可簡寫成-1,如:
{1,1,1,1}{1,1,2,2}可簡寫成{1,1,1,1}{-1,-1,2,2}
如果僅僅延遲可簡寫成{延遲時間毫秒},如:
{0,0,0,50}可簡寫成{50}
編寫B(tài)itMusic的靈感是來自Fc游戲音樂和Midi格式的音樂。BitMusic能用來干什么?目前我也不知道(滑稽),或許只是拿它玩玩吧。
MIDI文件屬于二進制文件,這種文件一般都有如下基本結構:文件頭+數(shù)據(jù)描述
文件頭一般包括文件的類型,因為Midi文件僅以.mid為擴展名的就有0類和1類兩種,而大家熟悉的位圖文件的格式就更多了,所以才會出現(xiàn)文件頭這種東西。
而數(shù)據(jù)描述部份是主體,我們現(xiàn)在來一起分析它的結構:
在每個Midi文件的開頭都有如下內容,它們的十六進制代碼為:“4d54686400000006ffffnnnndddd”。
前四個是ASCII字符“MThd”是用來鑒別是否Midi文件,而隨后的四個字節(jié)是指明文件頭描述部分的字節(jié)數(shù),它總是6,所以一定是“00000006”,以下是剩余部分的含義:
以上就是 MIDI 文件頭了,后面的所有內容都是真正做事的,我們先來看看它的構成。
MIDI 的數(shù)據(jù)是由若干個格式相同的子數(shù)據(jù)構成的,這些子數(shù)據(jù)在多音軌的格式中記錄了一個軌道的所有信 息。多加一個音軌,就簡單地把數(shù)據(jù)追加在前一音軌的后面就可以了,不過不要忘記更改文件頭中的 nn nn(軌道數(shù))。
先看全局音軌。全局音軌包括歌曲的附加信息(比如標題和版權)、歌曲速度和系統(tǒng)碼(Sysx)等內容。
不管是全局音軌還是含有音符的音軌,都以“4D 54 72 6B”開頭,它其實是 ASCII 字符“MTrk”,其后跟 著一個 4 個字節(jié)的整數(shù),它標志了該軌道的字節(jié)數(shù),這不包括前面的 4 個字節(jié)和本身的 4 個字節(jié)。這一點, 我們可以在后面的例子中去理解。
接著就是記錄數(shù)據(jù)的地方了,每一個數(shù)據(jù)有著相同的結構:時間差+事件。
所謂時間差,指的是前一個事件到該事件的時間數(shù),它的單位是 tick(MIDI 的最小時間單位)。它的構成比 較特殊,這里要用二進制來說明。
一個字節(jié)有 8 位,如果僅使用 7 位,它可以表示 0~127 這 128 個數(shù),而剩下的一位,則用來作為標志。如 果要表示的數(shù)在以上范圍,則這個標志為 0,這時,一個 7 位的字節(jié)可以表示 0~127tick。如果要表示的數(shù) 超出了這個范圍(比如 240),則把標志設置成 1,然后記錄下高 7 位,剩下的留給下一個字節(jié),在該例中 240 可以分解成 128*1+112,這里的 1 就是第一個字節(jié)要記錄的,加上標志位,應該為 10000001,即十六
進制的 81;而 112 是下一個字節(jié)記錄的,它的十六進制為 70:所以要表示 240 這個時間,要寫成 81 70。 同理,如果要表示 65535tick,則可以先計算出 65535=1282*3+1281*127+1280*127,然后得出結果:83 FF 7F。 由此,我們反過來也可以知道如何確定時間差:只要標志位為 0,則表示結束讀取時間差。比如 82 C0 03 表示 1282*2+1281*64+1280*3=40963,如果基本時間為 120,則有 341:043 個四分音符。
以這種方式記錄整數(shù)的字節(jié)稱為動態(tài)字節(jié),它根據(jù)記錄的整數(shù)改變自身的長度,這在后面還要用到,所以 必須熟練計算。
看完了這么麻煩的東西,我們再來看個更麻煩的東西:事件。在這些標準的解釋后面,我們會通過一些例子 來進一步掌握這些內容。
事件大體上可以分為音符、控制器和系統(tǒng)信息這幾個種類。對于這些事件,都有統(tǒng)一的表達結構:種類+參數(shù)。
對于一個音符,由于它的有效范圍是 0~127,所以直接用 00~7F 作為“種類”,可以認為是個音符,比如 3C 表示中央 C。而一個音符的最重要的參數(shù)是力度(也叫速度:velocity)。比如,3C 64 表示一個力度為十 進制100的中央C音符。
小編簡評:
下載 Anvil studio 2012(MIDI音樂編輯處理軟件) 2.6M /小編簡評:Anvil stud
下載 速度超快的MIDI音樂轉換軟件 Midi Guitar to Rock Band Converter 0.8 綠色版免費版 548KB /小編簡評:
下載 MIDI音樂合成軟件(SynthFont) 6.0M /小編簡評:MIDI音樂合
下載 非常好用的音樂合成軟件 SynthFont 5.9M /小編簡評:
下載 SynthFont(專業(yè)波表MIDI合成工具) 5M /小編簡評:
下載 MIDI-TO-MP3 V1.2 漢化版 902KB /小編簡評:媒體轉換,可
下載 midi音樂合成工具(EnergyXT) 5.7M /小編簡評:midi音樂通
下載 音頻轉midi工具(TS-AudioToMidi Converter) 579KB /小編簡評:這是一個將
網(wǎng)友評論