Skip to content

Cues & triggers

A cue is a trigger → action pair attached to a track. When the trigger fires (the track loads, the playhead hits 1:32, the fader comes up…), the action executes (a MIDI note goes out, a CC ramps, a command runs).

Cues live on tracks in your setlist: Tracks page → select a track → Cues section.

The Cues section has four quick-add buttons — + On-Load, + On-Play, + On-Unload, + Timeline — which create a cue with that trigger pre-set. Click any cue row to open the editor.

Cue editor — MIDI note with per-deck channel overrides

In the editor:

  • Name — what shows on the waveform markers, cue lists, and activity history.
  • Cue number — optional; decimals allowed (3.5 slots between 3 and 4). Unnumbered cues auto-number by position.
  • Trigger and (for timeline cues) Trigger Time.
  • Action type and its fields (below).
  • Notes — free text; shows beside the cue name in the deck cue panel, so keep the first few words meaningful.
  • Test — fires the action right now, bypassing all gating. The fastest way to verify the receiving end reacts. Uses your unsaved edits.
  • Enter saves and closes; Escape cancels. (Enter inside the notes field makes a new line — use the Save button there.)

Timeline cues can also be repositioned by dragging their marker pill on the waveform — no editor round-trip needed.

TriggerFires when
On LoadThe track is loaded onto a deck (before play)
On PlayTransport goes from stopped/paused → playing
On UnloadThe track is ejected or replaced
On AirThe deck goes live — channel fader up on the DJM
Off AirThe deck goes off-air
TimelineThe playhead crosses the cue’s trigger time

Notes on behaviour:

  • Timeline cues re-arm if the DJ rewinds back past them — loop back over a drop and the cue fires again on the next pass.
  • On-Air / Off-Air transitions are debounced against mixer noise, and these trigger types (plus load/unload) carry a built-in 5-second minimum between re-fires of the same cue — flicker on the fader won’t machine-gun your desk.
  • Each cue also has its own Debounce (ms) on top of that (default 500 ms).
FieldDescription
MIDI PortDefaults to the cue output port from Settings → MIDI; override per cue if needed
Channel1–16
Note + VelocityFor note messages. Velocity 0 sends Note Off
CC + ValueFor control-change messages
FadeAppend [seconds] to a value — 127[2] ramps from the last-sent value to 127 over 2 s (~30 updates/s). Works on CC values and velocities

One cue, different values per deck. Type * in a field (channel, note, velocity, cc, value) and fill the per-deck table — the value is looked up by the deck that fired the cue:

Deck 1 → CH1 NOTE60 VEL127
Deck 2 → CH2 NOTE62 VEL127

Deck numbers here are the display player numbers (P1–P4 as shown in the UI). The activity history always shows the resolved values that actually went out, never the *.

Runs a shell command on the machine. Use for triggering scripts, OSC senders, anything CLI-able.

Drives Helm DJ itself from a cue:

CommandEffect
ltc_assign_playerPoint the LTC output at the deck that fired the cue
timecode_enable / timecode_disableTurn timecode output on/off

A label only — nothing is sent. Markers still show on the waveform and log in the activity history when crossed, so they’re useful for annotating structure (“drop”, “outro starts”) and for verifying timing before you commit to a real action.

  • Trigger only when deck is live (on-air) — the cue is skipped unless the deck is on-air. The key to rehearsal-safe programming: the DJ can practice with the fader down and nothing fires; push the fader up for the show and everything works.
  • Player numbers filter — restrict a cue to fire only from specific decks (e.g. 1, 2).
  • Enable toggle — disable a cue without deleting it; disabled cues show dimmed in the list and log as skipped.
  • LIVE (top bar) — global arm. Disarmed = every trigger evaluated and logged, nothing sent. Rehearse with it off, verify in the activity panel, then arm.
  • STOP (top bar) — panic. Suppresses all cue output instantly, silences LTC, freezes MTC, stops MIDI Clock. Click again to clear.
  • Per-deck automation switch — disable one deck’s cues without touching the others.

The panel docked at the bottom of the Decks page logs every trigger evaluation:

ColumnShows
TimeWhen it happened
DeckPlayer number that fired it
CueName + the resolved action (CH1 NOTE60 VEL127)
Outcomefired, or skipped with the reason (off-air, debounced, disabled…)

This is your ground truth during a show — if the desk didn’t react, the history tells you whether Helm DJ sent the message (look downstream) or skipped it (and why).