BMS Format Specification

written by Urao Yane(yaneurao@gmail.com)

"BMS" means a Be-Music Source file. A file which has BMS suffix is regarded as the BMS file. This file format was produced by Urao Yane and NBK in 1998. And I adopted this file format to BM98. Now,anyone can use this format freely.

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

<Command Line>

The line begining at '#' is the command line. All the rest are ignored (use for comments). And this BMS file is compiled at runtime , so you can order any lines freely. And there is no difference in the command line between using a capital letter or not.

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

<Header>

#PLAYER 1
This data is for Single Play.

#PLAYER 2
This data is for Two Play.

#PLAYER 3
This data is for Double Play.

#GENRE xxxxxxxx
Definition of Genre.

#TITLE xxxxxxxx
Definition of Title.

#ARTIST xxxxxxxx
Definition of Artist.

#BPM xxx
Definition of BPM.(Beat Per Minite) at the top of music. default : 130

#MIDIFILE xxxxxxx.mid
Background music by MIDI.

#PLAYLEVEL x
Information of Game Level for player.

#RANK x
judgement level.
x = 0 :very hard, 1: hard, 2: normal, 3: easy

@

#VOLWAV xxx
relative volume control (percentage)

#WAVxx yyyyyyyy.wav
definition of Wave Data. xx : 01 to FF (Hex) , yyyyyyyy.wav : wave file name

e.g.
#WAV01 HOUSE01.WAV // assign HOUSE01.WAV to 01 wav
#WAV02 HOUSE02.WAV // assign HOUSE02.WAV to 02 wav
#WAVFF HOUSE03.WAV // assign HOUSE03.WAV to FF wav

#BMPxx yyyyyyyy.bmp
definition of Bitmap file. xx : 01 to FF(Hex) , yyyyyyyy.bmp : bitmap file name
Bitmap size must be 256 * 256.(max color 65536)

e.g.
#BMP01 HOUSE01.BMP // assign HOUSE01.BMP to 01 bitmap
#BMP02 HOUSE02.BMP // assign HOUSE02.BMP to 02 bitmap
#BMPEE HOUSE03.BMP // assign HOUSE03.BMP to EE bitmap

But ,the bitmap defined by #BMP00 is something special.
This bitmap shows when a player do a poor play.

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

// a sample of random loading function

#random 2 // create a random number (1 or 2)

#if 1 // if the number was equal to 1 then...
#00111:31313131 // this is effective...
#endif

#if 2 // if the number was equal to 2 then...
#00113:32003232 // this is effective
#endif

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

<Channel Messages>

#aaabb:cccccccc

aaa: track number (from 000 to 999)
bb : channel number where you want to send message.(from 00 to FF)
cccccccc : <message>

<a brief Channel Number>

01 : BGM(background music by WAVE)
03 : changing a Tempo
04 : BGA(background animation)
06 : changing Poor-bitmap
11 to 17 : Object Channel of 1 player side
21 to 27 : Object Channel of 2 player side

<Example>

#00211:03030303
This means 4 objects at the left of 1 player side in 002 track. This object is assigned to wave No.03 which was defined by #WAV03 xxxx.wav. And this 4 objects are arranged evenly in this track.

Please try the following patterns.

#00211:0303030303

#00211:0303000303

#00211:010101
#00211:00020202

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

This document and this format is free!
I hope the day will come when my BMS format will use all over the world.

Urao Yane

back to my homepage