# Hold one lyric caption across picture cuts while a beat dot blips word by word along the line

Manual DaVinci Resolve / Fusion construction guide generated from the recipe. It is not a tested .drp.
The accompanying Remotion project (recipe.json) is the executable definition; the numbers below are copied from it.
Neither construction establishes source fidelity: this is an original vector approximation of an inspected editing moment.

## Source and clock
Reference: OpenAI's "No Limits on Text Chats with ChatGPT" (9MIkJHcMtVA), published 2026-08-25.
Source interval [2036, 2146) on the 24000/1001 fps master: 110 frames, 4.587917 s. Local frame 0 = source frame 2036.
Create a 1920x1080 progressive timeline at 24000/1001 fps and a Fusion composition exactly 110 frames long. Keep integer frames; do not round the frame rate.
Background field: #171a36. Export silent H.264 yuv420p to match the intended playback container.

## Observation
Local 0-1 (master 2036-2037) show a performer against the set with no caption. At local 2 (2038) the picture cuts to a second performer and a bold white lyric line appears in the same frame, low and centred. The caption then never changes while the camera pushes closer and, at ~local 67 (2103), the picture hard-cuts again to a wider shot. Above the caption a 28 px dot blinks on for about two frames at successive word positions moving left to right: black at ~f30 (x~548), lilac ~f37 (x~680), green ~f43 (x~800), yellow ~f55 (x~892), blue ~f70 (x~1012), pink ~f79 (x~1120) and orange ~f85 (x~1220). No dot after that; the caption holds to the end.

## Mechanism
A caption that is locked to the lyric, not to the picture: it survives two hard cuts while a two-frame beat dot steps across the line in sync with the vocal.

## Phases (local frames)
- 0: First performer, no caption
- 2: Cut to second performer; caption on
- 30: Beat dot blips across the words
- 67: Hard cut to wider shot; caption persists
- 85: Last blip, caption holds

## Layer inventory (absolute 1920x1080 top-left pixels, back to front)
- shot-a [group] at (0, 0) size 1920x1080 visible [0, 2)
  - a-ray [rect] at (-100, 80) size 1200x160 fill #e8c22c
  - a-globe [ellipse] at (1150, 560) size 300x300 fill #2f8fe0
  - a-globe-2 [ellipse] at (1520, 600) size 260x260 fill #e9e4d6
  - a-box [rect] at (1060, 440) size 860x640 radius 20 fill #8a2b2b
  - a-figure [rect] at (260, 120) size 380x960 radius 120 fill #0d0f22
- shot-b [group] at (0, 0) size 1920x1080 visible [2, 67)
  - b-ray-a [rect] at (300, 20) size 1300x150 fill #e0762b
  - b-ray-b [rect] at (900, 220) size 1200x120 fill #e8c22c
  - b-star [path] at (1500, 200) fill #f0a52a stroke #f0a52a 1px
  - b-table [rect] at (1160, 520) size 560x220 radius 40 fill #e9e4d6
  - b-figure [rect] at (700, 220) size 520x900 radius 160 fill #0d0f22
  - b-figure-2 [rect] at (60, 320) size 300x800 radius 100 fill #151833
- shot-c [group] at (0, 0) size 1920x1080 visible [67, 110)
  - c-ray-a [rect] at (-200, 160) size 1000x170 fill #e0762b
  - c-ray-b [rect] at (1000, 40) size 1100x140 fill #e8c22c
  - c-panel [rect] at (1200, 380) size 720x420 radius 30 fill #8fd3f0
  - c-arrow [path] at (1560, 660) fill #c8322a stroke #c8322a 1px
  - c-table [rect] at (40, 540) size 520x200 radius 40 fill #e9e4d6
  - c-figure [rect] at (640, 140) size 520x960 radius 160 fill #0d0f22
- caption [text] at (0, 764) size 1920x0 text "Go on, go on go on, go on go on, go on" 58px weight 700 #ffffff visible [2, 110)
- beat-dot [ellipse] at (534, 706) size 28x28 fill #111111 visible [30, 87)
    keyframes opacity: f30=1, f32=0 (hold), f37=1 (hold), f39=0 (hold), f43=1 (hold), f45=0 (hold), f55=1 (hold), f57=0 (hold), f70=1 (hold), f72=0 (hold), f79=1 (hold), f81=0 (hold), f85=1 (hold), f87=0 (hold)
    keyframes x: f30=534, f37=666 (hold), f43=786 (hold), f55=878 (hold), f70=998 (hold), f79=1106 (hold), f85=1206 (hold)
    keyframes fill: f30=#111111, f37=#c8a2ee (hold), f43=#3cd44f (hold), f55=#f0d24a (hold), f70=#2b8fef (hold), f79=#f3b6c4 (hold), f85=#e8641c (hold)

## Construction steps
1. Timeline 1920x1080 at 23.976 fps; Fusion composition 110 frames. Local 0 = master frame 2036.
2. Three stand-in shots on the picture track, all straight cuts: shot A frames 0-1, shot B frames 2-66, shot C frames 67-109. Each is a navy field with rotated colour bars, a pale table block and a dark silhouette in a different arrangement.
3. Caption: Text+ 58 px, weight 700, tracking -1, white, centred, top at y=764, on a separate track above the picture. Start it at frame 2 (the same frame as the first cut) and let it run untouched to the end so it visibly outlives the cut at 67.
4. Beat dot: 28 px ellipse at y=706 with step keys on opacity (on for two frames at 30, 37, 43, 55, 70, 79, 85), on X (534, 666, 786, 878, 998, 1106, 1206) and on colour (black, lilac, green, yellow, blue, pink, orange) at the same frames.
5. Easy mistake: cutting the caption with the picture at 67. The edit point of the caption is the lyric, so it must stay frozen through the cut.

## Content variants
Default copy:
- line: Go on, go on go on, go on go on, go on
Adaptation changes:
- line: Say yes, say yes yes yes, say yes yes yes

## Limits
Easing names map to Fusion spline shapes: linear = linear, in/out/inOut = ease curves on the same frames, hold = step, spring/overshoot = slight overshoot past the target before settling.
Text reveal frames give the first and last unit; distribute characters/words evenly between them. Cursor click rings last 14 frames.
Vector illustration is an approximation of layout and motion, not the product UI or recovered production assets.
