---
# System prepended metadata

title: Revised SSF Format

---

# Revised SSF Format

## Metadata

File **must** begin with a version number:
The current format proposed in this document is:
```#VERSION 1.0```

BPM Changes have a new format:
```#BPMCii: mmm.ddd```
where:
`ii` = the two digit ID of the BPM change as identified in the `#BPM` statements, in base36
`mmm` = the measure of the change starting at 0, in base10
`ddd` = the fraction of a measure, in 1/192nds

The rest is the same as the current .ssf format, with the exception that comments must now begin with `//`.

## Notes

*General Notes:*
Leading zeroes are not strictly required, but suggested stylistically.

Begin note block with the command:
```#NOTES```
and escape the note block with:
```#ENDNOTES```

### Measures

Notes are organized into measures, denoted simply by the measure number:
```mmm```
Starting at 0, in base10

### Note Data

All notes begin with:
```ddd:```
where:
`ddd` = fraction of a measure, in 1/192nds

After the colon, one or more notes can be defined as space separated values.

Note classes 0 and 1 (Steps) are defined as:
```clw```
where:
`c` = note class, in hex
`l` = lane (starting from the left at 0), in hex
`w` = note width (in number of lanes - 1), in hex

Note classes 2 and 3 (Downs and Jumps) do not require `l` or `w`. If input, they will be ignored.

Note classes 4 and above require ID numbers and are defined as:
```cilw```
where:
`c` = note class, in hex
`i` = note ID, in base36
`l` = lane (starting from the left at 0), in hex
`w` = note width (in number of lanes - 1), in hex

For Simple Shuffle Notes, the lane and note width input are taken to be the ending note and the start note shall correspond to the previously defined lane and note width.

Complex Shuffle Notes are defined as:
```cilwLW```
where:
`c` = note class, in hex
`i` = note ID, in base36
`l` = starting lane (starting from the left at 0), in hex
`w` = starting note width (in number of lanes - 1), in hex
`L` = ending lane (starting from the left at 0), in hex
`W` = ending note width (in number of lanes - 1), in hex


### List of note classes:

|Note Class| Description |
| :---: | --- |
| 0 | Left Step |
| 1 | Right Step |
| 2 | Up (lane and width are not necessary) |
| 3 | Down (lane and width are not necessary) |
| 4 | Left Hold/Slide Start |
| 5 | Right Hold/Slide Start |
| 6 | Slide Waypoint (side determined by matching ID) |
| 7 | Hold/Slide End (side determined by matching ID) |
| 8 | Simple Shuffle Waypoint (side determined by matching ID) |
| 9 | Complex Shuffle Waypoint (side determined by matching ID) |
| A | Simple Shuffle End (side determined by matching ID) |
| B | Complex Shuffle End (side determined by matching ID) |