Skip to main content
cues.json is the cue file. It names the spoken phrase for each cue id, section by section. It is optional. A project without it plays every page with the page’s own autoplay timing. This page lists every key.
cues.json
Section 8 of the scaffold plays scene 7 of its page, so its cue ids start with 7.1. Section 9 plays scene 5, so its cue ids start with 5.1. The block below is a shape, not the scaffold’s values. It shows the optional keys.
cues.json

Shape

The file is one object with a sections key. The load ignores every other top-level key, such as _comment. Each key of sections is a section number as a string, and it must name a [[section]] in decktalk.toml. Each section is an object with an optional min_seconds and a cues list. Every cue id must appear in its page as a quoted literal, such as data-cue="1.1bowl" or a key of a step’s cues object. Cue mismatches says what happens when an id is missing.

Section keys

Note: For short speech, decktalk beats prints the note speech <S>s is <D>s shorter than the visuals need. beats --strict exits 1 on it.

Cue keys

Note: A cue id must not contain a comma, because commas separate the pairs in ?beats=. DeckTalk does not check this. An @ in an id still works, because the page splits each pair at its last @. Avoid @ anyway, so ids stay easy to read. Note: decktalk verify still checks a "verify": false cue that you name as SECTION:CUE.

Anchors

Note: decktalk verify skips a $start cue with no offset key, as REFERENCE_CLAMPED. Note: A section’s lead_seconds moves every word, and so every phrase cue and $end, that much later. $start stays at 0. Skipped rows explains why.

Output files

decktalk beats writes build/audio/beats.json, with each section’s cue times as its ?beats= string. It also writes build/audio/beats.anchors.json, with each cue’s word start before the offset key. Build artifacts has the shape of both files.