Triggers & Actions
Turn a change in the data into a button press, a screen switch, a cue or anything else the app can do.
Triggers#
A trigger watches one Property Path (a data key) and produces an active state that downstream Actions and generators follow.
- Source: Data Field (classic, watch a key) or Timer (fire on a repeating interval).
- Event (Data Field): On Change · On Receive · State On · State Off · On Increase · On Decrease · Equals (with a Value). On Receive fires on EVERY message, even when the value repeats (an OSC
/gosent twice fires twice), for sources that count their arrivals (<key>.rxCount: OSC Input / Surface); on other keys it acts like On Change. - Interval (Timer): Manual (a number in ms) or From Data Field (e.g.
beat.msToNextBeatre-fires every beat). Fires keep a steady cadence; missed intervals are skipped, never burst. - Release Delay: How long the trigger stays active after its condition ends (or, for edge events / timer fires, after each fire), this is the tap length. Manual (ms), or From Data Field, e.g.
beat.msToNextBeatfor a tap that lasts exactly one beat.
Add Timer in the right-click menu drops a trigger preset to Timer mode. It needs no input wire; wired, the incoming frame rides as the fired payload and can feed the interval field. Everything downstream is identical to a trigger: Actions follow start/release, MIDI gating sees trigger.active, the node flashes amber per fire.
A trigger publishes its own state into the data, visible/mappable downstream: trigger.active (0/1), trigger.value, trigger.fireCount.
Actions#
An Action runs when its feeding trigger fires. Categories:
- CDJ Transport / Hot Cues / Loops / Beat Jump: Press buttons on a CDJ.
- Deck: Auto (from data) uses the incoming
device.number, or pick 1–6. - On Release: Same as action releases the button (real button-up), or None, or a different action. This makes fader-start: A State-On trigger on a fader holds Cue down; fader drops → Cue releases.
- Deck: Auto (from data) uses the incoming
- CDJ Settings: Write Player Setting: Set any of the deck's ~40 utility settings (quantize, master tempo, tempo range, jog mode, beat jump size, brightness…) over the network. Current values live in the
setting.*keys. - Routing: Set Router Input (pick the target router + input) or Recall Matrix Preset (pick the target matrix + preset).
- Mixer: Write Utility Setting: Set a DJM utility item (
util.*). Application: The whole app as actions, so anything you can click can also be fired by a Trigger, and therefore mapped to OSC, MIDI, a Stream Deck, a GPI contact or a timeline cue. The Action popup shows the groups as submenus (the row reads e.g. Screens › Live):
- Feedback: Beep · Flash Screen (colour, fade, brightness) · Notify · Log Message. (Shows saved with the old flat names are converted on load; the old Open Settings Window became Screens › Utility, the Utility screen, not a separate window.)
- Screens: Menu · Patch · Viewer · Live · Master · Program (Schedule) (like the top bar: resumes the last Program panel) · Catalog (Track List) · Set List · Cue List · Cue Editor (the track edited last) · Cue Editor (Deck's Track) (Player: The Catalog track loaded on that deck) · Data Play Log · Data Insights · Data Mixer · Utility (Page: Open one settings page, e.g. Audio or Web Server) · Back (one step back, like the BACK chips) · System Check · Kiosk (Hide Menu Bar + Dock) Toggle. Screen actions are refused while the machine is locked.
- Players (internal players (a Device node set to Internal; Player 1–6 or Auto (from data))) Play · Pause · Play / Pause · Stop (Back to Start) · Jump to Start (keeps playing) · Tempo Reset · Load Track (Track: A Catalog title; flips the deck to Internal like "Load on Player") · Eject (Back to Link).
- Set List: Select Set (Set) · Listen (Play the Set) · Rehearse (Fire Cues) (both From Track # in the active set, decks 7 / 8, exactly the Set List's LISTEN / REHEARSE) · Skip to Transition · Stop Listen or Rehearse.
- Automation: Bypass Deck Toggle / On / Off and Solo Deck Toggle (the Master lanes' B / S buttons; Deck 1–8 or Smart Cues) · Clear All Solos · Cue Caller On / Off / Toggle (the Audio setting) · Cue Caller Mute Deck Toggle · Marker In N Seconds · Marker At Clock Time (HH:MM or HH:MM:SS) · Marker Clear (the Master's blue marker).
- System: E-STOP Engage / Release / Toggle (LOCAL to this machine, never sent over SK Network; on an ADOPTED machine an action can engage E-STOP but not release it, only that machine's own button does) · Lock Machine · Unlock Machine · Lock Toggle (the Ctrl+Esc lock) · Save Show (only a show that already has its file, never a dialog) · Set App Setting (Key + Value, e.g.
viewer.zoom=8) · Open Web Viewer. - Nodes + Outputs (Node: Any node by name) (Enable Output · Disable Output · Enable Output Toggle (an output's Enabled switch) an OSD, Art-Net, MIDI… node) · Bypass On / Off / Toggle · Stop · Resume (Unstop) · Fire (Test Button) (the node's ▶) · Set Parameter (Key + Value, e.g.
gen.osd_text=DOORS IN 5).
Set App Setting and Set Parameter go through the same checks as the REST API (
PUT /settings/{key},PUT /nodes/{id}/params/{key}): numbers are clamped to the range, choices must match an option, On/Off =true/false, andweb.*cannot be changed this way. Value fills in$VARIABLESfrom the incoming data. A refused action shows its reason in red on the node.Mapping an action to OSC (same idea for MIDI Controller, Stream Deck, Hotkeys, Serial GPI): add an OSC Input (Add Source → OSC), open its KEYS drawer, + Add Key → pick the address (or Learn / Type Address…). You land inside the node with a Trigger already watching that address, add an Action node, wire the Trigger into it, set Category Application and pick the action from the submenus (e.g. Screens › Live). Saved shows keep working: the four original Application actions kept their names.
The ▶ button tests an action like a real momentary press (hold = held).
Actions publish action.active / action.name downstream.
