Custom Captions & UMD
Captions let you add custom text overlays to any viewer tile using expression templates. Think of them as software UMDs (Under Monitor Displays) — dynamic labels that update in real time based on source metadata, timecodes, and system state.
Why Captions Matter
Section titled “Why Captions Matter”In a busy control room, you need to know what you’re looking at instantly. Default source names from NDI® are often machine-generated or cryptic (“DESKTOP-7F3K2 (OBS Virtual Camera)”). Captions let you replace that with something meaningful — “CAM 1 WIDE”, “GRAPHICS IN”, or a live timecode readout — without changing anything on the source side.
Captions are per-viewer, so you can label the same source differently depending on context. Camera 3 might show “CAM 3 - TALENT” on the director’s multiviewer and “CAM 3 - ISO REC” on the engineering wall.
Setting a Caption
Section titled “Setting a Caption”- Right-click any viewer tile
- Select Set Caption
- Enter your caption text or expression template
- The live preview updates as you type
- Click OK to apply
The caption replaces the default source info overlay on that viewer tile.
Expression Variables
Section titled “Expression Variables”Captions support expression variables that resolve to live values at runtime. Wrap variable names in curly braces:
| Variable | Description | Example Output |
|---|---|---|
{source} | Current NDI® source name | OBS Studio (Main Output) |
{viewer} | Viewer tile index | 3 |
{time} | Current system time | 14:32:07 |
{date} | Current system date | 2025-03-15 |
{tally} | Tally state (Program/Preview/Off) | Program |
{fps} | Source frame rate | 29.97 |
{res} | Source resolution | 1920x1080 |
Examples:
CAM 1 - {res} @ {fps}fpsdisplays as “CAM 1 - 1920x1080 @ 29.97fps”{source} [{tally}]displays as “OBS Studio (Main Output) [Program]”STUDIO A - {time}displays as “STUDIO A - 14:32:07”
Using the Caption Editor
Section titled “Using the Caption Editor”The caption editor dialog includes:
- Text field for typing your caption or expression
- Variable insertion buttons below the text field — click any button to insert that variable at the cursor position
- Live preview showing exactly how the caption will render with current values
- Clear button to remove the caption entirely
- OK and Cancel buttons
Click the variable buttons rather than typing variable names manually — this avoids typos in the curly-brace syntax.
How Captions Interact with Viewer Info
Section titled “How Captions Interact with Viewer Info”Laika’s viewer tiles normally show source information based on the current ViewerInfoMode (source name, resolution, frame rate, etc.). When you set a caption on a viewer:
- The caption overrides the default info display entirely
- The caption text (with resolved expressions) appears in its place
- Other viewer overlays (tally borders, audio meters) remain unaffected
To return to default info display, clear the caption using the Clear button in the caption editor or set the caption to an empty string.
Captions on NDI® Output
Section titled “Captions on NDI® Output”When NDI® Output is enabled, captions are burned into the output stream. Any receiver viewing your Laika output will see the captions exactly as they appear on your screen. This is useful for:
- Labelling feeds for downstream operators who receive your multiviewer via NDI®
- Adding persistent timecode overlays to recorded multiviewer outputs
- Creating branded monitoring feeds with studio or show identification
Web API Control
Section titled “Web API Control”Captions can be set programmatically via the Web API:
POST /api/viewers/{index}/captionThis allows external automation systems, stream decks, or custom control panels to update captions dynamically — for example, switching talent names on camera labels when presenters change.
See the Web Control API page for full endpoint documentation.
Use Cases
Section titled “Use Cases”Label cameras for talent: Set captions like “CAM 1 - HOST” and “CAM 2 - GUEST” so the director can call shots without memorising camera numbers.
Show timecodes:
Use {time} or combine with custom text like TC: {time} for a persistent clock overlay on engineering feeds.
Custom studio branding: Add show names or facility identification to multiviewer outputs that go to confidence monitors: “FETCH STUDIO A - LIVE SHOW”.
Tally-aware labels:
Use {source} - {tally} to see at a glance which sources are on program and preview without relying solely on border colors.