BMS仕様書(をまとめたもの)

 間違い、誤字等がありましたら教えてください。

注:For Delightと書いてあるものはDelight Delight Reduplication拡張フォーマット
For Delight&RDMと書いてあるものはDelight+Rhythm-it(開発終了→復活しました)の拡張フォーマットです。

§1.Header

※Header部の指定はnなら数値、xは文字列を表す。

#PLAYER n
何人プレイかを指定。
1:Single Play(1P)
2:Couple(1p+2p)
3:Double Play(1p&2pを1人で)
4:Battle(1Pと同じシーケンスを2人で)(Delightでは未実装)

#GENRE xxxxx
曲のジャンルを指定。

#TITLE xxxxx
曲のタイトルを指定

#ARTIST xxxxx
曲の製作者を指定

#BPM n
曲のBPM(1分あたりの四分音符の数)を指定(省略すると130と指定される)

#PLAYLEVEL n
曲のレベル(難易度)を指定(作者が自由に設定できるので絶対的なものではない)。

#RANK n
BMSの判定の厳しさを指定。
0:Very Hard
1:Hard
2:Normal
3:Easy

#VOLWAV n
音量を現段階のn%として出力するか指定。

#TOTAL n
ゲージの増量を指定。
オールGREATでn%ととする。

#WAVnn xxxxxx.wav(or xxxxxx.mp3)
読み込むWAV(MP3)ファイルを指定。01からFZの36進数で指定。
xにはファイル名が入る。

#BMPnn xxxxxx.bmp(or xxxx.jpg,xxxx.gif,xxxx.png)
読み込む画像ファイル(BMP,JPEG,GIF,PNG)を指定。
xにはファイル名が入る。

#StageFile xxxx.bmp(or jpg,gif,png)
データ読み込み時に表示する画像ファイルを指定。

#BGAn1 n2 x y tx ty ox oy
(Exteneded)拡張BGA領域を指定。
n1:36進数の数値
n2:#BMPの画像番号
x:n2の指定した画像の中の表示したい領域の左上のx座標
y:左上のy座標
tx:右下のx座標
ty:右下のy座標
ox:指定した画像を表示する場所のx座標
oy:上記のy座標

#BPMn1 n2
(Extended)拡張BPM値を指定。
n1:01-FFの16進数
n2:変更するBPM値

#STOPn1 n2
(Extended・For Delight)シーケンスストップ命令を指定。
n1:01-FFの16進数
n2:とめる拍子数(n分音符とめるとすると192/n)

ex.四分音符なら…192/4=48,八分音符なら…192/8=24

#CDDA n
(Extended・For Delight)Audio-CDのトラックを指定。
nにはトラックナンバーを指定する。

#BackBMP xxxx.bmp(or gif,jpg,png)
(Extended・For Delight)背景画ファイルを指定する。

#LNTYPE 1
(Extended・For Delight&RDM)フリーズアローやロングノートシーケンスを使う時のお約束。

#Midifile xxxx.mid
(非推奨)プレイする時に流すmidファイルを指定する。

§2.データ部

2.1:データの書き方

#aaabb:xxxxxxx

aaaは10進数で3桁の小節ナンバー。000から始まって最大値が999となる。
bbはチャンネルナンバー。10進2桁で指定。チャンネルに関してはチャンネル詳細にて。
xxは、各小節内でのオブジェクト配列。2Byteを1単位として指定。詳しい事はオブジェクト配列にて。

2.2:チャンネル詳細

01:バックコーラス(プレイしないWAVファイル)
叩いて出す音ではなく、指定した場所に来たら自動的に再生されるwavファイル。

02:小節の短縮
その小節を指定した分省略。
記述例:#00102:0.5(1小節目を半分(2/4拍子)に省略)

03:BPM値の途中変更チャンネル
指定した場所からBPM値を変更する(16進数)
記述例:#00303:00A500C8(3小節目の2拍目でBPMをA5h(165)に4拍目でC8h(200)へ変更)

04:BGAチャンネル
指定した場所で指定した画像を表示させる

05:Extended Object(For BM98 YANEURAO ver.)
Unknown(詳細はこちら)

06:Poorアニメーションの変更
指定した場所以降のPoorアニメ(失敗した時に表示する画像)を指定。

07:BGA Layerチャンネル
04チャンネルで指定した画像にレイヤーをかける。透過色はRGB:00:00:00(HTMLでいう#000000)。

08:拡張BPMチャンネル
#BPMn1で指定したBPMに変更する。

09:STOPチャンネル
(For Delight)#STOPn1で指定した分だけシーケンスを停止する。

10:予約チャンネル
(未定義)

11-19:1Pの可視オブジェクト定義
11は1キー(BM時の一番左の白鍵),12は2キー(一番左の黒鍵)13は3キー(5Key時の真中の白鍵)…
16はスクラッチ,17はフリースクラッチ。6キーは18,7キーは19
DDR 4Panelモードでは11が←,13が↓,15が↑,16が→となる
DDR 6Panelだと11が←,12が\,13が↓,14が↑,15が/,16が→となる。

20:予約チャンネル
(未定義)

21-29:2Pの可視オブジェクト定義
1Pの定義に10を加えたもの。

30:予約チャンネル
(未定義)

31-39:1Pの不可視オブジェクト定義
1Pの可視オブジェクト定義の数値に20を加えたもの
見えないし叩く必要も無いけど一応アサインしてあるWAVファイル。
アレンジプレイ用。

40:予約チャンネル
(未定義)

41-49:2Pの不可視オブジェクト定義
2Pの可視オブジェクト定義の数値に20を加えたもの
見えないし叩く必要も無いけど一応アサインしてあるWAVファイル。
アレンジプレイ用。

50:予約チャンネル?
(多分未定義)

51-59?:1Pロングノート(フリーズアロー)定義
(For Delight&RDM)1P可視オブジェクトの値+40の数値
押しっぱなしにしなければならないシーケンス。

60:予約チャンネル?
(多分未定義)

61-69?:2Pロングノート(フリーズアロー)定義
(For Delight&RDM)2P可視オブジェクトの値+40の数値
押しっぱなしにしなければならないシーケンス。

2.3:オブジェクト配列

#aaabb:xxxxxxxxの"x"は2バイト(2文字)で1セットと見る。
故に音や画像を定義するチャンネルでxの個数が奇数になることは無い。
もしある場合はデータエラーである。

ex1.

#00211:01010101

だと2小節目の1キーに4分音符が4連続で定義される(画像)。

ex2.

#00311:01

だと3小節目の1キーが3小節目の1番最初に1つだけ定義される。

ex3.

#00411:010101

だと4小節目の1キーに192分音符×64個分(4分音符+16分音符=ニ重付点四分音符)が定義される。

複雑な例.

#00511:0100000002010201

だと…こんな 感じに

まとめて…

#aaabb:xxxxxxxx

はaaa小節目のbbチャンネルに(xの個数/2)分音符の間隔でシーケンスが定義される(文章に無理があり過ぎ…
但し多重定義をした場合は記述された順に常に上書きされる。

ex.

#00101:01
#00101:02
#00101:03

の場合は03が定義された事になる。

ex2.

#00101:0100000001010101
#00101:0202020200000000

の場合は

#00101:0202020201010101

となる。 BMSCreatorで作成した場合の音符の最小単位は192分音符となる(基本的にはそれで十分表現可能かも…)BM98限定。
Delightでは論理上508分音符が最小単位となる。
(1行の行数制限が1024字で最初の#xxxxx:で7文字使い、2バイト単位であるから(1024-7)/2=508.5かつ奇数個だとエラーになるので508)
BMS資料トップ
ホーム