CH 88.1 · CHURRDJ · ON AIR, BETA
v0.1.0-beta.2 · SAN JOSE, CA

The PRO DJ LINK stem engine

CHURR DJ_

PRO DJ LINK and stems.
The mode Pioneer never shipped.

A Raspberry Pi 5 sidecar that runs pre-extracted stems locked sample-accurately to your CDJ-3000X, without ever taking PRO DJ LINK offline. Stacked waveforms intact. Beat sync intact. Vocals and instrumentals, finally, on the same rig.

Stock Pioneer software splits your rig into two mutually-exclusive modes. You get everything on one side or stems on the other, never both. The CDJ-3000X (Sept 2025) explicitly does not include native stems. No firmware update has merged these modes. It is not on the roadmap.

A

EXPORT MODE

CDJs play their own audio from a Rekordbox-exported USB. Rekordbox software is offline.

Included
  • PRO DJ LINK
  • Stacked waveforms on screen
  • Beat sync across decks
  • Per-deck status sharing
  • Real-CDJ feel
Missing
  • Stems
B

PERFORMANCE MODE

Rekordbox is the audio engine. CDJs drop to HID controllers. Audio is Mac → DJM USB.

Included
  • Rekordbox STEMS
  • Vocal isolation
  • Live arrangement
Missing
  • PRO DJ LINK
  • Stacked waveforms
  • Independent CDJ behavior
  • Booth-grade reliability

Pioneer makes you choose.

CHURRDJ doesn't.

CHURRDJ keeps your CDJs in Export mode (PRO DJ LINK stays online) and parallel-plays pre-extracted stems from a sidecar Pi, routed through additional mixer channels. The Pi locks to the CDJs over the LAN, varispeed-resampling its stem cursor to follow whichever deck is playing.

  1. 01

    Lock-tight sync

    < 1 ms drift

    A sub-sample varispeed PLL (4-tap Hermite resampler) keeps each stem locked to its CDJ's pitch fader in real time. Move the slider; the stem follows.

    engine/sync/pll.rs
  2. 02

    Auto-follow

    1 swap per track-load

    Load a new track on a CDJ and the Pi reads the metadata, looks it up in your stem index, and atomically swaps the channel's playing stem mid-set.

    engine/cmd/sync_multi.rs · --follow
  3. 03

    Phone UI

    Zero install

    The engine serves a token-gated control page. Open it on any phone or laptop on the LAN (or via Tailscale) to toggle vocals/instrumental and record the master mix.

    engine/cmd/control_server.rs · :8080

CHURRDJ is built for Pioneer-stock booth gear, validated on the reference rig below. The architecture is hardware-honest: stem playback works across the Pioneer USB-DJM family, but the master recording path is wired to the DJM-A9's specific capture layout. We don't pretend otherwise.

SPEC SHEET

CDJ DECKS

Source units running PRO DJ LINK

  • CDJ-3000X Reference rig · 2× units
    TESTED
  • CDJ-3000 Same PRO DJ LINK profile
    SHOULD WORK
  • CDJ-2000NXS2 PRO DJ LINK supported
    SHOULD WORK
  • CDJ-2000NXS / older No track-ID broadcast
    INCOMPATIBLE
SPEC SHEET

DJM MIXER · PLAYBACK

Any DJM with USB audio output

  • DJM-A9 Reference rig
    TESTED
  • DJM-V10 12-ch USB
    SHOULD WORK
  • DJM-900NXS2 4-ch USB
    SHOULD WORK
  • DJM-750MK2 · 450 USB-output Pioneer DJMs
    SHOULD WORK
SPEC SHEET

DJM MIXER · RECORDING

Master capture is currently DJM-A9 specific

  • DJM-A9 12-ch S24_3LE capture (hardcoded)
    TESTED
  • DJM-V10 · 900NXS2 Different capture layouts
    PLANNED
  • Other DJMs Would need code changes
    PLANNED
SPEC SHEET

SIDECAR HOST

What the engine + sidecar run on

  • Raspberry Pi 5 · 4 GB Reference appliance
    TESTED
  • Raspberry Pi 5 · 8 GB Recommended for big libraries
    SHOULD WORK
  • Raspberry Pi 4 Likely fine but untested · slow cargo build
    SHOULD WORK
  • macOS dev workstation Build + extract; no booth role
    TESTED
BETA · BY INVITATION

The CHURRDJ beta is hand-curated. We're looking for working DJs with Pioneer rigs who can field-test the engine on real gigs, report bugs with technical detail, and tell us, bluntly - what's wrong with the docs, the setup flow, and the live UX.

