Liking cljdoc? Tell your friends :D


A minimal tempo bridge between Pioneer Pro DJ Link and Ableton Link.

:construction: This project is undergoing major changes. It has become a library that manages the binding between Ableton Link and Beat Link, incorporating two years of improvements to Beat Link and Beat Link Trigger, so that it supports sync in both directions, from DJ Link to Ableton Link (as it always has), and also the reverse. To eliminate duplication of work, and make sure everyone is always getting the latest code, Beat Link Trigger is now using this new library instead of having its own copy of the code.

The ability to run beat-carabiner as a standalone project for use in headless environments like the Raspberry Pi is moving to a new project, Open Beat Control. In addition to all the features that used to be available in the original Beat Carabiner project, it will make Beat Link features available to other programs (such as Max/MSP, Max4Live, and Pure Data) using Open Sound Control. A few features will be chosen initially to prove the concept, and more will be added over time.

:exclamation: For now you can still download a standalone version of beat-carabiner from the Releases page here, but as soon as Open Beat Control adopts it and goes into initial release, you will want to upgrade to that, because it will give you many new features for Ableton Link synchronization alone, as well as its other capabilities.

As suggested by marek-memsql, this is a minimal headless implementation of just enough features from beat-link-trigger to enable tempo and beat synchronization between a Pioneer Pro DJ Link session and an Ableton Link session. It is designed for headless, unattended operation so that it can be run on hardware like the Raspberry Pi.

As long as beat-carabiner is running, has an active connection to Carabiner, and sees an active Pro DJ Link Network (using its embedded copy of beat-link), it will slave the Ableton Link tempo and beat grid to match the Pioneer gear.


Install Carabiner, a Java runtime, and the latest beat-carabiner.jar from the releases page on your target hardware.

You may be able to get by with Java 6, but a current release will perform better and have more recent security updates.

You can either start Carabiner and beat-carabiner manually when you want to use them, or configure them to start when your system boots.


To start beat-carabiner manually, run:

$ java -jar beat-carabiner.jar

It will log to the terminal window in which you are running it. If you instead want to run it at system startup, you will probably also want to set a log-file path, so it logs to a rotated log file in your standard system logs directory, something like:

$ java -jar beat-carabiner.jar -L /var/log/beat-carabiner.log

Other options allow you to specify whether it should align to beats instead of whole bars, the port on which it should contact the Carabiner daemon, and how many milliseconds of latency it takes for beat packets from the CDJs to arrive and be processed (you can tweak this until you get good-sounding synchronization if necessary):


-b, --beat-align                  Sync Link session to beats only, not bars
-c, --carabiner-port PORT  17000  Port number of Carabiner daemon
-l, --latency MS           20     How many milliseconds are we behind the CDJs
-L, --log-file PATH               Log to a rotated file instead of stdout
-h, --help                        Display help information and exit


Run without synchronizing bars, with a packet latency of 35 milliseconds:

$ java -jar beat-carabiner.jar -b --latency 35


Copyright © 2017–2019 Deep Symmetry, LLC

Distributed under the Eclipse Public License either version 1.0 or (at your option) any later version.

Can you improve this documentation?Edit on GitHub

cljdoc is a website building & hosting documentation for Clojure/Script libraries

× close