Skip to main content
Most songs need none of these keys. A chart written the way it should play reads the same in every game without them:
Here the drums are 5-lane, though their notes don’t show it, and the background video skips its first 1.5 seconds.

Drum type

Drums gives how a scanner decides the drum type. Recommended: leave both keys out when the notes already give the type, and set one only when they don’t. False means the same as leaving the key out: scan-chart reports False as defaultIniValue with its styleNotes option, and fixIssues removes it. scan-chart reports a key that sets the type the notes already give as redundantDrumType, and fixIssues removes it. Required: not both five_lane_drums = True and pro_drums = True.

Sustains and chords

  • How notes resolve gives what each one does. Without sustain_cutoff_threshold, a .chart file has no cutoff, and a .mid file has a default cutoff of about a third of a beat.
  • Required: a sustain_cutoff_threshold of 0 or more in a .mid song.
  • Recommended: leave both out of a new chart, and write each sustain and each chord as it should play. Charts that set them stay valid.
  • scan-chart’s converter writes sustain_cutoff_threshold when it converts a .chart file to .mid, so that sustains the .mid default would cut keep their length.

Background video

Without it, the video starts at its beginning. Clone Hero’s song settings menu writes this key when a player changes it.

Deprecated

Older charts use these keys, and a scanner still reads them, so that those charts play as they always have. An exporter writes the chart so that it plays as it should without them, except for multiplier_note = 116 in the edge case below. Removing a key changes how the chart plays, unless the chart changes with it. A TrackHash holds the track as a scanner reads it, not these keys: see What the TrackHash holds that games ignore. So a chart rewritten to read the same without a key keeps its TrackHashes and its SongHash. Removing a key without rewriting the chart changes a TrackHash only where the track then reads differently, such as multiplier_note = 103 in a track with star power.
  • delay, in whole milliseconds: Clone Hero moves every note this much later against the audio, or earlier when it’s negative. YARG reads it too. A delay of 0 means not set, and a .chart file’s Offset applies instead: see [Song]. Line the notes up with the tempo map and the audio’s leading silence instead. Removing delay moves every note in time, so the chart or the audio has to change with it. Clone Hero’s song settings menu writes delay when a player changes the song’s offset.
  • hopo_frequency and eighthnote_hopo change the HOPO threshold: see How notes resolve. A hopo_frequency of 0 or less means not set. Force the notes that should be strums or HOPOs instead. scan-chart’s fixIssues, and its saving of an edited song, force each note whose strum or HOPO the keys change, and remove the keys. Every TrackHash and the SongHash stay the same.
  • multiplier_note, 103 or 116: the MIDI note that marks star power in a .mid file’s 5-fret, 6-fret and keys tracks, and in YARG also in its drums track. A .chart file ignores it. Required: 103 or 116.
    • With 103, a scanner reads note 103 as star power in those tracks, and ignores note 116 there. Move the star power phrases to note 116 instead, and remove the key. scan-chart’s fixIssues, and its saving of an edited song, do so.
    • With 116, a scanner reads note 116 as star power and note 103 as solos in those tracks. Without the key, it does the same, except in the tracks the edge case below describes.
    • scan-chart reports star power that multiplier_note makes a scanner ignore as badStarPower.
  • pro_drum and star_power_note, older names for pro_drums and multiplier_note. A scanner reads one only when the main key isn’t in the file. YARG reads them as the main keys too, but when a file holds both names, it uses whichever line comes later. Write pro_drums instead of pro_drum, and treat star_power_note as multiplier_note above. scan-chart’s fixIssues, and its saving of an edited song, rename them.
  • frets and track, older names for charter and album_track: see Metadata.
Edge case: multiplier_note = 116. Note 103 also marks solos, and Guitar Hero 1 charts mark star power with it without setting the key. So in a .mid 5-fret, 6-fret or keys track with two or more solo notes and no star power, a scanner reads the solos as star power, unless song.ini sets multiplier_note. multiplier_note = 116 keeps such a track’s solos as solos: an exporter writes it only for a song with such a track. scan-chart’s converter writes it in that case.

Ignored

  • end_events. No game reads it. A chart’s end events work the same either way: see The end of the song. Leave it out. scan-chart reports it as defaultIniValue with its styleNotes option, and fixIssues removes it.
  • hopofreq, a Frets on Fire X key. Clone Hero, YARG and scan-chart ignore it. Leave it out. scan-chart reports it as unknownIniTag.

Invalid forms

A scanner reads it as seconds, as Clone Hero and YARG do, and drops any fraction of a millisecond: delay = 1.5 is 1,500 milliseconds, delay = -0.85 is -850, and delay = 0.0004 is 0, which means not set. A value with a decimal point that isn’t a number, such as 1.2.3, is 0 too. Charts that hold such a delay mean seconds: it’s often the .chart file’s Offset, copied over. scan-chart reports it as invalidValue.Clone Hero multiplies in single precision, so a few values come out 1 millisecond lower there: delay = 0.251 is 250 milliseconds.
Clone Hero and scan-chart read it as if the key weren’t there, and so read the solos of the tracks in the edge case above as star power. YARG uses note 116. A scanner reads it as Clone Hero does. scan-chart reports it as invalidValue.
A scanner reads the drums as 5-lane: see Drums. scan-chart reports it as invalidValue.
A scanner uses the .mid default cutoff, as Clone Hero and scan-chart do. YARG uses the value as written, so it cuts no sustains.