Sources & Inputs
Where data comes from: ProDJ Link, timecode generators and inputs, DMX, PSN and tone monitoring.
ProDJ Link adapter (default + backup)#
Utility → Network → ProDJ Link: ProDJ Link Adapter is this machine's interface facing the players; every ProDJ Link source whose Interface is Default (the default for new sources) uses it, so one Patch works on any machine. A source set to a named interface this machine lacks falls back to it too. Backup Adapter: ProDJ Link moves over when the adapter disappears or hears no player for 8 s while the backup is present; it stays on the backup until that goes quiet (no automatic flip back mid-show). Only one is ever on the network. Active shows which one is in use. Machine-local, never in a show file.
Auto (the default on a fresh install): ShowKontrol listens for ProDJ Link traffic and uses the interface it is heard on, so a clean start finds the players by itself. While searching it only listens (nothing is sent on any network). Active reads "Auto: Searching for ProDJ Link traffic" until players are heard, then "Auto: en5 (192.168.1.10)". Once found, the interface stays while it has players; it only moves when it stays empty for 10 seconds while players are heard on another interface (that is also how two adapters on the same 169.254 link-local network are told apart). When the players simply go quiet, nothing changes. Pick a named interface to fix it.
TCNet adapter#
Utility → Network → TCNet: TCNet Adapter is the network interface TCNet uses on this computer. Every TCNet node whose Network Interface is Any (the default) uses it, so one patch works on any machine.
- Same as ProDJ Link (the default) follows the ProDJ Link adapter. TCNet usually runs on the players' network, so this is right for most rigs.
- Pick an interface when TCNet runs on a different network than the players, for example a separate lighting or video network.
- When the chosen interface is not present, TCNet falls back to the ProDJ Link adapter.
- A TCNet node set to a named interface keeps using that one.
Show Check#
Show Check lists everything that has to be right before doors: the show, the players, the recorder, disk space, the Cue Caller, displays and recent incidents. It runs by itself 10 seconds after start (General → Show Check: Always, On Problems or Never).
- Status bar: Every window shows the Show Check verdict at the bottom right, left of the TCNet heart. Green OK, orange NEED ATTENTION with the number of warnings, red NOT READY with the number of problems. Right next to the heart it shows this machine's licence and the ShowKontrol version, for example "ShowKontrol CLUB · 27.0.1". They stay in place when the verdict changes.
- The verdict is checked again every 30 seconds, so it stays current.
- Click the verdict to open Show Check with a fresh check.
Timecode Generator source#
A Source node with Type = Timecode Generator is a clock that behaves like a deck. It publishes one virtual deck whose position is the generated time, so you wire it like any player: Source → Device (Deck Number) → LTC / MTC / TCNet / Art-Net, the Viewer, a Router, and so on.
Settings:
- Mode:
- Free Run: Its own clock, from the Start Time, running while Running is on and holding where it is when off.
- Time of Day: The computer's clock (jam to the time of day). Running and Start Time do not apply.
- Start Time:
HH:MM:SS:FF. Changing it jumps the clock there. Back to Start returns to it and keeps running if it was running. - Frame Rate: 24 / 25 / 29.97 DF / 30. The timecode it drives uses this rate.
- Deck Number: Which deck it appears as (1–8). Use one no real player has; a real deck on the same number wins.
- Track Title: The "track" the deck reports. Attach the same title to a Catalog track and that track's cue list runs on the generator's clock.
- Scripts can drive it, e.g.
output.TCGen.tcgen.running = true;oroutput.TCGen.tcgen.start = "10:00:00:00";(TCGen = the node's name).
Timecode inputs (LTC In / MTC In / Art-Net TC In)#
A Source node with Type = LTC In, MTC In or Art-Net TC In makes ShowKontrol chase an external clock: a DAW, a video server, a lighting console or a tape machine. It publishes one virtual deck, just like the Timecode Generator, but its position comes from the timecode it receives. Wire it the same way (Source → Device → LTC / MTC / TCNet / Art-Net, Viewer, Catalog cue lists). The deck plays while the timecode runs and pauses when it stops.
Inputs:
- LTC In: Pick the audio Input Device and Input Channel. The LTC is decoded here. It works forward and backwards, at 24 / 25 / 29.97 DF / 30, and at any line level (the decoder follows the level). macOS asks for microphone access the first time.
- MTC In: Pick the MIDI Input port: an interface, a network MIDI session, or an IAC bus from a DAW on this Mac. Quarter frames run the deck. A full-frame message (sent when the DAW stops or locates) moves it there and holds it.
- Art-Net TC In: ArtTimeCode on UDP 6454. The Interface limits it to senders on that network (Any = all). Timecode sent by this computer is ignored unless Accept From This Computer is on. This stops an Art-Net TC output that follows this deck from feeding back into it.
Common settings:
- Frame Rate: Auto (MTC and Art-Net state their rate; LTC's is detected from the frame numbers and the frame length), or a fixed 24 / 25 / 29.97 DF / 30. The outputs use this rate.
- Offset:
HH:MM:SS:FF, subtracted. With 10:00:00:00, an incoming 10:00:00:00 is deck position 0. Before that the deck waits, paused, at 0. - Freewheel (ms): On a dropout the deck keeps rolling this long (default 500 ms, never less than 3 frames), then stops where the timecode last was.
- Jam:
- Continuous: follows the incoming timecode all the time. Between frames the position runs smoothly on the computer's clock. If it is more than one frame off, it re-syncs at once.
- Jam Once: jams when the timecode starts, then runs on its own clock. Only a relocate of more than 1 s re-jams.
- Jam + Run On: like Jam Once, but a dropout does not stop it. It stops only when the source itself stops or pauses.
- Deck Number / Track Title: As for the Timecode Generator.
Live values on the deck (for Triggers and Scripts): tcin.locked (timecode arriving), tcin.running, tcin.freewheel, tcin.reverse, tcin.fps (rate in use), tcin.detectedFps, tcin.value (last received time, raw, before the offset; ; = drop frame), tcin.ageMs, tcin.dropouts, tcin.resyncs, tcin.rate (source speed), tcin.offsetMs, tcin.sender, tcin.inputOk, tcin.level (LTC, dBFS) and tcin.status (e.g. LOCKED 25 fps, FREEWHEEL, STOPPED at …). The node shows a red line only for a real fault, such as a missing device or port, or UDP 6454 unavailable.
DMX Input (a lighting desk fires ShowKontrol)#
Add a Data Generator node and set Source to DMX Input. It receives one DMX universe from a lighting desk, Art-Net or sACN (E1.31), and publishes the channels you choose as live values, so the desk operator can fire Triggers, cues and Actions from a fader or a playback:
| Key | Meaning |
|---|---|
dmx.ch1 … dmx.ch512 | the channels in the Channels list, 0–255 |
dmx.ch1_16 … | 16-bit pairs from the 16-bit Pairs list (coarse × 256 + fine, 0–65535) |
dmx.present / dmx.lost | data is arriving / missing longer than Lost After |
dmx.lostMs / dmx.ageMs | how long it has been missing / since the last packet |
dmx.fps / dmx.frames | packet rate / count |
dmx.fromIP / dmx.source | who sends it (sACN: the source name) |
dmx.universe / dmx.universeName / dmx.protocol | what is being listened to (Art-Net: 15-bit Port-Address and net:sub:uni) |
dmx.status | receiving 44 fps from …, LOST 3.2 s, listening — no data yet … |
Settings:
- Protocol: Art-Net (UDP 6454, broadcast or unicast to this Mac) or sACN (multicast
239.255.hi.lo, UDP 5568). - Network Interface: Art-Net (only senders on that subnet count; sACN) the network card that joins the multicast group (pick it when the Mac has more than one network).
- Net / Sub-Net / Universe (Art-Net,
0:0:0is the first universe, a desk that counts from 1 calls it Universe 1) or Universe (sACN, 1–63999). - Channels: A list like
1-16, 20, 100-110. 16-bit Pairs: The coarse channels of 16-bit pairs, e.g.1, 5. - Lost After (s): The channel values keep their last level; only
dmx.present/dmx.lostchange. - Only From IP (Art-Net): ignore every other sender of the universe.
- Ignore This Mac: On by default, so ShowKontrol's own Art-Net / sACN outputs on the same universe don't loop back. Turn it off to receive a desk running on this Mac.
- Answer ArtPoll (Art-Net): ShowKontrol answers the desk's poll as an Art-Net node with this universe, for desks that only send to discovered nodes.
- Log Incidents: "DMX LOST" / "DMX back" into the Incidents log.
sACN: the highest priority source wins; at equal priority the source that has the universe keeps it while it keeps sending (2.5 s silence or "stream terminated" hands it over). Preview packets are ignored.
Example: a Trigger on dmx.ch1 Greater Than 127 → an Action (fire a cue, GO on the cue list…); or a Script reading dmx.ch5_16 to scrub something smoothly.
PSN Receiver (tracking positions)#
Add a Data Generator node and set Source to PSN Receiver. It receives PosiStageNet (PSN v2) from a tracking system (BlackTrax, zactrack, Stage Tracker, a media server…) (multicast 236.10.10.10, port 56565 by default) and publishes every tracker:
| Key | Meaning |
|---|---|
psn.<id>.x / .y / .z | position (metres) |
psn.<id>.speedX/Y/Z, .oriX/Y/Z, .accelX/Y/Z, .targetX/Y/Z | speed, orientation (rotation vector, radians), acceleration, target position, only what the sender sends |
psn.<id>.validity / .timestamp | the tracker's status and time stamp, when sent |
psn.<id>.name / .present / .ageMs | its name, is it updating, how long since |
psn.<name>.… | the same keys under the tracker's name (spaces and dots become _) |
psn.present / psn.lost / psn.lostMs | the stream as a whole |
psn.trackers / psn.ids / psn.fps / psn.frames | how many trackers, their ids, frame rate / count |
psn.system / psn.fromIP / psn.status | the sending system's name, address, a status line |
Settings: Network Interface, Multicast Group, Port, Keys (ID and Name, ID Only, Name Only) and Lost After (s). Positions keep their last value when the stream stops.
Example: a Script turning psn.1.x / psn.1.y into a pan value for an OSC output, or a Trigger when a performer crosses a line (psn.Singer.x Greater Than 2).
Tone Monitor (watch for a reference tone)#
The partner of the Ref Tone output. Add a Data Generator node and set Source to Tone Monitor. It listens to one channel of an audio input and publishes live values that Triggers and Actions can use:
| Key | Meaning |
|---|---|
signal.present | the tone (or signal) is there right now |
signal.lost | missing for longer than Lost After, the alarm |
signal.lostMs | how long it has been missing |
signal.level / signal.toneLevel | peak / tone level in dBFS |
signal.drops | how many times it has been lost |
signal.inputOk | the audio input itself is delivering |
signal.status | OK, OK (between bursts), LOST, NO INPUT … |
Settings:
- Input Device and Input Channel.
- Listen For:
- Tone: The Frequency must be present above the Threshold and carry at least half the power, so music at that level doesn't count.
- Any Signal: Anything above the Threshold.
- Frequency and Threshold (dBFS).
- Lost After (s): When watching a heartbeat, set this longer than the heartbeat's interval.
- Log Incidents: Writes "signal LOST" / "signal back" into the Incidents log.
Example: a Trigger on signal.lost State On, feeding an Action (OSC to the automation system, flash the screen, a MIDI note…).
