# Map visual events to narration

Use one stable beat id to connect the storyboard, visual state, narration, audio
and review notes. The beat map records the timing of each important visual event and its spoken
phrase. A reviewer locates those phrases in the recording and checks the
corresponding events in playback.

## Completed example

DispatchDesk is a fictional support-routing product. DD-1042 is an urgent
checkout ticket. Its team changes from Unassigned to Payments when the matching
rule runs. All values below are illustrative worksheet values, not measurements
from a finished film.

| Beat id    | Visual entry and exit                             | Required event                                               | Visual floor, estimate | Narration after visual review                                | Audio duration           |
| ---------- | ----------------------------------------------- | ------------------------------------------------------------ | ---------------------- | ------------------------------------------------------------ | ------------------------ |
| request    | DD-1042 stays unassigned while the framing reveals its fields | Viewer can read Checkout and Urgent.                         | 4.0 s                  | This urgent checkout ticket is waiting for a team.           | Measure after recording. |
| rule       | The rule appears beside the ticket          | Checkout condition and Payments destination become readable. | 5.0 s                  | The routing rule sends checkout tickets to Payments.         | Measure after recording. |
| assignment | The rule changes Team from Unassigned to Payments                           | Team changes; Urgent stays visible.                          | 5.0 s                  | The ticket reaches Payments with its urgent priority intact. | Measure after recording. |

These sample lines illustrate what could follow approved visuals. They are not
a script to impose on a different animation.

## Timing worksheet to duplicate

- Beat id: [stable id shared with storyboard]
- Visual version: [reviewed artifact]
- Entry state: [data and composition]
- Action start and result event: [local cue names]
- Visual floor: [minimum needed for reading, action and result inspection]
- Narration version and text: [written after visual review]
- Audio file and measured duration: [recording id; actual duration]
- Audio starts at: [offset within this beat, if any]
- Required tail after audio: [silence or transition requirement]
- Duration calculation: [derived, not separately hand-maintained]
- Key phrase and visual event: [phrase and corresponding event]
- Observed phrase time: [measured or manually located in the recording]
- Event time in the animation: [local time or frame]
- Sync review: [what the rendered playback showed]
- Exit state and next beat: [explicit handoff]

## Derive the boundary; review the events inside it

A useful duration rule is:

```text
scene duration = max(
  authored visual floor,
  actual audio start offset + measured audio duration + required audio tail
)
```

If the editor places audio on whole frames, round the lead-in to its actual
frame position before using it in the formula. Round the final scene duration
up to a whole frame as well.

Choose the visual floor to cover the scene's actual reading and action needs.
Do not also add those same holds to the audio tail and count them twice. The
formula is a planning pattern; adapt it to the timing contract of your editor.

For example, if a visual floor is 5.0 seconds and the recording is 4.7 seconds
with no start offset and a 0.4-second tail, the scene needs at least 5.1 seconds.
At 30 frames per second, round up to 153 frames. Derive later start frames from
the cumulative durations so a changed recording cannot leave the next scene
using an old handwritten offset.

That calculation only protects the boundary. If “reaches Payments” occurs at
2.8 seconds but the team changed at 0.3 seconds, the scene may still feel
detached. Move the event, revise the line, or split the beat, then watch again.

## Record a phrase correction

For an illustrative take, “Payments” begins 3.0 seconds after the audio starts.
If the take starts 0.2 seconds into the scene, its visual partner belongs around
3.2 seconds into the scene, or local frame 96 at 30 fps. The editor still needs
to choose the precise event time by listening and watching.

```text
Beat id: routing
Source take: fictional-routing-v1.wav
Phrase: to Payments
Audio-local marker: 3.0 seconds
Actual audio lead-in: 0.2 seconds
Initial assignment cue: 3.2 seconds / local frame 96 at 30 fps
Review note: Keep the assigned team visible through the following priority clause.
```

The [runnable timing example](https://20cuts.com/vsync-narration-for-explainer-videos)
uses request, routing, and result as its scene ids. Its plan groups the rule and
assignment into one routing scene; the worksheet above separates them for a
more detailed visual review. Match ids within your own chosen plan instead of
copying names from a different scene breakdown.

## Review checklist

- Each distinct explanation has an addressable beat.
- Entry and exit states agree with the storyboard and neighboring beats.
- Estimates and measured values are visibly distinguished.
- Durations and cumulative start times have one source of truth.
- Important named objects remain visible while they are discussed.
- A changed recording triggers timing review, even if the total length is similar.
- The final rendered cut has been watched with sound, at the intended size.

[Read the full guide](https://20cuts.com/vsync-narration-for-explainer-videos).
