Be-Music Source Explained

BMS
Owner:Urao Yane, NBK
Genre:Music
Container For:Pattern data
Extended From:Text files
Extended To:BME, BML, PMS

BMS is a file format for rhythm games developed by Urao Yane in 1998. The format was originally developed for BM98 (a simulator of the game Beatmania by Konami), though the term BMS is now widely used to describe the Beatmania-esque music data system in general.

The acronym has been confirmed by Yane to be Be-Music Source in the official BMS format specification.[1]

Gameplay

Similar to the Beatmania and Beatmania IIDX series, the purpose of the game is to hit notes as they descend from the top of the screen.

BMS events

Currently, most BMS files are distributed in BMS events, where several artists publish songs and compete for scores.[2] Held since 2004, the largest BMS event is the BMS of Fighters (BOF) held by AOiRO_MANBOW, where more than 250 songs are presented each year.

BMS songs

As the BMS format requires music to be separated into various tracks, most BMS songs are original songs composed specifically for the BMS file type, thus making it hard to use pre-existing songs for BMS (unless isolated stems are available).

Basic format

The BMS file describes how notes are arranged and how the game responds when the player takes a specific action. It is a plain text file with "directive" lines starting with the # character. Each directive line is formatted in the form below:

#[definition_setter] [definer]
The space between the definition setter and the definer is required.

A BMS file is generally composed of a header field and the main data field. Below is a simple example of what a BMS file will look like when it is opened by a text editor.

*---------------------- HEADER FIELD
#PLAYER 1
#GENRE Sample
#TITLE Sample
#ARTIST Sample
#BPM 120
#PLAYLEVEL 5
#TOTAL 100
#RANK 2
#bmp00 miss.bmp
#bmp01 1.bmp
#wav01 1.wav
*---------------------- MAIN DATA FIELD
#00111:01010101
#00211:0101010001010100

Common header field components

Commands existing from the original BM98 and used in original BMS data are as follows:[3] [4]

Command nameDescription
#ARTISTDefines the artist.
#BMPxxDefines the picture or video file that will be displayed when the number xx appears in the graphic channels of the main data field.
#BPMDefines the speed of the song in beats per minute.
#GENREDefines the genre.
#PLAYERDefines the play style (1 for Single Play, 2 for Couple Play, and 3 for Double Play). Modern BMS simulators do not depend on PLAYER anymore, but define play style by the extension of the file itself and the directive lines used in the main data field.
#PLAYLEVELDefines the difficulty level displayed for the song.
#RANKDefines how strict the note timing threshold is (0 for very hard, 1 for hard, 2 for normal, and 3 for easy), unless otherwise set by the simulator.
#TITLEDefines the title.
#TOTALDefines how much the gauge will increase when the notes are hit appropriately.
#WAVxx#OGGxxDefines the music file that is played when the number xx appears in the played channels and the sound channels of the main data field. The most commonly used music file types for BMS are WAV and OGG. #WAV00 sets the sound played when a mine note is hit.
Commands later developed that have become popular include:
Command nameDescription
#BANNERDefines the banner displayed when the song is chosen to play.
#BPMxxDefines what the BPM will change to when the number xx appears in the BPM channel of the main data field.
#DIFFICULTYDefines the difficulty of a song by color (1 for green, 2 for blue, 3 for yellow, 4 for red, and 5 for purple). As songs get harder, higher numbers are assigned.
#LNOBJNotes defined with this parameter will act as endings for long notes when they appear in the played channels of the main data field.
#STAGEFILEDefines the image displayed when the song is chosen to be played.
#STOPxxDefines how long the sequence should stop when the number xx appears in the stop channel of the main data field.
#SUBARTISTDefines a secondary artist.
#SUBTITLEDefines a subtitle.

Main data field components

Main field data is written in the form of #XXXYY:ZZZZZZ. XXX defines the number of the measure, YY defines the channel, and ZZ defines the components of the measure using a base 36 2-digit number. The colon separating the definer and components is required.

Expansion of BMS format

As the original BMS format became outdated with Beatmania being superseded by Beatmania IIDX, other formats that adopted changes in the Beatmania series were developed. Famous expansions include the Be-Music Extend format (.bme) that allowed 7 lines and 1 turntable to be played, and the Be-Music Long note format (.bml) that allowed usage of long notes that required players to hold the key until the end of the note. A .pms extension also exists based on .bms, meant for simulating the game Pop'n Music and utilizing 9 lines.

Simulators themselves have also been developed by fans:

bmson

bmson is a JSON-based format initially developed by wosderge. The original purpose of the format was to make an alternative to BMS that was easy to implement and use by developers, artists and chart creators alike. bmson has no limit on the amount of key sounds one can have in a chart, unlike BMS, which has a hard limit of 1296 key sounds. After the format was proposed, the version 0.26 format was implemented to a couple of BMS players, such as Bemuse and raindrop.[8] [9] After bmson's initial implementation, the developers of these games, as well as a few others, worked together to create the bmson version 1.0 technical specification.[10]

See also

External links

Games dedicated for the BMS format

Notes and References

  1. Web site: BM98Data_format_specification.
  2. Web site: Beginner's Guide to THE BMS OF FIGHTERS . 2023-11-23 . keysounds.net . en.
  3. Web site: BMS形式 .
  4. Web site: BMS command memo.
  5. Web site: BM98Data_format_specification.
  6. Web site: Delight Delight Reduplication Support Page . 1 September 2015 . https://web.archive.org/web/20150827140136/http://homepage1.nifty.com/nickle/ . 27 August 2015 . dead .
  7. Web site: Uonazo.
  8. Web site: BMSON support and bms loader refactor · zardoru/raindrop@2d72a7d. GitHub. 2016-02-16.
  9. Web site: bmson support landed on Bemuse - Qiita. Qiita. 2016-02-16.
  10. Web site: Welcome to bmson-spec's documentation! — bmson-spec 1.0.0-beta documentation. bmson-spec.readthedocs.org. 2016-02-16.