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

# Canonical20260801Api

## Methods

### calculateSongBundle()

```ts theme={null}
calculateSongBundle(request): CanonicalSongBundle;
```

Calculates every member track's identity and duration, and the song's SongHash, from one parsed chart.

#### Parameters

| Parameter | Type |
| - | - |
| `request` | [`CanonicalSongBundleRequest`](https://chart-spec.enchor.us/scan-chart/api/competitive/interfaces/CanonicalSongBundleRequest) |

#### Returns

[`CanonicalSongBundle`](https://chart-spec.enchor.us/scan-chart/api/competitive/interfaces/CanonicalSongBundle)

***

### calculateSongIdentity()

```ts theme={null}
calculateSongIdentity(request): CanonicalSongIdentity;
```

#### Parameters

| Parameter | Type |
| - | - |
| `request` | [`CanonicalSongIdentityRequest`](https://chart-spec.enchor.us/scan-chart/api/competitive/interfaces/CanonicalSongIdentityRequest) |

#### Returns

[`CanonicalSongIdentity`](https://chart-spec.enchor.us/scan-chart/api/competitive/interfaces/CanonicalSongIdentity)

***

### calculateTempoMapHash()

```ts theme={null}
calculateTempoMapHash(chart): string;
```

Calculates Clone Hero's tempo map hash, which the leaderboard backend compares across scores.

#### Parameters

| Parameter | Type |
| - | - |
| `chart` | [`CanonicalParsedChart`](https://chart-spec.enchor.us/scan-chart/api/competitive/interfaces/CanonicalParsedChart) |

#### Returns

`string`

***

### calculateTrackDuration()

```ts theme={null}
calculateTrackDuration(semantics): TrackDuration;
```

#### Parameters

| Parameter | Type |
| - | - |
| `semantics` | [`CanonicalTrackSemantics`](https://chart-spec.enchor.us/scan-chart/api/competitive/interfaces/CanonicalTrackSemantics) |

#### Returns

[`TrackDuration`](https://chart-spec.enchor.us/scan-chart/api/competitive/interfaces/TrackDuration)

***

### calculateTrackIdentity()

```ts theme={null}
calculateTrackIdentity(track): CanonicalTrackIdentity;
```

#### Parameters

| Parameter | Type |
| - | - |
| `track` | [`CanonicalParsedTrack`](https://chart-spec.enchor.us/scan-chart/api/competitive/interfaces/CanonicalParsedTrack) |

#### Returns

[`CanonicalTrackIdentity`](https://chart-spec.enchor.us/scan-chart/api/competitive/interfaces/CanonicalTrackIdentity)

***

### parseSource()

```ts theme={null}
parseSource(request): CanonicalParseOutcome;
```

#### Parameters

| Parameter | Type |
| - | - |
| `request` | [`SourceParseRequest`](https://chart-spec.enchor.us/scan-chart/api/competitive/interfaces/SourceParseRequest) |

#### Returns

[`CanonicalParseOutcome`](https://chart-spec.enchor.us/scan-chart/api/competitive/type-aliases/CanonicalParseOutcome)

***

### readBTrack()

```ts theme={null}
readBTrack(bytes): CanonicalBTrackReadOutcome;
```

#### Parameters

| Parameter | Type |
| - | - |
| `bytes` | `Uint8Array` |

#### Returns

[`CanonicalBTrackReadOutcome`](https://chart-spec.enchor.us/scan-chart/api/competitive/type-aliases/CanonicalBTrackReadOutcome)


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