Skip to main content

17 · On-Device ML Detection (BETA)

On-Device ML Detection reads the burnt-in camera and QTAKE overlay text on your live SRT input feeds and presents it as clean, structured fields you can read at a glance. It uses Apple's on-device Vision OCR, so the picture never leaves your Mac. Reach for it when you want production values (camera, clip, timecode, scene/take) pulled off the picture without anyone reading them aloud.

macOS only. Turn it on in Settings → Beta Features: switch Beta Features on, then tick ML Detection.

Turn it on and start a feed

  1. Open Settings → Beta Features, switch Beta Features on, then tick ML Detection.

  2. On any SRT row in the main window, click the small purple ML chip. It fills solid and detection starts.

  3. Open the ML Monitor to watch the values — click Open ML Monitor window in Settings, or the purple ML button in the main-window footer.

The ML chip appears on SRT rows only.

To open the ML Config editor, click ⚙ Config in the ML Monitor header. It targets whichever row you have selected.

Reading a feed: the ML Monitor

The Monitor is your live dashboard. Pick a feed using the row chips along the top, then read its values.

Ten headline cards show the key production values:

  • Camera row: Camera · Clip · FPS · TC (timecode) · Cam Status

  • QTAKE row: QTAKE · Scene · Take · Cam ID · Status

Cards colour themselves so you can read state at a glance: Cam Status is red for REC, green for STBY/IDLE; QTAKE Status is amber for LIVE, yellow for DISK, green for PLAY. The TC card free-runs from the detected FPS and shows a pause glyph when timecode isn't advancing.

Common tasks

Fix a misread or junk field

  1. Click a field's pencil to rename it or re-assign its Source and Category.

  2. Click a field's trash icon to hide a junk field. Restore it later from the "X hidden — show / restore all" line.

  3. If a card shows an orange conflict badge, open ⚙ Config and delete the duplicate box claiming that field.

Detect several cameras in one quad/dual feed

  1. Set Feed layout to Quad or Dual.

  2. Lower the detection rate (Hz) to 1 or 2 — every region is read, so the cost adds up.

  3. Each sector gets its own tile; click a tile to focus it and read its fields below.

Controls you'll touch

Control

What it does

Detection rate (Hz)

How often each feed is read: 0.5 / 1 / 2 / 4 Hz (default 4). Lower it for quad/dual.

Feed layout

Split the feed for per-region detection: Full / Quad / Dual (default Full).

Card source picker (✎)

Choose which group (Auto / Camera / QTAKE / Slate / Other) powers a headline card.

Per-field pencil

Rename a field and re-assign its Source and Category.

Per-field trash

Hide a junk field on this row. Restore it from the hidden-fields line.

🔒 Lock

Read only your mapped boxes — no new fields invented. Available once the row has a saved layout.

Clear readings

Wipe the on-screen values for the focused sector. Your saved config is untouched; values refill as detection continues.

⚙ Config

Open the Config editor for the selected row.

Mapping a layout: the ML Config editor

Auto-detection works out of the box, but for clean, reliable fields you can tell Pulsar exactly which on-screen box is which value. Config captures a frame, overlays the OCR boxes, and lets you assign each one.

Map a layout

  1. In the Monitor, select the row and click ⚙ Config.

  2. The editor captures the current frame and overlays OCR boxes (dashed = auto-guessed, solid = confirmed).

  3. Click a box and set its role: value (green), key — the on-screen label (blue), or ignore (grey).

  4. For a value box, type a Key/label and choose its Source and Category.

  5. Pair a value to its label: click Pair to key box, then click the label box (or ⌥-drag the value onto the key).

  6. For a box that spans several words, shift-click them and click Combine. For a single "LABEL value" box (e.g. TILT -51.8°), use Split label — the first word becomes the key, the rest the value.

  7. Pick a scopeShared preset (reusable on any row) or This stream — name it under Save as, then click Save.

  8. Back in the Monitor, click 🔒 Lock if you want only your mapped boxes read.

Steering source attribution with Regions

Regions tell Pulsar which area of the picture belongs to which source, and can mask out parts of the live image.

  1. In Config, click Regions.

  2. Pick a kind: Camera, QTAKE, Picture, or a negation (Not camera / Not QTAKE / Not picture).

  3. Drag a box over the relevant area. Draw more as needed.

  4. Reorder overlap priority with ↑/↓ (top wins); delete with .

  5. Click Save. A Picture region suppresses incidental text from the live image; Camera/QTAKE regions attribute ambiguous fields (REC/STBY, clip) to that source.

Fixing repeat OCR misreads

Under OCR fixes, add global value translations (e.g. ORECREC) with a from/to pair, and remove them with ×.

Resetting a feed to automatic detection

  1. Open Config for that row and click Reset (red).

  2. Confirm the prompt to clear this feed's configured fields, source pins, hides and lock.

  3. If you drew regions, answer the second prompt to keep or clear them.

The feed reverts to auto-detect; the shared preset and other rows are unaffected. Reset cannot be undone.

Tips & gotchas

  • Pause to edit. In Config, the live preview re-captures the frame about every second — hit ⏸ Pause to freeze a frame before editing. Going Live discards in-progress edits.

  • Lock needs a layout. The 🔒 Lock button stays disabled until you map ROI boxes in ⚙ Config and Save.

  • Saving flushes readings. After you Save a config, the Monitor clears that row's values. Give it a second and a clean frame to repopulate.

  • OCR rate is capped at 4 Hz — it can't run on every video frame. Lower it for quad/dual, since every region is read.

  • PLAYBACK? is a guess. A dashed PLAYBACK? on the QTAKE Status card means camera REC but timecode behind the live edge — inferred, not read off the feed.

  • Faint glyphs hold. A flickering or faint glyph (e.g. a small cam-ID letter) keeps its last-good value and dims rather than blanking.

  • Stray values self-clear after about 5s of not being seen; named fields under a real source persist as placeholders.

  • Deletes are per-row, overrides are global. A hidden field stays hidden on that row even if re-detected; source/label renames apply everywhere. Both persist.

  • Regions replicate in quad/dual. Draw them against the whole-frame preview — a box near the centre repeats into every cell.

  • Black feeds self-heal. If a feed goes black the Monitor shows "stale (feed black?)"; switch the upstream feed and it recovers within about 15s — no need to touch the ML chip.

  • Unsaved Config blocks row switching. An amber banner offers Discard & switch or Dismiss if you try to switch rows with unsaved edits.

See also

  • SRT Input — the only source type ML Detection works on

  • Main Window — where the per-row ML chip lives

  • Settings & Configuration — where Beta Features and the ML Detection toggle live

  • Monitoring & Preview — watching your feeds

  • Troubleshooting · Glossary

Did this answer your question?