Skip to content

SSC format

Rodrigo Alfonso edited this page Sep 8, 2020 · 42 revisions

Header properties

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

Chart properties

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 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 the combo ticks of hold notes.

Beat => Denominator (4 = quarter note, 8 = eighth note, etc.)
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)

Fast BPM Warps

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...

Formats

Dictionary

KEY=VALUE separated by ,

Object

Like Dictionary, but separated by ,,,

Quad Dictionary

KEY=VALUE=PARAM1=PARAM2 separated by ,

Example

#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,,,
NEGATIVECOLORS=ON,,,
RANDOMSPEED=ON,,,
EXTRAJUDGEMENT=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;
// ...
Clone this wiki locally