CueCaller · The Manual · VIP Tools

CUE CALLER.

A timecode-chased show caller. Feed it a cue sheet, feed it timecode, and it puts the right note on screen at the right moment and calls your spots out loud so everyone hears the same standby and the same GO.

01:00:00:00Locked · LTC
Runs in Chrome Nothing to install Works fully offline MTC + LTC + Test clock
Scroll · The full tour
[ 01 ] · The 60-second version

What it does.

Three things go in. One show comes out.

[ IN ]

A cue sheet

.csv or .xlsx · every cue is a timecode, a label, and the note to call.

[ IN ]

Timecode

MTC over USB MIDI, LTC over any audio input, or the built-in test clock.

[ OUT ]

The show, called

The current note fills the screen and a voice calls every standby and GO, exactly on the stamp.

It was built for followspot calling, but it reads whatever you put in the Notes column: spot pickups, scenic moves, pyro standbys, mic handoffs, anything that happens on a timecode stamp. If the show jumps, rewinds, or the console restarts, it re-finds its place instantly. No stale GOs, no double calls.

The one rule

The clock is the truth. Green clock means signal is locked and cues will fire. Red clock means signal is gone, and the clock freezes on the last frame it heard. If it's red mid-show, check your timecode feed, not the app.

[ 02 ] · One glance, mid-show

The screen.

Everything is built to be read from across a dark FOH riser.

CueCaller mid-show with a cue on screen
1
2
3
4
5
6
7
1

The clock. Incoming timecode, frame-accurate. Green = locked, red = signal lost. Next to it: the source (MTC / LTC / TEST) and detected frame rate.

2

Signal pill + source. LOCKED · TEST when signal is good, red when it's lost, with the source and detected fps underneath. The CURRENT SONG readout sits just left of it.

3

The current cue. Label, stamp, and level in the eyebrow; the note fills the panel at reading-glasses size. The previous cue sits grayed above.

4

LD notes. The cyan line. Display-only, never spoken. Private notes from the sheet's LD NOTES column.

5

Next cue + countdown. What's coming and when. The orange bar drains and hits empty exactly on the stamp; it turns red in the last 5 seconds.

6

Set list. Tonight's show order. The active song lights up, played songs dim. Click a song to jump there in test mode.

7

Cue list. Every cue in setlist order with gold song separators. The live cue highlights and the list follows the show.

Keys

F fullscreen · S settings · Esc closes any drawer. That's all of them.

[ 03 ] · Access

Getting in.

[ 01 ]

Open it

cuecaller.app/app in Chrome. Chrome is the tested browser for MIDI and audio input.

[ 02 ]

Log in

Use the VIP Tools login you were given. Your account is granted access to CueCaller specifically. No login? Ask Jake.

[ 03 ]

Load a show

Drop a cue sheet on the landing screen, pull one from Sessions, or hit Test and poke around with the demo show first.

CueCaller landing screen
First open · drop a sheet anywhere on the page, or grab the template from here
Try it right now · no console needed

Open Sessions, set the artist filter to The Atlas Echo, and load VIP DEMO SHOW · Manual Example. Hit Test in the header. The demo show starts ten seconds later and every screenshot in this manual is exactly what you'll see. Click cues in the right-hand list to jump around.

[ 04 ] · The source of truth

Build your cue sheet.

One spreadsheet drives the whole show. Start from the template; the parser does the rest.

Hit Template in the header for the styled .xlsx (a plain .csv link sits underneath). The sheet has labeled sections; the app reads them all. You can also write your own sheet from scratch: the only thing the parser truly needs is a header row with Timecode, Label, Notes. Everything else is optional and just makes the tool smarter.

Or skip files entirely: load straight from a Google Sheet link and re-pull updates with one button mid-rehearsal. That flow is in Load & save.

The VIP cue sheet template structure
The template · admin sections on top, cue table at the bottom

What each section feeds

