Pro DJ Link & OSC
Trigger Ghost Arcade clips from Pioneer DJ and AlphaTheta players using Pro DJ Link, Beat Link Trigger, and OSC. Ghost handles the complete VJ address map; you only need to connect the bridge once and choose which DJ events fire which clips.
Pro DJ Link
CDJs and rekordbox share player and beat information.
Beat Link Trigger
Watches the players and sends OSC when selected events occur.
Ghost Arcade
Receives OSC and triggers clips, columns, opacity, or crossfades.
Install the bridge
Download and install Beat Link Trigger. It can run on the Ghost Arcade computer or another computer connected to the same wired network.
Connect the DJ players, the Beat Link Trigger computer, and any rekordbox computer to the same Ethernet switch. Launch Beat Link Trigger and confirm that it sees the players before continuing.
Enable OSC in Ghost Arcade
- Open Ghost Arcade.
- Open Settings, then Integrations, then OSC.
- Enable the OSC listener and leave the port set to 8000.
- Click Install VJ / Pro DJ Link Template.
- Open VJ Mode and place content in the cells you want to trigger.
The template creates Deck A and Deck B clip triggers, column triggers, Stop All, master opacity, and crossfader control. OSC addresses use human-friendly one-based numbers: layer 1 and clip 1 are written as /layer/1/clip/1.
Connect Beat Link Trigger to Ghost
In Beat Link Trigger, open the Triggers window and edit its Global Setup Expression. Paste this when both applications run on the same computer:
(swap! globals assoc :ghost
(osc/osc-client "127.0.0.1" 8000))If Beat Link Trigger runs on another computer, replace 127.0.0.1 with the LAN IP address of the Ghost Arcade computer:
(swap! globals assoc :ghost
(osc/osc-client "192.168.1.50" 8000))Then add this Global Shutdown Expression so the connection closes cleanly:
(when-let [client (:ghost @globals)]
(osc/osc-close client))
(swap! globals dissoc :ghost)Create a clip trigger
Create a trigger in Beat Link Trigger. Choose the player or player group to watch, set the trigger's message type to Custom, and paste this into its Activation Expression:
(osc/osc-send (:ghost @globals)
"/ghost/vj/a/layer/1/clip/1"
(float 1.0))This launches Deck A, layer 1, clip 1. To launch Deck B, layer 2, clip 3 instead:
(osc/osc-send (:ghost @globals)
"/ghost/vj/b/layer/2/clip/3"
(float 1.0))Duplicate the Beat Link Trigger row for each visual cue and change only the OSC address. Ghost's clip quantization still applies, so triggers can land on the next beat or bar.
Trigger visuals from rekordbox cue points
For track-specific shows, use Beat Link Trigger's Show interface. Add cues to the rekordbox track, assign an Entered or Started On-Beat expression to each cue, and send the corresponding Ghost address:
(osc/osc-send (:ghost @globals)
"/ghost/vj/a/layer/1/clip/4"
(float 1.0))This lets the DJ launch a track normally while rekordbox memory or hot cues drive synchronized visual changes.
Synchronize tempo with Ableton Link
Use OSC for discrete actions such as launching clips, changing columns, or stopping the deck. Use Ableton Link for tempo and beat phase. Enable Link in Beat Link Trigger and in Ghost Arcade, then set the desired Ghost launch quantization.
This split is deliberate: Link maintains musical timing while OSC carries the show commands. It is more stable than trying to recreate a continuous beat clock with many individual OSC messages.
Ghost OSC address map
| OSC address | Action |
|---|---|
| /ghost/vj/a/layer/1/clip/1 | Trigger Deck A, layer 1, clip 1 |
| /ghost/vj/b/layer/2/clip/3 | Trigger Deck B, layer 2, clip 3 |
| /ghost/vj/a/column/1 | Trigger every populated clip in Deck A column 1 |
| /ghost/vj/b/column/1 | Trigger every populated clip in Deck B column 1 |
| /ghost/vj/stop | Stop all VJ clips |
| /ghost/vj/master | Set master opacity with a value from 0.0 to 1.0 |
| /ghost/vj/crossfader | Set the A/B crossfader with a value from 0.0 to 1.0 |
The default template creates four layers and eight clips per layer on both decks. Trigger messages may contain 1, 1.0, true, or an OSC impulse. Continuous controls use values from 0.0 to 1.0.
Using OSC without Pro DJ Link
Any DAW, TouchOSC layout, Max for Live device, lighting desk, or show-control application can send the same addresses directly to Ghost Arcade on UDP port 8000. Beat Link Trigger is only required when the source event originates on a Pro DJ Link network.
If nothing triggers
Beat Link Trigger sees no players
Use wired Ethernet, confirm every device is on the same subnet, and check that another application is not monopolizing the Pro DJ Link interface.
Ghost receives no OSC
Confirm OSC is enabled on port 8000. On separate computers, use the Ghost computer LAN IP and allow UDP port 8000 through its firewall.
OSC arrives but no clip launches
Install the VJ template, verify the OSC address, and make sure that VJ cell contains a clip. Layer and clip numbers start at 1 in OSC addresses.
The launch feels late
Check Ghost launch quantization. Use Ableton Link for beat and phase, or set quantization to Off for immediate triggering.
The wrong deck fires
Deck A addresses begin with /ghost/vj/a/. Deck B addresses begin with /ghost/vj/b/.
Controls move in the wrong direction
For master opacity and crossfader, send a float from 0.0 to 1.0. Trigger addresses should receive 1.0 or an OSC impulse.