There's no public download. There's no GitHub repo to clone. CHURRDJ ships as a prebuilt booth image: you flash it, enter your access code, and it boots straight into a setup wizard. We send the image link after we've reviewed your application. This is a closed system because the architecture is sharp enough to break things if it's mishandled, and because we want to grow the community at the speed we can actually support.

  1. 01

    Apply

    Fill out the form below. We need to know your CDJ model, DJM model, and what set or context you'll be testing in.

  2. 02

    Review

    We read every application within ~48 hours. We're optimizing for testers who'll give honest field reports, not for headcount.

  3. 03

    Access

    If approved, you get an email with your private 7-day image link, your BETA-XXXX access code, and a link to the setup guide. The Mac app is a code-gated download on the site.

  4. 04

    Run · Report

    Flash the image, open churrdj.local, add your music, and test on your rig. About 20 minutes to set up. Send us what broke, even the negative results help.

FORM · CHURRDJ-BETA-APPLY ACCEPTING APPLICATIONS

Form not configured yet

Set PUBLIC_TALLY_FORM_ID in your Cloudflare Pages environment after creating the form at tally.so. The deploy will swap the iframe in for the real form automatically.

→ Email beta@churrdj.com instead
  1. Q01 Why isn't this just a Rekordbox plugin?

    Pioneer doesn't expose a stems extension point, and the architectural problem isn't "can stems run" but "can stems run *while* PRO DJ LINK stays alive." Stock Rekordbox makes those modes mutually exclusive. CHURRDJ sidesteps the whole conflict by running stems on a separate audio device (the Pi → DJM USB) while the CDJs stay in Export mode untouched. There's no way to do that inside Rekordbox.

  2. Q02 Does this work with non-Pioneer mixers or non-A9 DJMs?

    Stem playback works with any DJM that has a USB audio output, V10, 900NXS2, 750MK2, 450, etc. The `--mixer-channel` flag handles the channel-pair mapping. Non-Pioneer mixers with USB audio also work in principle, but we haven't tested those. Master recording is currently DJM-A9-only because the engine opens the A9's specific 12-channel S24_3LE capture stream directly via ALSA. Other DJMs would need code changes; pull requests welcome.

  3. Q03 Can I use a Pi 4 or Pi Zero instead of a Pi 5?

    Pi 5 (4 GB or 8 GB) is the reference target, and the booth image is built for it. Pi 4 should be powerful enough but isn't validated. Pi Zero won't keep up with sub-sample varispeed resampling under realistic loads. If you run CHURRDJ on a Pi 4 successfully, we want to hear about it.

  4. Q04 Is the beta free?

    Yes. The closed beta has no cost, we're trading early access for honest field reports. Pricing for the public release is undecided. Beta testers will get first notice of whatever model we land on.

  5. Q05 What happens after the beta?

    Depends on what we learn during the beta. Most likely a one-time license or modest subscription for the engine binary, with the architecture explanation, hardware compatibility data, and Pi setup docs remaining publicly readable. Beta testers will get preferential terms.

  6. Q06 How do I actually get stems for my tracks?

    You don't run anything by hand. Drag a track onto the CHURRDJ Ingest Mac app and it does the rest: it splits the song into vocals and instrumental (Demucs under the hood, Apple Silicon recommended), matches it to your library, and ships the stems to your booth automatically. Add tracks any time; they process in the background. The app is a code-gated download on the site.

  7. Q07 Do I need a Rekordbox library?

    Yes, the engine looks up tracks by Rekordbox metadata broadcast over PRO DJ LINK. Source audio files have to exist on disk (no Tidal/streaming-only tracks). Indexing is automatic: the Mac app rebuilds the lookup whenever you add music, so newly added tracks just work.

  8. Q08 Do I need internet at the venue?

    No. The engine and sidecar run fully offline once stems are on the Pi and the engine is configured. Internet is only useful for remote phone control via Tailscale (which lets you reach the Pi from your phone over its mesh VPN even when the venue Wi-Fi blocks client-to-client traffic). Offline-only setups work; you just have to be on the same LAN as the Pi to load the control page.

  9. Q09 Will this work with rekordbox CDJs running newer firmware?

    Probably, the PRO DJ LINK protocol Pioneer ships has been stable since the CDJ-2000NXS2. The Java sidecar uses the `beat-link` library, which has been updated specifically for the CDJ-3000X. If a firmware update breaks anything, that's a top-of-list fix and we'd get a patch out fast for testers.

  10. Q10 Can I record my entire set?

    Yes, when you're on a DJM-A9. The engine opens the A9's USB capture stream directly and writes a 24-bit stereo WAV of the master out to a directory you configure (`--record-dir`). Press RECORD in the web UI to start; recording is off by default. ~0.9 GB/hour at 24-bit, watch your Pi rootfs.

Something not covered here? Write to beta@churrdj.com, we'll add your question to the next pass.