東坡下載:內(nèi)容最豐富最安全的下載站!

幫助|文件類型庫|最新更新|下載分類|排行榜

首頁安卓軟件影音圖像 → BitMusic app 0.1 安卓最新版
BitMusic app0.1 安卓最新版

BitMusic app

更新:2017-05-17 18:45

大。46KB

下載地址
更多安卓版 >
更多IOS版 >
更多PC版 >
二維碼

掃描二維碼安裝到手機(jī)

好玩50%(10票)
坑爹50%(10票)

同一開發(fā)者

BitMusic app截圖BitMusic app截圖BitMusic app截圖BitMusic app截圖
  • 分類:影音圖像
  • 大小:46KB
  • 語言:中文
  • 版本:0.1 安卓最新版
  • 時(shí)間:2017-05-17 18:45
  • 星級(jí):
  • 官網(wǎng):暫無
  • 廠商
  • 平臺(tái):Android

BitMusic是一款可以播放Fc游戲音樂和Midi格式音樂的平臺(tái),支持MIDI文件的屬性編寫,其實(shí)小編也不太了解,有興趣的可以下載研究下。

BitMusic app怎么用

使用說明

BitMusic的Musiccode格式是我自己設(shè)計(jì)的,有四個(gè)屬性,其語法格式如下:

{波形0~3,響度0~1000,頻率0.0~200000.0,延遲時(shí)間毫秒}

某一屬性不改變可簡寫成-1,如:

{1,1,1,1}{1,1,2,2}可簡寫成{1,1,1,1}{-1,-1,2,2}

如果僅僅延遲可簡寫成{延遲時(shí)間毫秒},如:

{0,0,0,50}可簡寫成{50}

原理介紹

編寫B(tài)itMusic的靈感是來自Fc游戲音樂和Midi格式的音樂。BitMusic能用來干什么?目前我也不知道(滑稽),或許只是拿它玩玩吧。

MIDI文件格式分析

MIDI文件屬于二進(jìn)制文件,這種文件一般都有如下基本結(jié)構(gòu):文件頭+數(shù)據(jù)描述

文件頭一般包括文件的類型,因?yàn)镸idi文件僅以.mid為擴(kuò)展名的就有0類和1類兩種,而大家熟悉的位圖文件的格式就更多了,所以才會(huì)出現(xiàn)文件頭這種東西。

而數(shù)據(jù)描述部份是主體,我們現(xiàn)在來一起分析它的結(jié)構(gòu):

在每個(gè)Midi文件的開頭都有如下內(nèi)容,它們的十六進(jìn)制代碼為:“4d54686400000006ffffnnnndddd”。

前四個(gè)是ASCII字符“MThd”是用來鑒別是否Midi文件,而隨后的四個(gè)字節(jié)是指明文件頭描述部分的字節(jié)數(shù),它總是6,所以一定是“00000006”,以下是剩余部分的含義:

以上就是 MIDI 文件頭了,后面的所有內(nèi)容都是真正做事的,我們先來看看它的構(gòu)成。

MIDI 的數(shù)據(jù)是由若干個(gè)格式相同的子數(shù)據(jù)構(gòu)成的,這些子數(shù)據(jù)在多音軌的格式中記錄了一個(gè)軌道的所有信 息。多加一個(gè)音軌,就簡單地把數(shù)據(jù)追加在前一音軌的后面就可以了,不過不要忘記更改文件頭中的 nn nn(軌道數(shù))。

先看全局音軌。全局音軌包括歌曲的附加信息(比如標(biāo)題和版權(quán))、歌曲速度和系統(tǒng)碼(Sysx)等內(nèi)容。

不管是全局音軌還是含有音符的音軌,都以“4D 54 72 6B”開頭,它其實(shí)是 ASCII 字符“MTrk”,其后跟 著一個(gè) 4 個(gè)字節(jié)的整數(shù),它標(biāo)志了該軌道的字節(jié)數(shù),這不包括前面的 4 個(gè)字節(jié)和本身的 4 個(gè)字節(jié)。這一點(diǎn), 我們可以在后面的例子中去理解。

接著就是記錄數(shù)據(jù)的地方了,每一個(gè)數(shù)據(jù)有著相同的結(jié)構(gòu):時(shí)間差+事件。

所謂時(shí)間差,指的是前一個(gè)事件到該事件的時(shí)間數(shù),它的單位是 tick(MIDI 的最小時(shí)間單位)。它的構(gòu)成比 較特殊,這里要用二進(jìn)制來說明。

一個(gè)字節(jié)有 8 位,如果僅使用 7 位,它可以表示 0~127 這 128 個(gè)數(shù),而剩下的一位,則用來作為標(biāo)志。如 果要表示的數(shù)在以上范圍,則這個(gè)標(biāo)志為 0,這時(shí),一個(gè) 7 位的字節(jié)可以表示 0~127tick。如果要表示的數(shù) 超出了這個(gè)范圍(比如 240),則把標(biāo)志設(shè)置成 1,然后記錄下高 7 位,剩下的留給下一個(gè)字節(jié),在該例中 240 可以分解成 128*1+112,這里的 1 就是第一個(gè)字節(jié)要記錄的,加上標(biāo)志位,應(yīng)該為 10000001,即十六

進(jìn)制的 81;而 112 是下一個(gè)字節(jié)記錄的,它的十六進(jìn)制為 70:所以要表示 240 這個(gè)時(shí)間,要寫成 81 70。 同理,如果要表示 65535tick,則可以先計(jì)算出 65535=1282*3+1281*127+1280*127,然后得出結(jié)果:83 FF 7F。 由此,我們反過來也可以知道如何確定時(shí)間差:只要標(biāo)志位為 0,則表示結(jié)束讀取時(shí)間差。比如 82 C0 03 表示 1282*2+1281*64+1280*3=40963,如果基本時(shí)間為 120,則有 341:043 個(gè)四分音符。

以這種方式記錄整數(shù)的字節(jié)稱為動(dòng)態(tài)字節(jié),它根據(jù)記錄的整數(shù)改變自身的長度,這在后面還要用到,所以 必須熟練計(jì)算。

看完了這么麻煩的東西,我們再來看個(gè)更麻煩的東西:事件。在這些標(biāo)準(zhǔn)的解釋后面,我們會(huì)通過一些例子 來進(jìn)一步掌握這些內(nèi)容。

事件大體上可以分為音符、控制器和系統(tǒng)信息這幾個(gè)種類。對(duì)于這些事件,都有統(tǒng)一的表達(dá)結(jié)構(gòu):種類+參數(shù)。

對(duì)于一個(gè)音符,由于它的有效范圍是 0~127,所以直接用 00~7F 作為“種類”,可以認(rèn)為是個(gè)音符,比如 3C 表示中央 C。而一個(gè)音符的最重要的參數(shù)是力度(也叫速度:velocity)。比如,3C 64 表示一個(gè)力度為十 進(jìn)制100的中央C音符。

應(yīng)用信息

  • 包名:com.sf.BitMusic
  • 名稱:BitMusic
  • 版本:0.1
  • 版本號(hào):1
  • MD5:7bd86e3a11b0431b1ae84007f3e73d41

網(wǎng)友評(píng)論

熱門評(píng)論
最新評(píng)論
發(fā)表評(píng)論 查看所有評(píng)論(0)
昵稱:
表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
字?jǐn)?shù): 0/500 (您的評(píng)論需要經(jīng)過審核才能顯示)

推薦軟件

下載排行