Beatmap Format - kbz/SIFTrain GitHub Wiki
The main template is as follows (sample below):
- song_name: UTF-8 encoding, currently works for latin and japanese alphabets (probably chinese too, to some degree)
- difficulty: numeric 1-4 (1 being the lowest difficulty - easy)
- difficulty_name: UTF-8 encoded string with the name for your difficulty (not required)
- music_file: the name of the music file used with this beatmap (not required - will look up for files in the /beatmaps/soundfiles only, you can specify the file extension or not, in which case the app will look up for either a .mp3, .wav or .ogg file)
- lead_in: time in seconds (not required, specifies the lead_in time before the sound file starts playing - doesn't modify timing of the notes as they should be timed to the soundfile, if not specified, the default value is 0s)
rank_info: a list of rank items (not required anymore, but recommended. If specified, it needs at least 4 and max 5 entries, can be unordered)(Obsolete as of 2.0)- song_info: a list of items (currently the game handles only 1 item)
Each rank item contains the following info:
rank_max: max amount of points required to meet this rank(Obsolete as of 2.0)
A song info item contains the following elements:
notes_speed: in seconds, this represents the time it takes the note to reach the tap zone since it appears on screen(Obsolete as of 2.0)- notes: the list of notes of the beatmap
Each note contains the following information:
- timing_sec: represents the time when this note should be tapped relative to the start of the song
- effect: effect mask representing different possible effects (more info below).
- effect_value: numeric value can be left blank except for holds
- position: represents the circle which should be tapped (numbered from 1-9, with 1 being the rightmost circle)
Sample:
{
"song_name": "SAMPLE NAME",
"difficulty": 2,
"lead_in":1.0,
"difficulty_name":"kb_z's easy",
"music_file":"rick_roll.mp3",
"song_info": [
{
"notes": [
{
"timing_sec": 3.043,
"effect": 1,
"effect_value": 2,
"position": 9
},
{
"timing_sec": 4.889,
"effect": 1,
"effect_value": 2,
"position": 1
},
{
"timing_sec": 6.736,
"effect": 2,
"effect_value": 2,
"position": 7
},
{
"timing_sec": 8.351,
"effect": 1,
"effect_value": 2,
"position": 3
}
]
}
]
}
- Effects:
Note Type | Effect Mask | Mask value in decimal | Effect Value |
---|
Normal | 0b00000001 | 1 | 2
~~Filled~~ | 0b00000010 | 2 | 2 (obsolete as of 2.0)
Hold | 0b00000100 | 4 | time in seconds
~~Exclamation~~ | 0b00001000 | 8 | 2 (obsolete as of 2.0)
Simult Start | 0b00010000 | 16 |
Simult End | 0b00100000 | 32 | used only by the randomizer
-
Normal Example:
{ "timing_sec": 8.351, "effect": 1, "effect_value": 2, "position": 3 }
-
Filled Example:
{ "timing_sec": 8.351, "effect": 2, "effect_value": 2, "position": 3 }
-
Hold Example:
{ "timing_sec": 8.351, "effect": 4, "effect_value": 4.214, "position": 3 }
-
Exclamation Example:
{ "timing_sec": 8.351, "effect": 8, "effect_value": 2, "position": 3 }
-
Simultaneous (normals - 16+1/ filled 16+2 / holds 16+4 / exclamation 16 + 8):
{ "timing_sec": 31.698, "effect": 17, "effect_value": 2, "position": 6 }, { "timing_sec": 31.698, "effect": 17, "effect_value": 2, "position": 4 }
For more examples, please check the files under datafiles