# Audio track reference

> Voiceover tracks (Scotsman VO at 29.6s, explainer VO at 42.6s), generated SFX inventory (click, toggle, typenew), volumes, and word-level transcript.json timing.

- Repository: heygen-com/hyperframes-launches
- GitHub: https://github.com/heygen-com/hyperframes-launches
- Human docs: https://grok-wiki.com/public/docs/heygen-com-hyperframes-launches-996f3eaa626b
- Complete Markdown: https://grok-wiki.com/public/docs/heygen-com-hyperframes-launches-996f3eaa626b/llms-full.txt

## Source Files

- `index.html`
- `voiceover.mp3`
- `voiceover_explainer.mp3`
- `transcript.json`
- `compositions/compose-tasklist.html`
- `compositions/tesla-rap.html`

---

---
title: "Audio track reference"
description: "Voiceover tracks (Scotsman VO at 29.6s, explainer VO at 42.6s), generated SFX inventory (click, toggle, typenew), volumes, and word-level transcript.json timing."
---

The `claude-paper` master composition in `index.html` declares all audio on `<audio>` elements inside `#claude-paper`. HyperFrames reads `data-start`, `data-duration`, `data-track-index`, and `data-volume` on each element to schedule playback against the 53.3s root timeline. Voiceover and SFX are not embedded in scene GSAP timelines; scene compositions align visually to the same clock via local offsets that sum to these master `data-start` values.

## Audio element contract

Each `<audio>` element in `index.html` uses the same scheduling attributes:

| Attribute | Role |
|-----------|------|
| `src` | Relative path to the MP3 asset at the `claude-paper-launch/` root |
| `data-start` | Master-timeline start time in seconds |
| `data-duration` | Playback window length in seconds |
| `data-track-index` | Mixer lane ID (sections use 1–11; audio uses dedicated high indices) |
| `data-volume` | Linear gain (`1` = full, `0.85` = click/toggle, `0.2` = keystroke) |

<Note>
MP3 binaries are Git LFS objects (`*.mp3` in the repository `.gitattributes`). A shallow checkout may show 131-byte pointer stubs instead of playable audio. Run `git lfs pull` inside the scoped folder before preview or render.
</Note>

## Voiceover tracks

Two voiceover lanes are wired at the master root. Both use `data-volume="1"`.

### Scotsman VO (`#vo`)

| Field | Value |
|-------|-------|
| `src` | `voiceover.mp3` |
| `data-start` | `29.6` |
| `data-duration` | `2.17` |
| `data-track-index` | `8` |
| Narrative role | Angry Scotsman rap plays inside the compose player while the generated `tesla-rap` video runs; cursor pauses playback partway through `"numpties"` |

Master start `29.6` equals `sec-compose` `data-start` (`25.8`) plus the compose-ui local anchor `R = VS + 0.3` where `VS = 3.5`, giving `25.8 + 3.8 = 29.6`. The `2.17`s window ends when the in-player pause fires at local `PEND = R + 2.17`.

```html
<audio
  id="vo"
  src="voiceover.mp3"
  data-start="29.6"
  data-duration="2.17"
  data-track-index="8"
  data-volume="1"
></audio>
```

In `compose-ui.html`, on-screen captions track the same VO clock:

- `"Right."` fades in at local `R + 0.11`
- `"Listen up, you wee numpties."` holds from local `R + 1.03` through the pause at `PEND`

A separate ElevenLabs export (`ElevenLabs_2026-06-05T10_14_44_Scotsman_gen_sp100_s50_sb75_v3 (1).mp3`) sits alongside `voiceover.mp3` as the generation source; the master cut references `voiceover.mp3`.

### Explainer VO (`#vo-explainer`)

| Field | Value |
|-------|-------|
| `src` | `voiceover_explainer.mp3` |
| `data-start` | `42.6` |
| `data-duration` | `6.41` |
| `data-track-index` | `184` |
| Narrative role | Neutral presenter VO over the final TSLA explainer inside `compose-tasklist` |

Master start `42.6` equals `sec-tasklist` `data-start` (`40.3`) plus local `R = VS + 0.3` where `VS = 2.0`, giving `40.3 + 2.3 = 42.6`. The comment in `index.html` identifies this as ElevenLabs output at 6.41s.

```html
<audio
  id="vo-explainer"
  src="voiceover_explainer.mp3"
  data-start="42.6"
  data-duration="6.41"
  data-track-index="184"
  data-volume="1"
></audio>
```

`compose-tasklist.html` drives six seconds of in-player scrubber motion from local `R` and overlays phrase captions synced to ElevenLabs alignment (caption B for `"our base case"` enters at local `R + 3.4`). The standalone `tesla-rap` composition is the earlier Scotsman-style kinetic plate embedded in `compose-ui`; the explainer VO pairs with the editorial TSLA plate in `compose-tasklist`, not `tesla-rap.html`.