SectionWhat it does in the app
[ 01 ] SHOW INFORMATIONArtist, show, venue, city, date, fps, console, LD, SM contact. Shows in the footer and the header eyebrow, and powers {tokens} (below).
[ 02 ] REVISIONRev label and notes. The loaded rev shows in the footer so nobody runs an old sheet without knowing.
[ 03 ] SPOT MEETING NOTESYour pre-show speech. The Run Spot Meeting button reads it aloud once and shows it on a branded overlay.
[ 03B ] SHORT SPOT MEETINGOptional condensed version. If present, a Short Meeting button appears next to the full one.
[ SET LIST ]Optional. Tonight's show order, one song per row. Powers the set list panel. Names match the song banners in the cue table.
[ 04 ] CUE SHEETThe cue table itself. Six columns, covered next.
Tokens

Anywhere in the meeting or in cue notes, write {artist} {show} {venue} {city} {date} {fps} {rev} {console} {ld} {sm} and the app fills them from the show info block at load time.

Write the meeting once: "Tonight we are at {venue} in {city}." Update two cells per city and the speech rewrites itself.

Spot meeting overlay with tokens filled
Run Spot Meeting · tokens already filled · spoken once, never over your cues
[ Demo file ]

Want a known-good reference? Download the demo show .csv used for every screenshot here. Open it next to this page and the whole format explains itself.

[ 05 ] · The cue table

Six columns, one call.

Timecode and Notes do the heavy lifting. The other four sharpen the call.

Cue table columns in the template
The cue table · header row + song banner + cue rows
ColumnBehaviorVoice / screen
TIMECODEHH:MM:SS:FF. The moment the cue fires. Rows without a valid stamp are ignored, so notes-to-self rows are safe.Drives GO
LABELShort name. Shows in the eyebrow and the cue list. Never spoken.Shown
NOTESThe call itself. Spoken in the standby and shown full-screen. Write it the way you'd say it: "Spot 1 to the lead singer, center stage".Spoken Shown
OUT TIMEOptional second stamp. At that moment the voice calls "Spot N fade out now" for the spots featured in this cue, plus a red on-screen toast.Spoken
LEVELOptional intensity. Appended to the standby ("…at Half") and shown as a gold @ HALF chip in the eyebrow.Spoken Chip
LD NOTESPrivate line for the operator. Cyan text under the call. Never read aloud.LD only
Cue with level chip and LD note
A cue with a LEVEL (@ HALF) and an LD note · the OUT TIME for this solo fires its own fade-out call 25 seconds later

How the standby is assembled

At the standby lead (default 10 s before the stamp):

[ T−10s ]

"Standby Spots. Spot 2 to the guitarist on the SR riser for a solo, at Half."

[ T−0 · on the stamp ]

"Spots, GO!"

[ Out time ]

"Spot 2 fade out now."

The prefix ("Spots") is yours to change in Settings. Blank prefix = the note is read exactly as written, no wrapper.

[ 06 ] · Structure the show

Songs & set lists.

The cue table is a song library. The set list is tonight's running order.

Song banners

Inside the cue table, a row starting with is a song banner: ▼  Neon Skyline  ·  offset 01:00:00:00. Every cue below it belongs to that song until the next banner. Banners give you the gold separators in the cue list, the CURRENT SONG readout in the header, and the names the set list matches against.

Each song lives on its own timecode island (its offset), so songs can sit in the sheet in any order. Cues fire by timecode no matter how the document is arranged, and the cue list still displays in document order.

The [ SET LIST ] section

