Beatmap
The beatmap file defines collections and associated metadata for all interactable beatmap items, such as notes and obstacles.
INFO
In v4 and later, any collections for non-interactable beatmap objects are located in the corresponding Lightshow file. You can refer to the sample files included there to know where the corresponding collections are located.
Sample Data
{
"_version": "2.0.0",
"_notes": [
{
"_time": 10,
"_lineIndex": 1,
"_lineLayer": 0,
"_type": 0,
"_cutDirection": 1
},
{
"_time": 10,
"_lineIndex": 1,
"_lineLayer": 0,
"_type": 3,
"_cutDirection": 0
}
],
"_obstacles": [
{
"_type": 0,
"_time": 10,
"_duration": 5,
"_lineIndex": 1,
"_width": 1
}
],
"_events": [
{
"_time": 10,
"_type": 1,
"_value": 3
},
{
"_time": 10,
"_type": 5,
"_value": 1
},
{
"_time": 10,
"_type": 14,
"_value": 4
},
{
"_time": 15,
"_type": 15,
"_value": 4
},
{
"_time": 10,
"_type": 10,
"_value": 128
}
]
}
{
"_version": "2.2.0",
"_notes": [
{
"_time": 10,
"_lineIndex": 1,
"_lineLayer": 0,
"_type": 0,
"_cutDirection": 1
},
{
"_time": 10,
"_lineIndex": 1,
"_lineLayer": 0,
"_type": 3,
"_cutDirection": 0
}
],
"_obstacles": [
{
"_type": 0,
"_time": 10,
"_duration": 5,
"_lineIndex": 1,
"_width": 1
}
],
"_events": [
{
"_time": 10,
"_type": 1,
"_value": 3
},
{
"_time": 10,
"_type": 5,
"_value": 1
},
{
"_time": 10,
"_type": 14,
"_value": 4
},
{
"_time": 15,
"_type": 15,
"_value": 4
},
{
"_time": 10,
"_type": 10,
"_value": 128
}
],
"_waypoints": [
{
"_time": 10,
"_lineIndex": 1,
"_lineLayer": 0,
"_offsetDirection": 1
}
]
}
{
"_version": "2.4.0",
"_notes": [
{
"_time": 10,
"_lineIndex": 1,
"_lineLayer": 0,
"_type": 0,
"_cutDirection": 1
},
{
"_time": 10,
"_lineIndex": 1,
"_lineLayer": 0,
"_type": 3,
"_cutDirection": 0
}
],
"_obstacles": [
{
"_type": 0,
"_time": 10,
"_duration": 5,
"_lineIndex": 1,
"_width": 1
}
],
"_events": [
{
"_time": 10,
"_type": 1,
"_value": 3
},
{
"_time": 10,
"_type": 5,
"_value": 1
},
{
"_time": 10,
"_type": 14,
"_value": 4
},
{
"_time": 15,
"_type": 15,
"_value": 4
},
{
"_time": 10,
"_type": 10,
"_value": 128
}
],
"_waypoints": [
{
"_time": 10,
"_lineIndex": 1,
"_lineLayer": 0,
"_offsetDirection": 1
}
],
"_specialEventsKeywordFilters": {
"_keywords": [
{
"_keyword": "SECRET",
"_specialEvents": [
40,
41,
42,
43
]
}
]
}
}
{
"_version": "2.5.0",
"_notes": [
{
"_time": 10,
"_lineIndex": 1,
"_lineLayer": 0,
"_type": 0,
"_cutDirection": 1
},
{
"_time": 10,
"_lineIndex": 1,
"_lineLayer": 0,
"_type": 3,
"_cutDirection": 0
}
],
"_obstacles": [
{
"_type": 0,
"_time": 10,
"_duration": 5,
"_lineIndex": 1,
"_width": 1
}
],
"_events": [
{
"_time": 10,
"_type": 1,
"_value": 3,
"_floatValue": 1
},
{
"_time": 10,
"_type": 5,
"_value": 1,
"_floatValue": 0
},
{
"_time": 10,
"_type": 14,
"_value": 4,
"_floatValue": 0
},
{
"_time": 15,
"_type": 15,
"_value": 4,
"_floatValue": 0
},
{
"_time": 10,
"_type": 100,
"_value": 0,
"_floatValue": 128
}
],
"_waypoints": [
{
"_time": 10,
"_lineIndex": 1,
"_lineLayer": 0,
"_offsetDirection": 1
}
],
"_specialEventsKeywordFilters": {
"_keywords": [
{
"_keyword": "SECRET",
"_specialEvents": [
40,
41,
42,
43
]
}
]
}
}
{
"_version": "2.6.0",
"_notes": [
{
"_time": 10,
"_lineIndex": 1,
"_lineLayer": 0,
"_type": 0,
"_cutDirection": 1
},
{
"_time": 10,
"_lineIndex": 1,
"_lineLayer": 0,
"_type": 3,
"_cutDirection": 0
}
],
"_obstacles": [
{
"_type": 2,
"_time": 10,
"_duration": 5,
"_lineIndex": 1,
"_lineLayer": 0,
"_width": 1,
"_height": 5
}
],
"_sliders": [
{
"_colorType": 1,
"_headTime": 10,
"_headLineIndex": 1,
"_headLineLayer": 0,
"_headCutDirection": 1,
"_headControlPointLengthMultiplier": 1,
"_tailTime": 20,
"_tailLineIndex": 2,
"_tailLineLayer": 2,
"_tailCutDirection": 0,
"_tailControlPointLengthMultiplier": 1,
"_sliderMidAnchorMode": 0
}
],
"_events": [
{
"_time": 10,
"_type": 1,
"_value": 3,
"_floatValue": 1
},
{
"_time": 10,
"_type": 5,
"_value": 1,
"_floatValue": 0
},
{
"_time": 10,
"_type": 14,
"_value": 4,
"_floatValue": 0
},
{
"_time": 15,
"_type": 15,
"_value": 4,
"_floatValue": 0
},
{
"_time": 10,
"_type": 100,
"_value": 0,
"_floatValue": 128
}
],
"_waypoints": [
{
"_time": 10,
"_lineIndex": 1,
"_lineLayer": 0,
"_offsetDirection": 1
}
],
"_specialEventsKeywordFilters": {
"_keywords": [
{
"_keyword": "SECRET",
"_specialEvents": [
40,
41,
42,
43
]
}
]
}
}
{
"version": "3.0.0",
"bpmEvents": [
{
"b": 10,
"m": 128
}
],
"rotationEvents": [
{
"b": 10,
"e": 0,
"r": 15
},
{
"b": 15,
"e": 1,
"r": 15
}
],
"colorNotes": [
{
"b": 10,
"x": 1,
"y": 0,
"c": 0,
"d": 1,
"a": 0
}
],
"bombNotes": [
{
"b": 10,
"x": 1,
"y": 0
}
],
"obstacles": [
{
"b": 10,
"d": 5,
"x": 1,
"y": 0,
"w": 1,
"h": 5
}
],
"sliders": [
{
"c": 0,
"b": 10,
"x": 1,
"y": 0,
"d": 1,
"mu": 1,
"tb": 15,
"tx": 2,
"ty": 2,
"tc": 0,
"tmu": 1,
"m": 0
}
],
"burstSliders": [
{
"c": 0,
"b": 10,
"x": 1,
"y": 0,
"d": 1,
"tb": 15,
"tx": 2,
"ty": 2,
"sc": 3,
"s": 0.5
}
],
"basicBeatmapEvents": [
{
"b": 10,
"et": 1,
"i": 3,
"f": 1
}
],
"colorBoostBeatmapEvents": [
{
"b": 10,
"o": true
}
],
"waypoints": [
{
"b": 10,
"x": 1,
"y": 0,
"d": 1
}
],
"basicEventTypesWithKeywords": {
"d": [
{
"k": "SECRET",
"e": [
40,
41,
42,
43
]
}
]
},
"lightColorEventBoxGroups": [
{
"b": 2,
"g": 0,
"e": [
{
"f": {
"f": 1,
"p": 1,
"t": 0,
"r": 0
},
"w": 1,
"d": 1,
"r": 1,
"t": 1,
"b": 1,
"e": [
{
"b": 0,
"i": 0,
"c": 1,
"s": 1,
"f": 0
}
]
}
]
}
],
"lightRotationEventBoxGroups": [
{
"b": 2,
"g": 0,
"e": [
{
"f": {
"f": 1,
"p": 1,
"t": 0,
"r": 0
},
"w": 1,
"d": 1,
"s": 1,
"t": 1,
"b": 1,
"a": 0,
"r": 1,
"l": [
{
"b": 0,
"p": 0,
"e": 1,
"r": 340,
"o": 1,
"l": 1
}
]
}
]
}
],
"useNormalEventsAsCompatibleEvents": false
}
{
"version": "3.1.0",
"bpmEvents": [
{
"b": 10,
"m": 128
}
],
"rotationEvents": [
{
"b": 10,
"e": 0,
"r": 15
},
{
"b": 15,
"e": 1,
"r": 15
}
],
"colorNotes": [
{
"b": 10,
"x": 1,
"y": 0,
"c": 0,
"d": 1,
"a": 0
}
],
"bombNotes": [
{
"b": 10,
"x": 1,
"y": 0
}
],
"obstacles": [
{
"b": 10,
"d": 5,
"x": 1,
"y": 0,
"w": 1,
"h": 5
}
],
"sliders": [
{
"c": 0,
"b": 10,
"x": 1,
"y": 0,
"d": 1,
"mu": 1,
"tb": 15,
"tx": 2,
"ty": 2,
"tc": 0,
"tmu": 1,
"m": 0
}
],
"burstSliders": [
{
"c": 0,
"b": 10,
"x": 1,
"y": 0,
"d": 1,
"tb": 15,
"tx": 2,
"ty": 2,
"sc": 3,
"s": 0.5
}
],
"basicBeatmapEvents": [
{
"b": 10,
"et": 1,
"i": 3,
"f": 1
}
],
"colorBoostBeatmapEvents": [
{
"b": 10,
"o": true
}
],
"waypoints": [
{
"b": 10,
"x": 1,
"y": 0,
"d": 1
}
],
"basicEventTypesWithKeywords": {
"d": [
{
"k": "SECRET",
"e": [
40,
41,
42,
43
]
}
]
},
"lightColorEventBoxGroups": [
{
"b": 2,
"g": 0,
"e": [
{
"f": {
"c": 1,
"f": 1,
"p": 1,
"t": 0,
"r": 0,
"n": 0,
"s": 0,
"l": 0,
"d": 0
},
"w": 1,
"d": 1,
"r": 1,
"t": 1,
"b": 1,
"e": [
{
"b": 0,
"i": 0,
"c": 1,
"s": 1,
"f": 0
}
]
}
]
}
],
"lightRotationEventBoxGroups": [
{
"b": 2,
"g": 0,
"e": [
{
"f": {
"c": 1,
"f": 1,
"p": 1,
"t": 0,
"r": 0,
"n": 0,
"s": 0,
"l": 0,
"d": 0
},
"w": 1,
"d": 1,
"s": 1,
"t": 1,
"b": 1,
"a": 0,
"r": 1,
"l": [
{
"b": 0,
"p": 0,
"e": 1,
"r": 340,
"o": 1,
"l": 1
}
]
}
]
}
],
"useNormalEventsAsCompatibleEvents": false
}
{
"version": "3.2.0",
"bpmEvents": [
{
"b": 10,
"m": 128
}
],
"rotationEvents": [
{
"b": 10,
"e": 0,
"r": 15
},
{
"b": 15,
"e": 1,
"r": 15
}
],
"colorNotes": [
{
"b": 10,
"x": 1,
"y": 0,
"c": 0,
"d": 1,
"a": 0
}
],
"bombNotes": [
{
"b": 10,
"x": 1,
"y": 0
}
],
"obstacles": [
{
"b": 10,
"d": 5,
"x": 1,
"y": 0,
"w": 1,
"h": 5
}
],
"sliders": [
{
"c": 0,
"b": 10,
"x": 1,
"y": 0,
"d": 1,
"mu": 1,
"tb": 15,
"tx": 2,
"ty": 2,
"tc": 0,
"tmu": 1,
"m": 0
}
],
"burstSliders": [
{
"c": 0,
"b": 10,
"x": 1,
"y": 0,
"d": 1,
"tb": 15,
"tx": 2,
"ty": 2,
"sc": 3,
"s": 0.5
}
],
"basicBeatmapEvents": [
{
"b": 10,
"et": 1,
"i": 3,
"f": 1
}
],
"colorBoostBeatmapEvents": [
{
"b": 10,
"o": true
}
],
"waypoints": [
{
"b": 10,
"x": 1,
"y": 0,
"d": 1
}
],
"basicEventTypesWithKeywords": {
"d": [
{
"k": "SECRET",
"e": [
40,
41,
42,
43
]
}
]
},
"lightColorEventBoxGroups": [
{
"b": 2,
"g": 0,
"e": [
{
"f": {
"c": 1,
"f": 1,
"p": 1,
"t": 0,
"r": 0,
"n": 0,
"s": 0,
"l": 0,
"d": 0
},
"w": 1,
"d": 1,
"r": 1,
"t": 1,
"b": 1,
"i": 0,
"e": [
{
"b": 0,
"i": 0,
"c": 1,
"s": 1,
"f": 0
}
]
}
]
}
],
"lightRotationEventBoxGroups": [
{
"b": 2,
"g": 0,
"e": [
{
"f": {
"c": 1,
"f": 1,
"p": 1,
"t": 0,
"r": 0,
"n": 0,
"s": 0,
"l": 0,
"d": 0
},
"w": 1,
"d": 1,
"s": 1,
"t": 1,
"b": 1,
"i": 0,
"a": 0,
"r": 1,
"l": [
{
"b": 0,
"p": 0,
"e": 1,
"r": 340,
"o": 1,
"l": 1
}
]
}
]
}
],
"lightTranslationEventBoxGroups": [
{
"b": 2,
"g": 0,
"e": [
{
"f": {
"c": 1,
"f": 1,
"p": 1,
"t": 0,
"r": 0,
"n": 0,
"s": 0,
"l": 0,
"d": 0
},
"w": 1,
"d": 1,
"s": 1,
"t": 1,
"b": 1,
"i": 0,
"a": 0,
"r": 1,
"l": [
{
"b": 0,
"p": 0,
"e": 1,
"t": 100
}
]
}
]
}
],
"useNormalEventsAsCompatibleEvents": false
}
{
"version": "3.3.0",
"bpmEvents": [
{
"b": 10,
"m": 128
}
],
"rotationEvents": [
{
"b": 10,
"e": 0,
"r": 15
},
{
"b": 15,
"e": 1,
"r": 15
}
],
"colorNotes": [
{
"b": 10,
"x": 1,
"y": 0,
"c": 0,
"d": 1,
"a": 0
}
],
"bombNotes": [
{
"b": 10,
"x": 1,
"y": 0
}
],
"obstacles": [
{
"b": 10,
"d": 5,
"x": 1,
"y": 0,
"w": 1,
"h": 5
}
],
"sliders": [
{
"c": 0,
"b": 10,
"x": 1,
"y": 0,
"d": 1,
"mu": 1,
"tb": 15,
"tx": 2,
"ty": 2,
"tc": 0,
"tmu": 1,
"m": 0
}
],
"burstSliders": [
{
"c": 0,
"b": 10,
"x": 1,
"y": 0,
"d": 1,
"tb": 15,
"tx": 2,
"ty": 2,
"sc": 3,
"s": 0.5
}
],
"basicBeatmapEvents": [
{
"b": 10,
"et": 1,
"i": 3,
"f": 1
}
],
"colorBoostBeatmapEvents": [
{
"b": 10,
"o": true
}
],
"waypoints": [
{
"b": 10,
"x": 1,
"y": 0,
"d": 1
}
],
"basicEventTypesWithKeywords": {
"d": [
{
"k": "SECRET",
"e": [
40,
41,
42,
43
]
}
]
},
"lightColorEventBoxGroups": [
{
"b": 2,
"g": 0,
"e": [
{
"f": {
"c": 1,
"f": 1,
"p": 1,
"t": 0,
"r": 0,
"n": 0,
"s": 0,
"l": 0,
"d": 0
},
"w": 1,
"d": 1,
"r": 1,
"t": 1,
"b": 1,
"i": 0,
"e": [
{
"b": 0,
"i": 0,
"c": 1,
"s": 1,
"f": 0,
"sb": 0,
"sf": 0
}
]
}
]
}
],
"lightRotationEventBoxGroups": [
{
"b": 2,
"g": 0,
"e": [
{
"f": {
"c": 1,
"f": 1,
"p": 1,
"t": 0,
"r": 0,
"n": 0,
"s": 0,
"l": 0,
"d": 0
},
"w": 1,
"d": 1,
"s": 1,
"t": 1,
"b": 1,
"i": 0,
"a": 0,
"r": 1,
"l": [
{
"b": 0,
"p": 0,
"e": 1,
"r": 340,
"o": 1,
"l": 1
}
]
}
]
}
],
"lightTranslationEventBoxGroups": [
{
"b": 2,
"g": 0,
"e": [
{
"f": {
"c": 1,
"f": 1,
"p": 1,
"t": 0,
"r": 0,
"n": 0,
"s": 0,
"l": 0,
"d": 0
},
"w": 1,
"d": 1,
"s": 1,
"t": 1,
"b": 1,
"i": 0,
"a": 0,
"r": 1,
"l": [
{
"b": 0,
"p": 0,
"e": 1,
"t": 100
}
]
}
]
}
],
"vfxEventBoxGroups": [
{
"b": 2,
"g": 0,
"e": [
{
"f": {
"c": 1,
"f": 1,
"p": 1,
"t": 0,
"r": 0,
"n": 0,
"s": 0,
"l": 0,
"d": 0
},
"w": 1,
"d": 1,
"s": 1,
"t": 1,
"b": 1,
"i": 0,
"l": [
0
]
}
]
}
],
"_fxEventsCollections": {
"_fl": [
{
"b": 0,
"p": 0,
"i": 1,
"v": 100
}
],
"_il": []
},
"useNormalEventsAsCompatibleEvents": false
}
{
"version": "4.0.0",
"colorNotes": [
{
"b": 10,
"r": 0,
"i": 0
}
],
"colorNotesData": [
{
"x": 1,
"y": 0,
"c": 0,
"d": 1,
"a": 0
},
{
"x": 2,
"y": 2,
"c": 0,
"d": 0,
"a": 0
}
],
"bombNotes": [
{
"b": 10,
"r": 0,
"i": 0
}
],
"bombNotesData": [
{
"x": 1,
"y": 0
}
],
"obstacles": [
{
"b": 10,
"r": 0,
"i": 0
}
],
"obstaclesData": [
{
"d": 5,
"x": 1,
"y": 0,
"w": 1,
"h": 5
}
],
"arcs": [
{
"hb": 10,
"tb": 15,
"hr": 0,
"tr": 0,
"hi": 0,
"ti": 1,
"ai": 0
}
],
"arcsData": [
{
"m": 1,
"tm": 1,
"a": 0
}
],
"chains": [
{
"hb": 10,
"tb": 15,
"hr": 0,
"tr": 0,
"i": 0,
"ci": 0
}
],
"chainsData": [
{
"tx": 2,
"ty": 2,
"c": 3,
"s": 0.5
}
],
"spawnRotations": [
{
"b": 10,
"i": 0
},
{
"b": 15,
"i": 1
}
],
"spawnRotationsData": [
{
"t": 0,
"r": 15
},
{
"t": 1,
"r": 15
}
]
}
Summary
Introduced in 1.0.0
- Note Jump metadata was relocated to the Info file.
Color Notes
A colored cube with an arrow on it, which can be pointed in 1 of 9 directions.
{
"_notes": [
{
"_time": 10.0, // Beat
"_lineIndex": 1, // Line Index
"_lineLayer": 0, // Line Layer
"_type": 0, // Color
"_cutDirection": 1, // Cut Direction
},
],
}
{
"colorNotes": [
{
"b": 10.0, // Beat
"x": 1, // Line Index
"y": 0, // Line Layer
"c": 0, // Color
"d": 1, // Cut Direction
"a": 0, // Angle Offset
},
],
}
{
"colorNotes": [
{
"b": 10.0, // Beat
"r": 0, // Rotation Lane
"i": 0, // Metadata Index
}
],
"colorNotesData": [
{
"x": 1, // Line Index
"y": 0, // Line Layer
"c": 0, // Color
"d": 1, // Cut Direction
"a": 0, // Angle Offset
}
]
}
Beat
A specific point in time, as determined by the BPM of the song, when this object should reach the player.
Rotation Lane
The degree of rotation relative to the player that this object should spawn from. This is typically reserved for beatmaps using the 360Degree
or 90Degree
characteristic.
Line Index
The horizontal row where the object should reside on the grid.
The indices run from 0
to 3
, with 0
being the left-most lane.
Line Layer
The vertical column where the object should reside on the grid.
The indices run from 0
to 2
, with 0
being the bottom-most lane.
Color
Indicates which saber should be able to successfully cut the note.
Value | Result |
---|---|
0 | Left Saber |
1 | Right Saber |
Cut Direction
Indicates the direction the player should swing to successfully cut the note.
Value | Result |
---|---|
0 | Up |
1 | Down |
2 | Left |
3 | Right |
4 | Up Left |
5 | Up Right |
6 | Down Left |
7 | Down Right |
8 | Any |
Angle Offset
A value (in degrees) which applies a counter-clockwise rotational offset to the note's cut direction.
INFO
This property is ignored for notes affected by snapping (such as stacks and slanted windows).
Bomb Notes
A spiked sphere that the player needs to avoid with their sabers.
TIP
In v2 and earlier, any notes with a _type
set to 3
will be parsed as a bomb note.
{
"_notes": [
{
"_time": 10.0, // Beat
"_lineIndex": 1, // Line Index
"_lineLayer": 0, // Line Layer
"_type": 3,
"_cutDirection": 0, // Direction
}
]
}
{
"bombNotes": [
{
"b": 10.0, // Beat
"x": 1, // Line Index
"y": 0, // Line Layer
},
],
}
{
"bombNotes": [
{
"b": 10.0, // Beat
"r": 0, // Rotation Lane
"i": 0, // Metadata Index
}
],
"bombNotesData": [
{
"x": 1, // Line Index
"y": 0, // Line Layer
}
]
}
Beat
A specific point in time, as determined by the BPM of the song, when this object should reach the player.
Rotation Lane
The degree of rotation relative to the player that this object should spawn from. This is typically reserved for beatmaps using the 360Degree
or 90Degree
characteristic.
Line Index
The horizontal row where the object should reside on the grid.
The indices run from 0
to 3
, with 0
being the left-most lane.
Line Layer
The vertical column where the object should reside on the grid.
The indices run from 0
to 2
, with 0
being the bottom-most lane.
Obstacles
{
"_obstacles": [
{
"_type": 0, // Type
"_time": 10.0, // Beat
"_duration": 5.0, // Duration
"_lineIndex": 1, // Line Index
"_width": 1, // Width
}
]
}
{
"_obstacles": [
{
"_type": 2, // Type
"_time": 10.0, // Beat
"_duration": 5.0, // Duration
"_lineIndex": 1, // Line Index
"_lineLayer": 0, // Line Layer
"_width": 1, // Width
"_height": 5, // Height
},
],
}
{
"obstacles": [
{
"b": 10.0, // Beat
"d": 5.0, // Duration
"x": 1, // Line Index
"y": 0, // Line Layer
"w": 1, // Width
"h": 5, // Height
},
],
}
{
"obstacles": [
{
"b": 10.0, // Beat
"r": 0, // Rotation Lane
"i": 0, // Metadata Index
}
],
"obstaclesData": [
{
"d": 5.0, // Duration
"x": 1, // Line Index
"y": 0, // Line Layer
"w": 1, // Width
"h": 5, // Height
}
]
}
Beat
A specific point in time, as determined by the BPM of the song, when this object should reach the player.
Rotation Lane
The degree of rotation relative to the player that this object should spawn from. This is typically reserved for beatmaps using the 360Degree
or 90Degree
characteristic.
Type
Determines the vertical bounds of the walls in legacy schemas.
If this value is set to 2
, the Line Layer and Height values must be provided for the walls to function correctly.
Value | Result |
---|---|
0 | "Full-Height" Walls |
1 | "Crouch" Walls |
2 | "Free" Walls (v3-like) |
WARNING
This field is removed in v3 and later, in favor of a more flexible data structure. To convert legacy walls to the newer syntax, you can use these following conversions:
- For "full-height" walls, set the Line Layer to
0
and the Height to5
. - For "crouch" walls, set the Line Layer to
2
and the Height to3
.
Duration
A value (in beats) that determines how long the obstacle extends for.
WARNING
Setting this field to a negative value may produce unstable behavior.
Line Index
The horizontal row where the object should reside on the grid.
The indices run from 0
to 3
, with 0
being the left-most lane.
Line Layer
The vertical column where the object should reside on the grid.
The indices run from 0
to 2
, with 0
being the bottom-most lane.
Width
An integer value which represents how many columns the obstacle should take up on the grid.
WARNING
Setting this field to a negative value may produce unstable behavior.
Height
An integer value which represents how many rows the obstacle should take up on the grid. The range of acceptable values runs from 1 to 5.
WARNING
Setting this field to a negative value may produce unstable behavior.
Arcs
A beam of light that will automatically magnetize to the saber, which is used for representation of sustained sounds or telegraphs for specific setups.
If the head or tail of an arc matches a note's time and position, then the arc will connect with the note and alter how the note is scored.
TIP
In v4, the metadata for the head and tail notes are pulled from the Color Notes collection.
{
"_sliders": [
{
"_colorType": 1, // Color
"_headTime": 10.0, // Head Beat
"_headLineIndex": 1, // Head Line Index
"_headLineLayer": 0, // Head Line Layer
"_headCutDirection": 1, // Head Cut Direction
"_headControlPointLengthMultiplier": 1.0, // Head Control Point Length Multiplier
"_tailTime": 20.0, // Tail Beat
"_tailLineIndex": 2, // Tail Line Index
"_tailLineLayer": 2, // Tail Line Layer
"_tailCutDirection": 0, // Tail Cut Direction
"_tailControlPointLengthMultiplier": 1.0, // Tail Control Point Length Multiplier
"_sliderMidAnchorMode": 0, // Mid-Anchor Mode
}
]
}
{
"sliders": [
{
"c": 0, // Color
"b": 10.0, // Head Beat
"x": 1, // Head Line Index
"y": 0, // Head Line Layer
"d": 1, // Head Cut Direction
"mu": 1.0, // Head Control Point Length Multiplier
"tb": 15.0, // Tail Beat
"tx": 2, // Tail Line Index
"ty": 2, // Tail Line Layer
"tc": 0, // Tail Cut Direction
"tmu": 1.0, // Tail Control Point Length Multiplier
"m": 0, // Mid-Anchor Mode
},
],
}
{
"arcs": [
{
"hb": 10.0, // Head Beat
"tb": 15.0, // Tail Beat
"hr": 0, // Head Rotation Lane
"tr": 0, // Tail Rotation Lane
"hi": 0, // Head Note Metadata Index
"ti": 1, // Tail Note Metadata Index
"ai": 0, // Arc Metadata Index
},
],
"colorNotesData": [
{
"x": 1, // Head Line Index
"y": 0, // Head Line Layer
"c": 0, // Color
"d": 1, // Head Cut Direction
"a": 0,
},
{
"x": 2, // Tail Line Index
"y": 2, // Tail Line Layer
"c": 0, // Color
"d": 0, // Tail Cut Direction
"a": 0,
},
],
"arcsData": [
{
"m": 1.0, // Head Control Point Length Multiplier
"tm": 1.0, // Tail Control Point Length Multiplier
"a": 0, // Mid-Anchor Mode
},
],
}
Beat
A specific point in time, as determined by the BPM of the song, when the head/tail should reach the player.
Rotation Lane
The degree of rotation relative to the player that the head/tail should spawn from. This is typically reserved for beatmaps using the 360Degree
or 90Degree
characteristic.
Line Index
The horizontal row where the head/tail should reside on the grid.
The indices run from 0
to 3
, with 0
being the left-most lane.
Line Layer
The vertical column where the head/tail should reside on the grid.
The indices run from 0
to 2
, with 0
being the bottom-most lane.
Color
Indicates which saber this arc should attach to.
Value | Result |
---|---|
0 | Left Saber |
1 | Right Saber |
Cut Direction
Indicates the direction the head/tail should curve from relative to the note it's attached to.
Value | Result |
---|---|
0 | Up |
1 | Down |
2 | Left |
3 | Right |
4 | Up Left |
5 | Up Right |
6 | Down Left |
7 | Down Right |
8 | No Curve |
Control Point Length Multiplier
A value that controls the magnitude of the curve approaching the head/tail respectively.
If the Cut Direction is set to 8
, this value is ignored.
Mid-Anchor Mode
A value that determines how the arc curves from the head/tail to the midpoint of the arc.
The following conditions must be met for this effect to be rendered properly:
- The Line Index of the head and tail must be equal.
- The Cut Direction of the head and tail must be equal OR have an angle difference of 180 degrees.
Value | Result |
---|---|
0 | Straight |
1 | Clockwise |
2 | Counter-Clockwise |
Chains
A staggered set of tubes that require the player to slice through them in succession, which are used to represent burst-like sounds.
If the head of a chain matches a note's time and position, then the chain will connect with the note and alter how the note is scored.
TIP
In v4, the metadata for the head note is pulled from the Color Notes collection.
{
"burstSliders": [
{
"c": 0, // Color
"b": 10.0, // Head Beat
"x": 1, // Head Line Index
"y": 0, // Head Line Layer
"d": 1, // Head Cut Direction
"tb": 15.0, // Tail Beat
"tx": 2, // Tail Line Index
"ty": 2, // Tail Line Layer
"sc": 3, // Slice Count
"s": 0.5, // Squish Factor
},
],
}
{
"chains": [
{
"hb": 10.0, // Head Beat
"tb": 15.0, // Tail Beat
"hr": 0, // Head Rotation Lane
"tr": 0, // Tail Rotation Lane
"i": 0, // Head Note Metadata Index
"ci": 0, // Chain Metadata Index
},
],
"colorNotesData": [
{
"x": 1, // Head Line Index
"y": 0, // Head Line Layer
"c": 0, // Color
"d": 1, // Head Cut Direction
},
],
"chainsData": [
{
"tx": 2, // Tail Line Index
"ty": 2, // Tail Line Layer
"c": 3, // Slice Count
"s": 0.5, // Squish Factor
},
],
}
Beat
A specific point in time, as determined by the BPM of the song, when the head/tail should reach the player.
Rotation Lane
The degree of rotation relative to the player that the head/tail should spawn from. This is typically reserved for beatmaps using the 360Degree
or 90Degree
characteristic.
Line Index
The horizontal row where the head should reside on the grid.
The indices run from 0
to 3
, with 0
being the left-most lane.
Line Layer
The vertical column where the head should reside on the grid.
The indices run from 0
to 2
, with 0
being the bottom-most lane.
Color
Indicates which saber should be able to successfully cut the chain.
Value | Result |
---|---|
0 | Left Saber |
1 | Right Saber |
Cut Direction
Indicates the direction the player should swing to successfully cut the head of the chain.
Value | Result |
---|---|
0 | Up |
1 | Down |
2 | Left |
3 | Right |
4 | Up Left |
5 | Up Right |
6 | Down Left |
7 | Down Right |
8 | Down |
WARNING
A value of 8
will change the visual look of the head note to a dot as expected, but its cut direction will still point downwards.
Slice Count
An integer value which represents the number of segments in the chain. The head counts as a segment.
WARNING
A value of 1
will create a chain with no links, but will still affect the visual look and scoring potential of the head note.
Squish Factor
An integer value which represents the proportion of how much of the path from (x, y)
to (tx, ty)
is used by the chain. This does not alter the shape of the path.
Any value greater than 1
will extend the path beyond the specified end point.
DANGER
A value of 0
will crash the game.
Spawn Rotations
Allows you to rotate the position where interactable objects should spawn.
INFO
While these events are technically available in v4, they are assumed to be deprecated in favor of a new object-level syntax for assigning lane rotations to individual objects.
{
"_events": [
{
"_time": 10.0, // Beat
"_type": 14, // Execution Time
"_value": 4, // Value
},
{
"_time": 15.0, // Beat
"_type": 15, // Execution Time
"_value": 4, // Value
},
],
}
{
"rotationEvents": [
{
"b": 10.0, // Beat
"e": 0, // Execution Time
"r": 15.0, // Magnitude
},
{
"b": 15.0, // Beat
"e": 1, // Execution Time
"r": 15.0, // Magnitude
},
],
}
{
"spawnRotations": [
{
"b": 10.0, // Beat
"i": 0, // Metadata Index
},
{
"b": 15.0, // Beat
"i": 1, // Metadata Index
},
],
"spawnRotationsData": [
{
"t": 0, // Execution Time
"r": 15.0, // Magnitude
},
{
"t": 1, // Execution Time
"r": 15.0, // Magnitude
},
],
}
Beat
A specific point in time, as determined by the BPM of the song, when this event should produce its effect.
Execution Time
Determines when the lane rotation will be applied to interactable objects placed on the same beat as this event.
In v2 or earlier, these effects will be applied to basic event types 14
and 15
respectively.
Value | Result | Behavior |
---|---|---|
0 | Early | The objects will change lanes at the same time as this event. |
1 | Late | The objects will remain in its original lane. |
Magnitude
Controls the magnitude and direction of the lane rotation.
A negative value will turn the player counter-clockwise, and a positive value will turn clockwise.
INFO
For v2, the magnitude is determined by an enumerated value, of which all possible values are listed in the corresponding table for Basic Events.
BPM Events
Allows you to alter the BPM of the chart at the indicated time.
INFO
These events are deprecated in v4 or later, in favor of automated BPM calculations as determined by the Audio file.
{
"_events": [
{
"_time": 10, // Beat
"_type": 100,
"_value": 0, // UNUSED
"_floatValue": 128.0, // BPM
},
],
}
{
"bpmEvents": [
{
"b": 10.0, // Beat
"m": 128.0, // BPM
},
],
}
Beat
A specific point in time, as determined by the BPM of the song, when this event should produce its effect.
BPM
Alters the BPM to the defined value at the indicated beat.
Lightshow
As of v4, all non-interactable beatmap objects have been migrated to the Lightshow file. As such, information pertaining to these events have been moved to those pages for better consolidation of scope.