## Generated SFX inventory

All UI sound effects are declared in a single generated block in `index.html` (comment: `SFX:generated`). Three source files are reused:

| Asset | Use | `data-volume` | `data-duration` |
|-------|-----|---------------|-----------------|
| `click.mp3` | Cursor taps (buttons, send, download) | `0.85` | `0.07` |
| `toggle.mp3` | HyperFrames toggle flip in `connector-morph` | `0.85` | `2.67` |
| `typenew.mp3` | Per-keystroke typing swell (humanized stagger) | `0.2` | `0.57` |

### Click cues (`click.mp3`)

Ten click instances (`sfx-click-0` … `sfx-click-10`, note the gap at index 2):

| ID | Master `data-start` | Scene context |
|----|---------------------|---------------|
| `sfx-click-0` | `1.60` | `connector-morph` — `+` pill tap |
| `sfx-click-1` | `3.10` | `connector-morph` — menu interaction |
| `sfx-click-3` | `7.48` | `chat-response` — composer focus |
| `sfx-click-4` | `9.93` | `chat-response` — send tap |
| `sfx-click-5` | `20.20` | `followup-type` — composer click |
| `sfx-click-6` | `24.89` | `followup-type` — send tap |
| `sfx-click-7` | `31.77` | `compose-ui` — in-player pause tap (aligned with Scotsman VO end) |
| `sfx-click-8` | `33.20` | `compose-ui` — correction prompt tap |
| `sfx-click-9` | `38.42` | `compose-ui` — send after correction |
| `sfx-click-10` | `49.30` | `compose-tasklist` — download pill tap |

Track indices: `100`–`108`, `183`, `185`.

### Toggle cue (`toggle.mp3`)

| ID | Master `data-start` | `data-duration` | `data-track-index` |
|----|---------------------|-----------------|-------------------|
| `sfx-toggle` | `4.30` | `2.67` | `102` |

Plays over the HyperFrames ON toggle in `connector-morph` (section starts at `0`, local ≈ `4.3`).

### Typing cues (`typenew.mp3`)

Seventy-four keystroke instances (`sfx-type-0` … `sfx-type-73`), track indices `109`–`182`. They cluster in three typing bursts on the master clock:

| Master window | Scene | Keystroke IDs |
|---------------|-------|---------------|
| `7.80` – `9.51` | `chat-response` (starts `6.7`) | `sfx-type-0` – `sfx-type-15` (16 strokes) |
| `20.80` – `23.70` | `followup-type` (starts `19.4`) | `sfx-type-16` – `sfx-type-40` (25 strokes) |
| `33.57` – `37.30` | `compose-ui` correction typing (starts `25.8`) | `sfx-type-41` – `sfx-type-73` (33 strokes) |

Inter-keystroke gaps vary (roughly 0.07–0.16s) to mimic human typing cadence rather than uniform metronome spacing.

## Track index map

```text
Master timeline (#claude-paper, 53.3s)
├── Sections ............... data-track-index 1–11 (visual lanes)
├── Scotsman VO (#vo) ...... track 8
├── SFX clicks ............. tracks 100–108, 183, 185
├── SFX toggle ............. track 102
├── SFX typing ............. tracks 109–182
└── Explainer VO ........... track 184
```

Visual sections and audio lanes share the `data-track-index` namespace but use non-overlapping ranges so the renderer can mix them independently.

## `transcript.json` — word-level Scotsman timing

`transcript.json` at the project root holds ASR word alignment for `voiceover.mp3`. Timestamps are **relative to the VO file origin** (0-based), not the master timeline. To convert a word time to master time during the Scotsman window:

```text
master_time = 29.6 + transcript_word.start   // while VO is active
```

### Schema

Each entry is an object with three fields:

| Field | Type | Meaning |
|-------|------|---------|
| `text` | string | Word or punctuation token |
| `start` | number | Start offset in seconds from VO file start |
| `end` | number | End offset in seconds |

### Full word list (18 tokens)

| `text` | `start` | `end` |
|--------|---------|-------|
| Right! | 0.11 | 1.00 |
| Listen | 1.03 | 1.38 |
| up, | 1.38 | 1.63 |
| you | 1.63 | 1.82 |
| wee | 1.82 | 1.91 |
| numpties. | 2.07 | 2.64 |
| It's | 2.78 | 3.25 |
| Tesla, | 3.31 | 4.29 |
| and | 4.29 | 4.48 |
| I'm | 4.48 | 4.67 |
| about | 4.67 | 4.98 |
| to | 5.09 | 5.12 |
| tell | 5.12 | 5.38 |
| you | 5.38 | 5.54 |
| everything | 5.71 | 6.40 |
| you | 6.40 | 6.64 |
| need | 6.64 | 6.90 |
| to. | 7.07 | 7.28 |

