> ## Documentation Index
> Fetch the complete documentation index at: https://chart-spec.enchor.us/llms.txt
> Use this file to discover all available pages before exploring further.

# Phrases

> Star power, solos, lanes and drum fills in a .chart file.

A phrase marks a stretch of one track, such as a star power phrase or a solo. It goes in an instrument section, with the notes it covers, and applies to that section's instrument and difficulty:

```text theme={null}
[ExpertSingle]
{
  768 = N 0 0
  768 = S 2 1536
  960 = N 1 0
  1152 = N 2 0
  2304 = N 3 0
  3072 = N 4 0
  3072 = E solo
  6144 = N 0 0
  6144 = E soloend
}
```

Here a star power phrase covers the notes from tick 768 up to tick 2304, and a solo covers the notes from tick 3072 through tick 6144.

Most phrases are `S` events:

```text theme={null}
<tick> = S <type> <length>
```

The length is in ticks, and the phrase ends at its end tick, `tick + length`:

| Type | Phrase | Instruments | Covers its end tick |
| - | - | - | - |
| `2` | [Star power](#star-power) | All | No |
| `64` | [Drum fill](#drum-fills) | Drums. On 5-fret, only as a Big Rock Ending | Yes |
| `65` | [Lane](#lanes): a single roll lane on drums, a tremolo lane on 5-fret | Drums and 5-fret | Yes |
| `66` | [Lane](#lanes): a double roll lane on drums, a trill lane on 5-fret | Drums and 5-fret | Yes |

A [solo](#solos) is written as two text events instead, and covers both of its ticks.

## Rules for every phrase

* **Required:** at least one note in each phrase.
* **Required:** one phrase of each type at most at a tick, and no phrase that starts before another of its type ends, except lanes.
* **Recommended:** a length of at least one tick for each phrase.

**Edge case: a phrase of length 0.** It covers the notes on its tick.

## Star power

A star power phrase marks notes the player can earn star power from: hitting every note in it fills a quarter of the star power meter.

```text theme={null}
768 = S 2 1536
```

Neither game adds star power to a chart that has none.

## Solos

A solo is marked by two text events, `solo` and `soloend`, written without quotation marks. It covers its notes from the `solo` tick through the `soloend` tick, both included:

```text theme={null}
3072 = E solo
6144 = E soloend
```

**Required:** each `solo` has its `soloend` before the next `solo`, and each `soloend` has a `solo` before it.

**Required:** `solo` and `soloend` without brackets.

## Drum fills

A drum fill marks a stretch where the drummer can play freely and activate star power by hitting the fill's last note. It includes its end tick. An exporter should put a note on the fill's end tick.

**Edge case: a drum fill without a note on its end tick.** The games choose different notes to activate star power. Clone Hero uses the note closest to the end tick, from the fill's start up to `resolution ÷ 32 + 1` ticks after its end, and the fill activates nothing without a note there. YARG uses the first note at or after the end tick, however far after the fill it is, or the track's last note.

**Edge case: a drums track without drum fills.** The games add their own. Clone Hero adds a star power activation every four measures. YARG adds drum fills when the track has star power.

A drum fill whose tick is at or after the [`coda`](/chart/events#the-coda) is a Big Rock Ending instead: a closing freestyle section with no star power activation.

On 5-fret guitar, bass and keys, an `S 64` at or after the `coda` is a Big Rock Ending, and has no meaning before it.

**Edge case: where a Big Rock Ending ends.** A drum fill covers its end tick, but Clone Hero's Big Rock Ending doesn't: a note on its end tick comes after it. **Recommended:** a note after each Big Rock Ending, which closes it, and the Big Rock Ending ending before that note. From its code, YARG gives a Big Rock Ending's bonus only when the player hits the note that closes it.

**Edge case: Big Rock Endings on 5-fret.** Clone Hero and YARG play a `.chart` Big Rock Ending only on drums, so no game plays one on 5-fret guitar, bass or keys from a `.chart` file.

## Lanes

A lane marks a passage too fast to play note for note. Inside it, the player keeps up the motion at their own speed, and each note counts as hit. A lane includes its end tick, and lanes may overlap.

* **On drums,** `S 65` is a roll on one pad, and `S 66` a roll that alternates between two pads. The lane takes its pads from the notes it covers, and never includes the kick. **Recommended:** a roll on one pad starts with a note on one pad, apart from a kick. When it starts on a chord, Clone Hero takes the chord's lowest pad, and YARG the pad of its first note.
* **On 5-fret guitar, bass and keys,** `S 65` is a tremolo lane: one fret or chord repeated, at least two notes, strummed freely. `S 66` is a trill lane: two single frets alternating, at least three notes, played freely between them. These are what `.mid` notes 126 and 127 mean.

A lane should cover at least two notes, and only notes that fit its pattern: YARG cancels a lane whose notes don't.

**Edge case: lanes Clone Hero skips.** Clone Hero doesn't play a drum lane that covers only one pad note, or whose first pad note comes more than a sixteenth of a beat after its start: 12 ticks at a resolution of 192.

**Edge case: lanes on 5-fret.** YARG plays tremolo and trill lanes only from a `.mid` file, and Clone Hero plays lanes only on drums, so no game plays them from a `.chart` file. On 6-fret, `S 64` to `S 66` have no meaning.

## Ignored

* **A phrase of any other type,** and a phrase on an instrument the table doesn't list for it. YARG reads `S 67` as a kick lane on drums.
* **Versus phrases,** `S 0` and `S 1`, which mark the parts each player plays in a face-off in older games. An exporter should keep them when rewriting a file.

## Invalid forms

<Accordion title="Two phrases of one type at one tick">
  Of two star power phrases, solos or lanes of one type at one tick, a scanner uses the longer, as Clone Hero and scan-chart do, and YARG the one written later. Both drum fills go into the TrackHash as written: see [Drum fills](/hashes/btrack#drum-fills). scan-chart keeps both when saving.
</Accordion>

<Accordion title="Overlapping phrases of one type, other than lanes">
  A scanner cuts the earlier star power phrase or solo where the later starts, and extends the later one to whichever ends last, as Clone Hero and scan-chart do. Drum fills go into the TrackHash as written. YARG gives each note to the latest phrase that started at or before it, so the rest of a longer earlier phrase is lost. scan-chart keeps the phrases as written when saving.
</Accordion>

<Accordion title="Nested solos">
  At each `soloend`, every scanner ends the most recent `solo` that hasn't ended. The two solos then overlap, and each scanner reads them as overlapping phrases of one type. scan-chart keeps them as written when saving.
</Accordion>

<Accordion title="A phrase that covers no notes">
  A scanner ignores it. A drum fill without a note still goes into the TrackHash: see [What the TrackHash holds that games ignore](/hashes/btrack#what-the-trackhash-holds-that-games-ignore). scan-chart reports an empty star power phrase, solo or lane, and `fixIssues` removes it.
</Accordion>

<Accordion title="A soloend with no open solo, or a solo that never ends">
  A scanner ignores it.
</Accordion>

<Accordion title="A solo in square brackets, such as E [solo]">
  A scanner doesn't read `E [solo]` and `E [soloend]` as a solo, as Clone Hero and scan-chart don't. YARG does. scan-chart keeps them as text, and writes them back.
</Accordion>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.