Skip to content

Tutorial: Beat Link Trigger

Justin Belcher edited this page Jan 2, 2024 · 6 revisions

Overview

Beat Link Trigger is an open-source project that monitors tempo and beat information from Pioneer DJ devices on a local network. This can be used to synchronize the metronome of LX Studio.

Installation

Download and install Beat Link Trigger here: https://github.com/Deep-Symmetry/beat-link-trigger

Pre-built releases are available for Mac/Windows: https://github.com/Deep-Symmetry/beat-link-trigger/releases

Note from Deep Symmetry Feb 2023: The BLT application bundle for macOS uses an imbedded intel-based version of java. If you're on Apple architecture you can get around that by installing a JDK and running the BLT jar.

Configure LX Studio

Configure LX Studio to receive OSC messages.

Set the clock source in the toolbar to OSC. Beat trigger modulation can be enabled/disabled using the circular green button on the right. The button remains gray when disabled, and pulses green on beats when enabled and clock signal is being received.

Pattern and effects that query the lx.engine.tempo object directly will not need any modifications or updates. Custom code that wishes to receive a listener callback on beat/measure events can register as follows:

lx.engine.tempo.addListener(new Tempo.Listener() {
  public void onBeat(Tempo tempo, int beat) {}
  public void onMeasure(Tempo tempo) {}
});

Configure Beat Link Trigger

First, from the gear icon select Edit Setup Expression and enter the following:

(swap! locals assoc :lx (osc/osc-client "localhost" 3030))

Note that you may substitute localhost and 3030 if LX Studio is running on a different machine or OSC settings.

Next, select Edit Beat Expression and enter the following:

(when trigger-active?
  (osc/osc-send (:lx @locals) "/lx/tempo/beat" beat-within-bar)
  (osc/osc-send (:lx @locals) "/lx/tempo/setBPM" effective-tempo))

The first osc-send call sends an active beat, and the second one sends the tempo. Typically LX Studio applications will want to receive both, but it is possible to only send one or the other if desired.

Finally, repeat this process for Edit Shutdown Expression and enter the following to close the OSC client:

(osc/osc-close (:lx @locals))

Notes

Pioneer DJ equipment can generate a lot of local network traffic. This is not necessarily a problem, but if you are also using a local network for a large amount of LED output (e.g. ArtNet/sACN traffic), then it is generally a good idea to separate these networks. Possible approaches include:

  • use two distinct network interfaces on your LX Studio machine
  • use a physical switch that can separate the traffic with VLANs

Hardware Compatibility

BLT added support for CDJ 3000s in v7.3.0 released November 2023.

Many thanks to Justin Belcher for initial determination and documentation of these settings.