c2s (CHUNITHM) format
===
## Base Format
Standard unicode
At least for semantics, seperate by empty new line. Unknown if system cares.
Blocks:
Header
BPM/Measures
Notes
Meta
Empty (single empty line)
All charts end with 2 empty lines.
All fields in form `NAME ARG1 ARG2 ARGX...` with each field generally seperated by tab but can have extra space to align E.G. `PROGJUDGE_BPM`, `PROGJUDGE_AER`.
Data types:
```
STR String
INT Integer (unsigned)
FLT Float (must have decimal part)
TYP Valid type of note
```
`[XXX]` means optional
## Block - Header
Each field should appear only once in this order.
```
VERSION STR UNKNOWN1 STR UNKNOWN2
appears to be major.minor.build style, fields may not be same
either 1=2 or 1 is 0.00.00 with older
MUSIC INT MUSICID
may hold the music ID (old) or 0 (new)
SEQUENCEID INT UNKNOWN
always 0?
DIFFUCLT INT DIFFNUM
may hold difficulty number (old) or 0 (new)
3 - mas, 1 - adv, etc
LEVEL FLT UNKNOWN
always 0.0?
CREATOR STR NAME
chart creator name - jp encoded directly w/ unicode
BPM_DEF FLT BPM1 FLT BPM2 FLT BPM3 FLT BPM4
why are there 4 copies? no one knows (yet)
BPM for showing
MET_DEF INT METER_HIGH INT METER_LOW
song time meter - high/low
meter for showing
RESOLUTION INT PARTS
like other formats defines parts in a measure - 384 means 96 per beat
CLK_DEF INT UNKNOWN
unknown
PROGJUDGE_BPM FLT UNKNOWN
maybe defines something with the judge timing?
always 240.000?
PROGJUDGE_AER FLT UNKNOWN
like above? aligned with 2 spaces to it also
always 0.999?
TUTORIAL INT UNKNOWN
always 0?
```
## Block - BPM/Measures
While the display BPM/measures are defined in header, this is where the in-game effect is and allows change of bpm/etc.
Each field can appear any number of times, ordered by position in song.
```
BPM INT MEASURE INT TIME FLT BPM
indicates a bpm at the specified measure/time
MET INT MEASURE INT TIME INT METER_HIGH INT METER_LOW
indicates a measure change to high/low at the specified measure/time
```
## Block - Notes
All these take the following common arguments as the first four:
```
INT MEASURE
measure at which the note starts
INT TIME
time in the measure at which the note starts
reflected as RESOLUTION*TIME number of parts in
INT POSITION
number of the column on which the note's left part touches
0-indexed, 16 columns total
INT SIZE
number of columns the note spans
```
Each field can appear any number of times, ordered by position in song.
```
TAP
gee I wonder
CHR [STR DIRECTION]
yellow taps - DIRECTION meaning unknown
AIR TYP MASTER
AIR note - seperate from hit/etc note if the re is one
inherits/acts like MASTER
AHD TYP MASTER INT LENGTH
AIR HOLD - AIR+HLD
do air chains with AHD type master
AUL TYP MASTER
AIR upper left
AUR TYP MASTER
AIR upper right
ADW TYP MASTER
AIR down straight
ADL TYP MASTER
AIR down left
ADR TYP MASTER
AIR down right
FLK STR UNKNOWN
flick - UNKNOWN possibly L/R, only seen L tho
HLD INT LENGTH
hold note that ends after LEN parts at RESOLUTION
SLD INT LENGTH INT END_POS INT END_SIZE
linear slide that ends at END_POS/END_SIZE after LEN parts at RESOLUTION
SLC INT LENGTH INT END_POS INT END_SIZE
slide chain - same as slide but not start
MNE
mine
```
## Block - Meta
Who cares11111