> ## 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.

# [SyncTrack]

> Tempo markers and time signatures in a .chart file.

`[SyncTrack]` is a `.chart` file's second section. It holds the chart's tempo markers, which decide when each tick plays, and its time signatures:

```text theme={null}
[SyncTrack]
{
  0 = TS 4
  0 = B 120000
  3072 = TS 6 3
  3072 = B 95500
}
```

## Tempo markers

A tempo marker sets the tempo from its tick to the next tempo marker:

```text theme={null}
<tick> = B <tempo>
```

* The tempo is in thousandths of a beat per minute: `B 120000` is 120 BPM, and `B 150325` is 150.325 BPM.
* **Required:** a tempo that is a whole number from 1 to 4294967295.
* **Required:** one tempo marker at most at a tick.

## Time signatures

A time signature sets the meter from its tick to the next time signature:

```text theme={null}
<tick> = TS <numerator> <exponent>
```

* The numerator is the number of notes in a measure, of the value the denominator gives.
* The exponent gives the denominator, 2 to the power of the exponent, so `TS 6 3` is 6/8: six eighth notes a measure. Without an exponent, the denominator is 4.
* **Required:** a numerator from 1 to 4294967295, and an exponent from 0 to 31.
* Time signatures only change the lines that appear throughout the chart during gameplay, at each measure and between them. They have no influence on the notes themselves.
* A beat is a quarter note whatever the time signature, so a measure of 6/8 is three beats long.
* **Required:** one time signature at most at a tick.

| Written | Time signature |
| - | - |
| `TS 4` | 4/4 |
| `TS 3 3` | 3/8 |
| `TS 6 3` | 6/8 |
| `TS 7 4` | 7/16 |

## The start of the chart

**Recommended:** a tempo marker and a time signature at tick 0.

**Edge case:** until its first tempo marker, a chart plays at 120 BPM, and until its first time signature, it's in 4/4.

## Ignored

**Tempo anchors.** A tempo anchor locks the tempo marker at its tick to a time in the audio, so a chart editor can keep that marker in place while the tempos before it change:

```text theme={null}
<tick> = A <microseconds>
```

An anchor should share its tick with a tempo marker. Games ignore anchors, and an exporter may keep them.

## Invalid forms

<Accordion title="A tempo of 0, or a numerator of 0">
  A scanner refuses the file, as Clone Hero and scan-chart do. YARG reads a tempo of 0, which makes its times infinite, and drops the time signatures after a numerator of 0.
</Accordion>

<Accordion title="A tempo, numerator or exponent too large">
  A scanner reads a tempo of 2³² or more exactly, as Clone Hero and scan-chart do. It calculates no hash for a file with an exponent of 32 or more, or a numerator of 2³² or more, as scan-chart does, since a [BTrack](/hashes/btrack#sections) can't hold such a time signature. Clone Hero reads such an exponent modulo 32, and Clone Hero and YARG read such a numerator modulo 2³². YARG reads a tempo of 2³² or more modulo 2³².
</Accordion>

<Accordion title="Two tempo markers, or two time signatures, at one tick">
  See [Syntax](/chart/syntax#invalid-forms): scanners use the later one, and scan-chart's saving removes the earlier one.
</Accordion>


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