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