<file-tree>
claude-paper-launch/
├── index.html              # all <audio> scheduling attributes
├── voiceover.mp3           # Scotsman VO (LFS)
├── voiceover_explainer.mp3 # TSLA explainer VO (LFS)
├── transcript.json         # word timings for voiceover.mp3
├── click.mp3               # UI click SFX (LFS, referenced)
├── toggle.mp3              # HF toggle SFX (LFS, referenced)
├── typenew.mp3             # keystroke SFX (LFS, referenced)
└── compositions/
    ├── compose-ui.html     # Scotsman player + caption sync
    └── compose-tasklist.html # explainer player + caption sync
</file-tree>

<Info>
Only the first ~2.17s of the transcript is heard in the shipped cut. Words from `"It's"` onward exist in `transcript.json` for the full generated take but fall after the `data-duration` window and the in-player pause. Caption timing in `compose-ui.html` uses the early phrases (`"Right."`, `"Listen up, you wee numpties."`) that fall inside the active window.
</Info>

### Caption ↔ transcript alignment

| Visual cue (compose-ui local) | Transcript anchor | Master equivalent |
|------------------------------|-------------------|-------------------|
| `R + 0.11` — `"Right."` caption | `"Right!"` at `0.11` | `29.71` |
| `R + 1.03` — `"Listen up…"` caption | `"Listen"` at `1.03` | `30.63` |
| `PEND = R + 2.17` — pause click | cuts into `"numpties."` (`2.07`–`2.64`) | `31.77` (`sfx-click-7`) |

## Master timeline audio map

```text
0s        10s        20s        30s        40s        50s   53.3s
|----------|----------|----------|----------|----------|-----|
 [clicks/toggle/type bursts in sections 1–4]
                              [Scotsman VO 29.6–31.77]
                                    [type burst 33.6–37.3]
                                         [click 38.42]
                                              [explainer VO 42.6–49.01]
                                                         [click 49.30]
```

| Audio event | Start (s) | End (s) |
|-------------|-----------|---------|
| Scotsman VO | 29.6 | 31.77 |
| Explainer VO | 42.6 | 49.01 |
| First click SFX | 1.60 | 1.67 |
| Last click SFX (download) | 49.30 | 49.37 |

## Editing and verification

When shifting VO or SFX:

1. Update `data-start` / `data-duration` on the `<audio>` element in `index.html`.
2. Adjust the matching local GSAP anchor in the scene composition (`R`, `PEND`, `END`, or caption `tl.add` callbacks).
3. For new Scotsman copy, regenerate `voiceover.mp3` and refresh `transcript.json` word timings before retiming captions.
4. Preview with `hyperframes preview` against the `claude-paper-launch` folder and confirm clicks line up with cursor press keyframes.

<Warning>
`compose-ui.html` contains a stale comment referencing master VO at `31.3s`. The authoritative master schedule is `data-start="29.6"` on `#vo` in `index.html`.
</Warning>

<ParamField body="data-start" type="number" required>
Master-timeline seconds when playback begins. Must match the sum of parent section `data-start` plus the scene's local audio anchor.
</ParamField>

<ParamField body="data-duration" type="number" required>
Length of the audible window. For Scotsman VO, this must equal the compose-ui `PEND - R` interval (`2.17`).
</ParamField>

<ParamField body="data-track-index" type="number" required>
Unique mixer lane. Keep SFX in the `100+` range to avoid colliding with section indices `1`–`11`.
</ParamField>

<ParamField body="data-volume" type="number" required>
Linear gain. Use `1` for voiceover, `0.85` for clicks/toggle, `0.2` for typing.
</ParamField>

## Related pages

<CardGroup>
  <Card title="Sync audio and SFX" href="/sync-audio-and-sfx">
    Procedural guide for wiring new voiceover and SFX elements with the same attribute pattern.
  </Card>
  <Card title="Master composition reference" href="/master-composition-reference">
    Full section stack, z-index order, and how audio track indices sit beside visual lanes.
  </Card>
  <Card title="Scene catalog" href="/scene-catalog">
    Scene durations and handoff points that anchor VO and SFX local times.
  </Card>
  <Card title="Fonts and assets" href="/fonts-and-assets">
    Git LFS setup for MP3 binaries including voiceover and SFX files.
  </Card>
  <Card title="Troubleshooting" href="/troubleshooting">
    Recovery when LFS audio is missing or preview plays silently.
  </Card>
</CardGroup>
