Skip to content
golang library to interface with Pioneers PRO DJ Link network
Branch: master
Clone or download
Type Name Latest commit message Commit time
Failed to load latest commit information.
bpm Move bpm calculation to bpm package Dec 18, 2016
cmd/status-reciever Rename TrackQuery to TrackKey Sep 21, 2018
mixstatus Support CDJs that can't report onair status Nov 1, 2018
.travis.yml Switch to go modules Oct 25, 2018
LICENSE Add license Nov 1, 2018 Add go report card Nov 1, 2018
device.go So many spelling errors fixed Nov 1, 2018
go.mod Tidy go modules Oct 25, 2018
go.sum Tidy go modules Oct 25, 2018
prolink.go Stop CDJs from reporting that our device is "old" Nov 8, 2018
remotedb.go simplify code Nov 1, 2018
status.go So many spelling errors fixed Nov 1, 2018

Pioneer PRO DJ LINK client

Build Status Go Report Card GoDoc

This go library provides an API to the Pioneer PRO DJ LINK network. Providing various interactions and event subscribing.

Massive thank you to @brunchboy for his work on dysentery.

import ""

Basic usage

network, err := prolink.Connect()
network.AutoConfigure(5 * time.Second)

dm := network.DeviceManager()
st := network.CDJStatusMonitor()

added := func(dev *prolink.Device) {
    fmt.Printf("Connected: %s\n", dev)

removed := func(dev *prolink.Device) {
    fmt.Printf("Disconected: %s\n", dev)

dm.OnDeviceAdded("", prolink.DeviceListenerFunc(added))
dm.OnDeviceRemoved("", prolink.DeviceListenerFunc(removed))

statusChange := func(status *prolink.CDJStatus) {
    // Status packets come every 300ms, or faster depending on what is
    // happening on the CDJ. Do something with them.



  • Listen for Pioneer PRO DJ LINK devices to connect and disconnect from the network using the DeviceManager. Currently active devices may also be queried.

  • Receive Player status details for each CDJ on the network. The status is reported as CDJStatus structs.

  • Query the Rekordbox remoteDB server present on both CDJs themselves and on the Rekordbox (PC / OSX / Android / iOS) software for track metadata using RemoteDB. This includes most metadata fields as well as (low quality) album artwork.

  • View the status of a DJ setup as a whole using the mixstatus.Processor. This allows you to determine the status of tracks in a mixing situation. Has the track been playing long enough to be considered 'now playing'?

Limitations, bugs, and missing functionality

  • [GH-1] Currently the software cannot be run on the same machine that is running Rekordbox. Rekordbox takes exclusive access to the socket used to communicate to the CDJs making it impossible to receive track status information

  • [GH-6] To read track metadata from the CDJs USB drives you may have no more than 3 CDJs. Having 4 CDJs on the network will only allow you to read track metadata through linked Rekordbox.

You can’t perform that action at this time.