2007年10月4日星期四

文本編輯BMS/BME完全解析

[原創]文本編輯BMS/BME完全解析

現在通常都用sequence editor等軟件來創作bms了,本文是寫給那些有興趣了解bms文件内容含義的人的。bms/bme裏面的内容是什麽意思我那時摸索了一段時間,而至今似乎也沒有相關的文章教程之類的,因此把我的理解寫出來供大家參考討論。

1)討論範圍

  bms/bme是流行的曲譜文件格式,但我不了解其它音樂遊戲(如太鼓等)是否也使用這類文件格式,我只在rythm-it裏面用過,也就是說討論範圍限定在鍵盤敲打類遊戲(Ez2Dj, BeatMania/IIDX, 以及模擬器rythm-it, whistle等)的bms/bme

2) 文件結構
 2.1)概述
  按我的理解通常bms是5-key, bme是7-key,格式上則沒多大區別。文件分爲header field和main data field兩部分,前者為歌曲的基本信息,後者為曲譜的主要内容。
 
 2.2 header field
  這部分相信一般不難看懂。一開始是歌曲作者難度等信息,接著就是note與聲音圖片對應的參照。如以下這個例子(Shiki - Aqua Marine [Light5]):

*---------------------- HEADER FIELD

#PLAYER 1 //玩家
#GENRE ---- //音樂類別
#TITLE Aqua Marine [Light7] //歌曲名稱
#ARTIST SHIKI //作者
#BPM 174 //速度
#PLAYLEVEL 6 //遊戲難度
#RANK 3 //等級
#TOTAL 360 //總共notes的數量
#STAGEFILE seiken_title.bmp //開頭畫面

#WAV01 re1.wav
#WAV02 re2.wav
#WAV03 re3.wav
#WAV04 re4.wav
......
......
#WAVD1 vo12b.wav
#WAVD2 vo13b.wav
#WAVD3 vo14b.wav
#WAVD5 bird.wav

#BMP01 seiken_mori_00000.bmp
#BMP02 seiken_mori_00001.bmp
#BMP03 seiken_mori_00002.bmp
#BMP04 seiken_mori_00003.bmp
......
......
#BMPFC seiken_heishi_00015.bmp
#BMPFD seiken_ab_00009.bmp
#BMPFE fity_kuro.bmp
#BMPFF fity_siro.bmp

在WAV和BMP後面是note的編號,可以是01-FF,再後面就是對應的聲音/圖片文件,像上面的例子,當按下D1這個note時,就會發出vo12b.wav的聲音。

 2.3)main data field
  這部分是關鍵,其實也不是太難理解,用BMSE打開bms文件,與原文件内容對照一下:



*---------------------- MAIN DATA FIELD

#00006:E4

#00101:32000000000400000000000000000000
#00101:00
#00101:0000000500000000
#00104:01FE01FE02D1D2FE03D1D2D104D1D2FE(后略)
#00111:0102000000000800
#00112:0006
#00113:00030000 <==
#00115:0000000000070009

#00201:00000000000D00000000000000000000
#00201:000000000000000F0000000000000000
#00204:11D2D1FE12D2D1D213D2D1D214D2D1D2(后略)
#00211:000B000000001200
#00212:0000000E00110000
#00213:000C0000
#00215:0A00000010000013

  每一行最前面三個數字(如001,002)表示第幾小節,後面兩個數字則有固定意義:
01:背景音,可以有多層
03:bpm,用於中間變速
04:背景圖片
11-15:keyboard從左至右1-5號鍵
16:轉盤
18-19:6-7號鍵(for 7 keys)

  以#00113:00030000為例,表示在第一小節的中間鍵,兩個數字為一個note的代表,也就是看成00-03-00-00,有多少個notes則表示將小節分成幾等分,這裡分了四等分,0,1/4,2/4和3/4,但只有1/4位置上有一個音03,其餘的空位都用00表示。從圖上可以看出,第一小節的中間鍵只有約四分之一的地方有一個音,編號為03!
  其它的部分也以此類推,比如#00112,第一小節第二個鍵那裏,只有中間一個音06,因此是兩等分,0和1/2,1/2位置是06,0位置用00填充,因此是0006。

3)總結
  以文本方式編輯bms/bme無疑比用BMSE等編輯器複雜得多,但本文可以幫助你不需要編輯器也可以看懂bms/bme文件,另外,一些在編輯器上做不到的效果(如一小節7等分),也可以透過文本編輯bms/bme來實現。

1 則留言:

匿名 說...

谢谢分享,网上相关的资料确实少之又少。