This is NOT the official BMS specification. This project aims to specify the BMS file format in a way that can be automatically tested.
Here's how Gherkin language looks like:
Scenario: Time signature
Given a BMS file as follows
"""
#00102:0.750
#00111:0104
#00211:02
#00311:03
"""
Then object 01 should be at beat 4
And object 02 should be at beat 7
And object 03 should be at beat 11
And object 04 should be at beat 5.5
Cucumber can parse this language to validate the BMS implementation. For example, see the bms-js project.
- Be-Music Source on Wikipedia
- What is BMS? on Angolmois Wiki
- BMS command memo is the most comprehensive documentation of BMS file format available, which covers different behaviors.
Since BMS file format has been applied to multiple games, not all implementors implement all features.
Instead, implementations can check with each feature to see whether they support it or not.
- basic
- Basic parsing of comments, headers, and channel sentences.
- Basic song information
#TITLE
- Implicit subtitles
#SUBTITLE
- Multiple subtitles
#MAKER
#GENRE
,#GENLE
- Channel sentences.
- Basic channel merging.
#xxx01
BGM channel layering.#xxx02
Time signature commands.
- BPM changes.
#xxx03
BPM changes.#xxx08
Extended BPM changes.
- STOP commands.
#xxx09
Stop BPM sequences.#STP xxx.yyy zzzz
- longnote
#LNTYPE 1
#LNOBJ xx
- bga
#BMPxx
#xxx04
BGA-base#xxx07
BGA-layer