Skip to content
/ bmspec Public

Executable BMS (Be-Music Source) Specification in Gherkins (Cucumber) language

License

Notifications You must be signed in to change notification settings

bemusic/bmspec

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

25 Commits
 
 
 
 
 
 
 
 

Repository files navigation

bmspec

This is NOT the official BMS specification. This project aims to specify the BMS file format in a way that can be automatically tested.

Example

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.

Resources

  • BMS command memo is the most comprehensive documentation of BMS file format available, which covers different behaviors.

Structure

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.

  1. 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
  2. longnote
    • #LNTYPE 1
    • #LNOBJ xx
  3. bga
    • #BMPxx
    • #xxx04 BGA-base
    • #xxx07 BGA-layer

About

Executable BMS (Be-Music Source) Specification in Gherkins (Cucumber) language

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published