-
Notifications
You must be signed in to change notification settings - Fork 2
Chart Format
##.chart format## .chart files are .xml files with formatted text blocks for events. The outline of a .chart is as follows:
<chart version="2.0">
<id>lacuna_coil-our_truth</id>
<name>Our Truth</name>
<artist>Lacuna Coil</artist>
<album>Karmacode</album>
<year>2006</year>
<genre>Gothic Rock</genre>
<params>
<param key="icon">ghwt</param>
</params>
<resolution>480</resolution>
<startOffset>0</startOffset>
<sync>
...sync events...
</sync>
<events>
...global events...
</events>
<parts>
<part name="leadguitar">
<events>
...guitar track events...
</events>
<variation>
<hasCoopMarkers>true</hasCoopMarkers>
<difficulty level="Easy" meter="0">
<sequence>
...note sequence events...
</sequence>
</difficulty>
</variation>
</part>
<part name="drums">
<events>
...drum track events...
</events>
<variation type="rb-drums">
<difficulty level="Easy" meter="0">
<sequence>
...note sequence events...
</sequence>
</difficulty>
</variation>
</part>
</parts>
</chart>
<part name="type">
defines the part type, which are instrument-specific, and affect how the events in the tracks are interpreted.
Part names that exist currently are:
-
leadguitar
,rhythmguitar
,bass
- Parts for standard GH/RB guitar controllers. -
drums
- General drum parts; can be played by GH/RB drum controllers, or MIDI based drum kits. -
keyboard
,realkeyboard
- Analogous to RB's '5 keys' and 'Pro'/full MIDI keyboard parts. -
realleadguitar
,realrhythmguitar
,realbass
- Full-notation parts for real guitar/bass instruments. -
vocals
- Vocal parts for microphones. -
dance
- Parts for dance controllers (Ie, Dance Dance Revolution/Pump It Up). -
beatmania
- Parts for BeatMania controllers.
Variations may also have types, for instance <variation type="rb-drums">
. Some instruments have a high degree of variability, in which case it is possible to chart out multiple versions of tracks that suit different variations of the instruments.
The instruments that have variation types are:
-
drums
variations:-
rb-drums
- Standard 4-pad Rock Band drums. -
gh-drums
- Standard 3-pad + 2-cymbal Guitar Hero drums. -
pro-drums
- Rock Band 'pro' drums, 4-pads + 3-cymbals. -
real-drums
- For full MIDI drum kits, with 4-pads, 3-cymbals, and a separate hi-hat. -
real-drums-2c
- A variation ofreal-drums
for MIDI kits that only have 2 cymbals + hi-hat.
-
-
dance
variations:-
dance-single
,dance-double
,dance-couple
- Standard 4-panel DDR tracks. -
dance-solo
- DDR 'solo' tracks, which have 6 panels (additional up-left and up-right panels). -
pump-single
,pump-double
,pump-couple
- 'Pump It Up' 5-pad tracks (diagonals + center). -
dance-8pad-single
,dance-8pad-double
- 8-panel dance mat tracks. -
dance-9pad-single
,dance-9pad-double
- 9-panel dance mat tracks.
-
The tracks are populated with a sequence of text events. All events are in the form:
offset E x [y z]
Where offset
is the offset from the previous event, in ticks. If offset is 0
, then the event has the same time as the prior event.
E
is the event code.
x
, and optionally y
, z
are event parameters, which have different meaning for each event.
The list of events found in the <sync>
section are:
-
B nnn[.nnn]
- BPM change,nnn
is the number of milliseconds per beat (may not be an integer). To calculate the BPM, usebpm = 60000/nnn
. -
A
- Places an anchor at the current offset. Anchor's are used when editing to automate BPM changes between anchor points. They have no in-game effect. -
F nnn[.nnn]
- Freeze fornnn
milliseconds. -
TS n/d
- Time signature.n
is the numerator,d
is the denominator.
Events that may only appear in note tracks:
-
N key [f##] [l##]
- Gameplay note.key
is the key to trigger relative to the instrument type.f##
is an optional 'flags' field, which stores additional details relating to the note.l##
is an optional length for hold notes, in ticks. -
G string:fret [f##] [l##]
- Real-guitar/bass note.string
is the string,fret
is the fret.f##
is an optional 'flags' field, which stores additional details relating to the note.l##
is an optional length for hold notes, in ticks. -
S type [l##]
- Special event.type
is a special event type, andl##
is a length to hold the event, in ticks. -
L `lyrics` [l##]
- Lyric line.l##
is an optional length for the event, in ticks. Notice the use of`
back ticks; this allows strings to contain'
and"
conveniently without escaping.
The remaining event types are usually found in part <event>
tracks, but may also appear in individual note tracks.
-
E `event text` [l##]
- Text event. These are used for storing many kinds of game-specific events.l##
is an optional length for the event, in ticks. Notice the use of`
back ticks; this allows strings to contain'
and"
conveniently without escaping. -
SN `name`
- Song section name. -
DA i
- Drum Animation.i
is an integer id for the drum animation to trigger. -
C i
- Chord.i
is an integer id for the chord. -
NP i
- Neck Position. Songs without a 'real guitar' part may specify neck position events for the player animations. -
I `effect`
- Lighting event. Trigger a named lighting effect. -
DC `cut_name`
- Directed cut. Triggers a directed camera cut. -
M s n v [l##]
- MIDI event.s
is the status byte (in hex),n
is the midi note,v
is the velocity byte,l##
is an optional length for the event, in ticks. Midi events of the pattern note-down (90h) followed by a note-up (80h) will be re-interpreted as a single note-down event with a given length in ticks.