-
Notifications
You must be signed in to change notification settings - Fork 6
SSC format
Field | Type | Description |
---|---|---|
TITLE |
String | Id of the song |
SUBTITLE |
String | Name of the song |
ARTIST |
String | Author of the song |
SONGCATEGORY |
One of ORIGINAL , K-POP , WORLD MUSIC
|
Channel of the song |
LASTSECONDHINT |
Number | (Optional) Timestamp (in seconds) when the song ends. Used when songs have a trailing silence |
PIUGBA |
Object | (Optional) Custom configuration of the song. See the example below |
Field | Type | Description |
---|---|---|
DESCRIPTION |
String | Name of the chart. Used by the importer |
DIFFICULTY |
One of NORMAL , HARD , CRAZY , NUMERIC
|
Named difficulty level |
METER |
Int | Numeric difficulty level |
PIUGBA_ORDER |
Int |
(Optional) METER override for sorting purposes |
OFFSET |
Number | Audio offset (in seconds) from the chart notes. If positive, audio starts after the chart |
BPMS |
Dictionary | Dictionary with all the BPM changes. Beat => BPM |
SPEEDS |
Quad Dictionary | Speed factors that affect display BPM. Beat => Percent (scroll factor) => Delay (a value of 1 will make it linearly scale from the current scroll speed to the new one in 1 beat/second) => Unit (0 = delay is in beats, 1 = delay is in seconds) |
TICKCOUNTS |
Dictionary | Affects how often a hold note will fire a combo tick. The figure will be 4 * the number (i.e. 2 means one tick every 8th note, 4 means one tick every 16th note) Beat => Multiplier |
STOPS |
Dictionary | Completely stops the scrolling and affects all the next events. Beat => Length (in seconds) |
DELAYS |
Dictionary | Same as STOPS
|
SCROLLS |
Dictionary | Sets the scrolling ON or OFF, without affecting all the next events. Used to fake stops (also called "async stops"). Beat => Enabled (0 = no, 1 = yes) |
WARPS |
Dictionary | Teleports to another part of the chart. Beat => Jump (in beats) |
FAKES |
Dictionary | Notes during this segment won't be counted for or against players. Beat => Length (in beats) |
Notes |
Event array | The actual notes of the song. |
If a BPM
segment sets BPM to anything higher than 9999999
, StepMania interprets it as a warp to the next BPM change. If there're STOPS
/DELAYS
in the middle, it stops and then continues warping so it can create stuttering effects like warp-stop-warp-stop-warp-stop...
KEY=VALUE
separated by ,
Like Dictionary
, but separated by ,,,
KEY=VALUE=PARAM1=PARAM2
separated by ,
Note data is defined in terms of "measures" where a measure is several lines of text, terminated by a comma. The final measure in a chart is terminated by a semicolon instead. Each line consists of a set of characters representing each playable column in the chart type.
Valid note types are 4th, 8th, 12th, 16th, 24th, 32nd, 48th, 64th, and 192nd. Each measure consists of a number of lines that corresponds to one of these numbers. The total number of beats covered by any given measure is 4, and each line represents a portion of that. If a measure has 64 lines, for example, each line represents 1/64th of those 4 beats, or 1/16th of a beat, with the first line representing beat 0 within the measure. The note type of a given line can be determined by taking said beat value, dividing by 4, and then simplifying the fraction as much as possible and looking at the denominator. If the denominator is 96, 192 is used as the note type instead.
-
0
– No note -
1
– Normal note -
2
– Hold head -
3
– Hold tail
#TITLE:230;
#SUBTITLE:Name of the song;
#ARTIST:Author of the song;
#SONGCATEGORY:WORLD MUSIC;
#LASTSECONDHINT:99.002441;
#SAMPLESTART:27.322994;
#SAMPLELENGTH:15.000004;
#PIUGBA:
APPLY_TO=101,,,
IS_BOSS=TRUE,,,
PIXELATE=BLINK_IN,,,
JUMP=ON,,,
REDUCE=RANDOM,,,
DECOLORIZE=INVERT,,,
RANDOMSPEED=ON,,,
MESSAGE=
This is a message to be
read before the song.
The maximum is 25 cols,
4 lines between \r\n.
;
# APPLY_TO = Indicates what campaign modes are affected by those options (101 means "NORMAL & CRAZY, but not HARD").
# IS_BOSS = Changes the song's channel to BOSS
# Other chart properties can be here, e.g.: BPMS, STOPS, etc.
# They serve as a default value when a chart doesn't include them
//---------------pump-single - chart name ----------------
#DESCRIPTION:s8 Pro;
#DIFFICULTY:NUMERIC;
#METER:8;
#OFFSET:0.003000;
#BPMS:0.000000=158.000000
,156.000000=197.500000
,158.000000=237.000000
,160.000000=276.500000
,162.000000=316.000000
,176.000000=276.500000
,178.000000=237.000000
,180.000000=197.500000
,182.000000=158.000000
,184.000000=118.500000
,185.000000=104.500000
,186.000000=158.000000
;
#STOPS:186.000000=3.038000
;
#DELAYS:;
#WARPS:;
#TICKCOUNTS:0.000000=4
;
#SPEEDS:0.000000=1.000000=0.000000=0
;
#SCROLLS:0.000000=1.000000
;
#FAKES:;
#NOTES:
// measure 0
00000
01100
00001
00000
, // measure 1
00000
00200
00000
00000
, // measure 2
00000
00000
00000
00300
//---------------pump-single - another chart ----------------
#DESCRIPTION:s19;
#DIFFICULTY:CRAZY;
#METER:19;
#OFFSET:0.003000;
// ...