Package org.deepsymmetry.beatlink

A library for synchronizing with beats from Pioneer DJ Link equipment, and finding out details about the tracks that are playing.

Overview and installation instructions are found on the Project page on GitHub.

This top level package provides classes for finding a DJ Link network, watching for devices to appear and disappear on it, and creating a VirtualCdj which can obtain more detailed information about what other players are doing, like their current tempo, pitch, playback state, which player is the current tempo master, and the source and database ID of the currently-loaded rekordbox track. See the CdjStatus class for more details.

The classes in the org.deepsymmetry.beatlink.data package can augment this low-level information with rich details about the track metadata, including album art, cue point locations, beat grid, and waveforms, both the whole-track preview, and full detailed waveform for scrolling through. The MetadataFinder is the main coordinator for obtaining and caching this information, and it keeps track of the track metadata for all tracks loaded on decks, either for current playback, or as hot cues.

The metadata queries are performed with the help of the org.deepsymmetry.beatlink.dbserver package, which knows how to locate and communicate with the database servers running on the players.

For shows in which four players are in use, the dbserver interface cannot be relied on, since we are not able to use a real player number ourselves. The CrateDigger class allows us to still obtain metadata in those situations, by downloading entire rekordbox database export files from the players using their NFSv2 servers, which do not care about player numbers. By parsing the database it can also find and download the files containing track analysis information like waveforms, beat grids, artwork, etc.

Background

This project is based on research performed with dysentery, and the protocol analysis resulting from that project.

Raw database access is provided by the Crate Digger project.

An good example of an application built using this library is Beat Link Trigger.

Author:
James Elliott