One song name per row, in tonight's order. The set list panel numbers them, lights up the one you're in, dims the ones you've played, and shows each song's first stamp and cue count. Names match loosely (case and punctuation don't matter), and an entry with no matching banner shows no matching song in sheet instead of breaking, so a typo is loud during prep instead of quiet during the show.

No SET LIST section? The panel falls back to the order songs appear in the sheet.

Set list and cue list panels
Set list + cue list · gold banners separate songs · the live cue glows
Changed set?

Reorder the rows in [ SET LIST ], reload the sheet (or hit ↻ Sheet if it's a Google Sheet), done. The cue table never moves. That's the point: the library holds every song you've ever programmed; the set list picks tonight's show.

[ In test mode ]

Click any song in the set list, or any cue in the cue list, and the test clock jumps straight there. Fastest way to rehearse one transition over and over.

[ 07 ] · Calls without a standby

The *star* envelope.

Some things deserve a heads-up, not a standby and a GO.

Wrap a cue's NOTES cell in asterisks (or underscores) and it becomes a plain note:

[ In the sheet ]

*Confetti drop on the downbeat · no pickup*

A plain note is still automatic. It is spoken once, exactly at its timecode, and it gets no standby, no GO, and no fade-out. On screen it renders in italic gold with a [ NOTE ] eyebrow so it never reads as a pickup.

Use it for confetti and pyro warnings, scenic moves, guest walk-ons, anything the room should hear about without arming an operator.

A plain note rendered in italic gold
A *wrapped* note · spoken at the stamp, no standby, no GO · gold italic on screen
Why asterisks and not italics?

Real formatting doesn't survive the trip. CSV files, Google Sheet links, and saved sessions all carry plain text only, so an italic cell would silently lose its meaning. The *…* marker rides through every load path unchanged. The app strips the stars before anyone sees or hears them.

[ 08 ] · The virtual caller

The voice.

Every cue gets a standby at the lead time and a GO on the stamp. The engine guarantees the GO always wins.

"Standby Spots. Spot 2 to the guitarist… at Half." "Spots, GO!" "Spot 2 fade out now" T−10s · standby lead T−0 · the stamp out time
One cue's life · the loop repeats every 9 seconds

Priority · who talks over whom

Calls queue instead of clipping each other. Three tiers: GO outranks fade-outs outranks standbys. A higher tier interrupts a lower one mid-sentence and fires exactly on its stamp; the interrupted call replays right after, in priority order. A standby whose cue has already fired is dropped instead of played late. Jump the timecode and the whole queue clears. The result: a GO has never once landed late because something else was talking.

GO pre · reaction-time compensation

Operators need a beat to react. GO pre fires the spoken GO early by up to 3 seconds so the pickup lands on the stamp instead of the word. Start at 0, watch your ops for a song, and dial in what the crew actually needs.

The knobs

[ 05 ] Voice calls · virtual show caller
Call cues out loud
Spots
Standby10s
GO pre0.00s
Voice · system default  ▾
Rate1.00x
Volume100%
▶ Test call
Settings · section [ 05 ]. Prefix wraps every call ("Spots" → "Standby Spots…" / "Spots, GO!"). Blank prefix = notes are read exactly as written. ▶ Test call speaks a sample so you can audition voice, rate, and volume without a show running.
[ Spot meeting ]

The header's Run Spot Meeting reads your [ 03 ] section aloud once and shows it on an overlay; cue calling pauses while it plays. If the sheet has a [ 03B ] short version, a Short Meeting button appears too. Run it at half-hour, run the short one at five, your call.

[ Jump safe ]

Rewinds, skips, and console restarts can't produce stale calls. The engine re-arms per cue and only speaks calls that are still ahead of the clock.

Pick a voice

Any system voice works. Voices tagged · cloud need internet; for shows, pick one without the tag so the calls keep coming if the venue wifi dies. Much better offline voices can be installed in 2 minutes; see Offline.

[ 09 ] · The clock

Feeding it timecode.

Three sources. Arm one from the header; the clock follows whoever delivered signal last.

MTCLTCTEST RUN SPOT MEETINGSHORT MEETING LOAD SHEETSESSIONS↻ SHEETTEMPLATE⇩ OFFLINE FILEMANUALSETTINGS
SourceWhat it isField notes
MTCMIDI Timecode over USB / a MIDI interface (Web MIDI). Reads quarter-frame and full-frame.Chrome asks for MIDI permission the first time; allow it. Pick a specific device in Settings → Inputs if more than one is connected.
LTCAudio timecode into any input: an interface, a mic line, a USB dongle. Decoded in the browser.The decoder watches every channel of the input and locks onto the hottest one automatically, so a re-patch mid-show fixes itself. A per-channel meter lives in Settings → Inputs.
TESTInternal free-running clock. No console, no cables.Start TC and fps live in Settings [ 08 ]. While testing, click any cue or song to jump. The Test button always restarts from the start TC; arming MTC or LTC takes over from it.
Green locked clock
Green · locked · cues fire
Red clock, no signal
Red · no signal · clock freezes on the last frame heard (about 1 second after the feed drops)
[ Frame rate ]

Auto-detected from the incoming signal: 24, 25, 29.97, 30. The detected rate shows under the clock. The sheet's fps field is the fallback before signal arrives.

[ 06 · Timecode offset ]

Settings holds a global offset added to incoming TC before cue lookup. Console runs an hour ahead of the sheet? Set -01:00:00:00 and leave the sheet alone.

LTC won't lock?

Open Settings → Inputs and read the meter. Meter dead on every channel: wrong device selected, or Chrome / macOS denied the mic permission. Meter moving but no lock: signal or level problem in the feed. That order, every time.

[ 10 ] · Files, links, sessions

Load & save.

Three ways in. One cloud store so the same show follows you to any machine.

[ A ]

File

Load Sheet or drag a .csv / .xlsx anywhere onto the page. The classic way.

[ B ]

Google Sheet link

Paste a share link in Sessions → Load from Sheet. Edits in the doc? Hit ↻ Sheet in the header and the latest rows pull in live.

[ C ]

Session

One click from the cloud store: cues, show info, meeting, and every setting restore together on any logged-in machine.

[ 01 ] Save current
Editing: VIP DEMO SHOW · Manual Example
Session name (auto: artist · city · date)
↻ Update current□ Save as new
[ 02 ] Load from Google Sheet
Paste Google Sheet link
[ 03 ] Saved sessions
The Atlas Echo  ▾Search
VIP DEMO SHOW · Manual Example ● loaded
THE ATLAS ECHO · 9 CUES · 6/12/2026
The Sessions drawer. Filter by artist, search by name, load or delete. The ● loaded mark shows which session you're bound to.
[ Update vs Save as new ]

Update current overwrites the session you loaded, same name, same slot. Save as new makes a fresh one. Loading a file or a new sheet link unbinds you, so you can't accidentally overwrite last night's show with today's experiment.

[ Sheet-linked sessions ]

Save while a Google Sheet is loaded and the session remembers its link (marked ↗ SHEET-LINKED in the list). Load it anywhere and ↻ Sheet still re-pulls the latest rows.

Google Sheet sharing

The link must be shared as Anyone with the link · Viewer. Same column layout as the template. If a sheet link ever loads weird (a few cues instead of all of them), load the saved session or the .xlsx instead; both bypass Google's CSV export quirks.

[ What a session carries ]

Cues, song banners, set list, show info, both meetings, and all settings: voice, rate, volume, prefix, leads, GO pre, hold, offset, fps, text style. A loaded session makes any machine yours.

[ 10B ] · One show, every lane · Production & Tour

Departments & lanes.

One show file, a department per lane — spots, lighting, audio, video, lasers, pyro, automation, scenic, management, notes. Each seat picks its lane and hears only its own calls.

When a show has more than one department, a Department dropdown appears at the top of the screen. Pick a lane and the machine swaps the cue list and re-points the voice caller at that lane — so the spot op hears spot calls and the pyro tech hears pyro calls off the same file. A Now tracking banner confirms each switch.

[ A ]

Tabs in one .xlsx

The Production template ships 10 tabs, one per department. Every tab is an ordinary cue sheet, so load the workbook and each tab becomes a lane. Delete the tabs you don't need.

[ B ]

A Department column

Prefer one tab? Add a Department column and tag each cue with its lane. The app splits them into the same dropdown.

[ C ]

It travels

Lanes survive a reload, a saved session, and an exported offline file. The dropdown comes back with them.

[ Tiers ]

Multi-department is a Production and Tour feature. On Operator, a show opens to its first tab only and there's no dropdown — one clean lane.

Google Sheets · name your tabs

Departments work from a Google Sheet link too — but only when your tabs are named exactly like the template: Spots, Lighting, Audio, Video, Lasers, Pyro & SFX, Automation, Scenic, Management, Notes. Rename a tab and it drops off the Google link — a Google-only limit; an .xlsx file always reads every tab regardless of name. A future release adds Google sign-in for name-free reading.

[ 11 ] · No internet, no problem

The offline file.

Bake the loaded show into a single .html that runs from a USB stick.

With a show loaded, hit ⇩ Offline File in the header. You get one file, named after the show, with every cue, the meeting, and all your settings baked in. Copy it to the show laptop, double-click, done. No internet, no VIP login, no Google. LTC, MTC, and the voice all work from the local file; Chrome asks for mic / MIDI permission once.

[ 01 ]

It's a snapshot

Cues change? Load the new sheet in the live tool and export a fresh file. Re-export anytime.

[ 02 ]

Reader mode

The offline file is run-only: load / sessions / template / export are stripped. Recipients run this show; they can't wander off into your store.

[ 03 ]

Fonts fall back

Fully offline, the display fonts fall back to system fonts. Cosmetic only; nothing functional changes.

Offline voices, the good ones

The calls use your computer's speech engine. Voices tagged · cloud in the picker need internet; everything else runs with the network unplugged. The stock offline voices are robotic; the premium ones are not, and they're free:

[ macOS ]

System Settings → Accessibility → Spoken Content → System Voice → Manage Voices… Download a couple of (Premium) or (Enhanced) voices (Ava, Tom, Evan, the Siri set). Quit and reopen Chrome, then pick the voice in Settings and audition with ▶ Test call.

[ Windows ]

Settings → Time & language → Speech → Manage voices → Add voices. Install the "(Natural)" ones. Restart Chrome, pick the voice, test.

[ 12 ] · Make it yours

Display settings.

Press S. Everything persists per machine, and saved sessions carry it all.

SettingWhat it does
[ 01 ] Note holdUntil next cue (default) keeps a note up until the next stamp takes over, or Timed clears it after 1–120 s.
[ 02–04 ] TextNote size 40–260%, any color, ten fonts, optional UPPERCASE. Make it readable from the spot chair, not from your desk.
[ 04b ] LD notesColor and size for the cyan LD line, separate from the main note.
[ 04c ] Panel layoutUnlock, then drag the grips above and below the Current panel to resize Previous / Current / Next. Locks back for the show; sizes travel with the offline file.
Flash on new cueThe note panel flashes when a cue fires. Catches the corner of your eye when you're heads-down.
[ 07 ] InputsPick a specific MIDI device and audio input; live per-channel LTC meter.
[ 08 ] Test clockStart TC and frame rate for rehearsal mode.
[ 13 ] · Run the show

Show-day checklist.

[ 01 ]

Load the show: session, sheet link, file, or the offline file on the show laptop.

[ 02 ]

Check the footer: right show, right rev, right cue count. Two seconds that save a night.

[ 03 ]

Arm MTC or LTC, roll timecode from the console, confirm the clock goes green and the fps reads right.

[ 04 ]

Voice check: ▶ Test call at house volume. Offline voice (no · cloud tag), rate and volume where the crew likes them.

[ 05 ]

Run the spot meeting from the overlay at the half hour.

[ 06 ]

F for fullscreen. Watch the first standby land. You're running.

When something's off

SymptomFix, in order
Clock red, no lockSource armed? For LTC: Settings → Inputs meter. Dead meter = device / mic permission (Chrome site permission, then macOS → Privacy → Microphone → Chrome). Moving meter, no lock = check the feed level and the line itself.
Clock green, wrong cuesWrong rev loaded, or the console clock disagrees with the sheet: set the offset in Settings [ 06 ] instead of re-stamping 60 rows mid-show.
No voiceSettings [ 05 ]: "Call cues out loud" on? Volume up? A · cloud voice with no internet is silent: pick an offline voice. Meeting playing also pauses cue calls until it ends.
Google Sheet loads few cuesKnown Google export quirk on odd header cells. Load the saved session or the .xlsx file; flag the sheet to Jake after the show.
Test clock won't stopBy design the Test button restarts the run. Arm MTC / LTC to take over, or reload the page.
Browser tab hiddenKeep the tab visible on the show machine. Background tabs get throttled by Chrome; the decoders survive it, but the display is the whole point. Fullscreen it.
Golden rule

Rehearse once in TEST before you ever plug into a console. Five minutes clicking through your cue list catches a bad stamp, a missing star, or a weird call long before soundcheck does.

[ 14 ] · Keep this handy

Quick reference.

[ Keys ]

F fullscreen · S settings · Esc close drawers

[ Cue columns ]

TIMECODE · LABEL · NOTES · OUT TIME · LEVEL · LD NOTES

[ Star note ]

*text* = spoken once at the stamp · no standby · no GO

[ Tokens ]

{artist} {show} {venue} {city} {date} {fps} {rev} {console} {ld} {sm}

[ Song banner ]

▼  Song Name  ·  offset 01:00:00:00