Samuel Prevost f0b7106932 Update README with accurate hardware details and PCB render
- Add PCB 3D render as hero image, move schematic to bottom
- Fix buck converter to SY8368AQQC (was TPS54560)
- Add RCA stereo outputs, detail all audio outputs
- Add button/connector table from Arduino MIDI schematic
- Add connectivity table with correct USB port descriptions
- Add dual micro HDMI outputs (touchscreen + debug)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 13:00:54 +01:00
2026-02-13 12:49:37 +01:00
2026-02-13 12:49:37 +01:00
2026-02-13 12:49:37 +01:00
2026-02-13 12:49:37 +01:00
2026-02-13 12:49:37 +01:00
2026-02-13 12:49:37 +01:00
2026-02-13 12:49:37 +01:00

TriMixxx

A custom CDJ (Compact Disc Jockey) unit built from scratch around a Raspberry Pi CM5, designed to run Mixxx DJ software. Features a custom PCB, a custom 3D-printed chassis, and reuses original CDJ buttons and jog wheel for an authentic DJ experience. Reads Rekordbox-formatted USB sticks — no laptop required.

PCB 3D render

What is this?

TriMixxx replaces the internals of a CDJ with modern, open-source-friendly hardware while keeping the physical controls that DJs know and love. Plug in a Rekordbox-formatted USB stick, and you're ready to mix.

Hardware Architecture

Compute

  • Raspberry Pi CM5 — runs Mixxx and handles audio playback, connected via dual DF40 100-pin high-density connectors

Audio

  • TI PCM5242 — high-quality stereo DAC connected over I2S for low-latency audio output
  • RCA stereo pair — Left (white) and Right (red) main outputs
  • 6.35mm (1/4") headphone jack
  • 3.5mm headphone jack

MIDI Controller

  • ATmega32U4 — acts as a USB MIDI class-compliant device, reading the original CDJ's buttons, encoders, fader, and jog wheel and translating them into MIDI messages for Mixxx
  • 16 MHz crystal oscillator for reliable USB timing

All controls connect via JST PH connectors to the main PCB:

Connector Controls
J_PLAY (6-pin) Play button + LED, Cue button + LED
J_LOOP (8-pin) Loop In button + LED, Loop Out button + LED, Reloop button + LED
J_MASTER_TEMPO (4-pin) Master Tempo button + LED
J_ENCODER_BACK (7-pin) Back/browse rotary encoder + Back button + LED
J_TEMPO (5-pin) Tempo fader (analog ADC input) + Tempo Reset button + LED
J_JOG (4-pin) Jog wheel quadrature encoder (JOG1/JOG2)
J_TOUCH (2-pin) Jog wheel capacitive touch sensor

Summary of buttons: Play, Cue, Loop In, Loop Out, Reloop, Master Tempo, Tempo Reset, Back — each with a corresponding LED. Plus a tempo fader (analog), a browse/back rotary encoder, a jog wheel (quadrature encoder), and a jog wheel touch sensor.

Power

  • USB-C power input with CH224K USB PD negotiation (requests 20V @ 3A = 60W, peak draw 42.4W)
  • SY8368AQQC synchronous buck converter stepping 20V down to 5V for the CM5 and peripherals
  • AP2112K 3.3V LDO for logic-level components
  • AP2553W USB power switches for safe hot-plug on DJ USB ports

Connectivity

Port Type Speed Purpose
USB-A Full-size USB 3.0 SuperSpeed Rekordbox USB sticks
USB-A Full-size Power only (no data) Auxiliary power for gadgets/lights
USB-C Receptacle USB 2.0 General connectivity
Micro HDMI Type D HDMI 1.4 10" touchscreen display
Micro HDMI Type D HDMI 1.4 Debug/secondary screen
Ethernet RJ45 (via CM5) Gigabit Network connectivity

Additional internal USB: USB 3.0 Type-A for the touchscreen's USB touch interface.

  • HD3SS3220 USB-C orientation mux and HD3SS3212 USB 3.0 signal switch for proper USB-C handling on the DJ stick port

Protection

  • USBLC6-2SC6 ESD protection on USB data lines
  • BZT52C3V3S Zener diodes for voltage clamping

Chassis

Designed in Fusion 360 with a custom top panel and bottom tray that fits the original CDJ form factor:

  • CDJ-Top-Panel_v17.f3d — top panel with cutouts for the jog wheel, buttons, and connectors
  • CDJ-Bottom-Tray.f3d — bottom enclosure

Project Structure

CDJ-MainBoard/              KiCad PCB project
├── CDJ-MainBoard.kicad_sch     Root schematic
├── arduino_midi.kicad_sch      ATmega32U4 MIDI controller subsystem
├── audio_outputs.kicad_sch     DAC and audio output stage (RCA + headphones)
├── power.kicad_sch             Power supply (USB-C PD, buck, LDOs)
├── hdmi.kicad_sch              Dual micro HDMI outputs + Ethernet
├── usb_dj_ports.kicad_sch      USB ports (DJ stick, aux power, connectivity)
├── test_points.kicad_sch       Test points for debugging
└── CDJ-MainBoard.kicad_pcb     PCB layout

JLC2KiCad_lib/              Component library (symbols, footprints, 3D models)
kicad-thirdparty-footprints/    Third-party footprints (CM5, DAC, RCA jacks)
*.f3d                       Fusion 360 chassis models
*.net                       Exported netlists (various revisions)

Software Stack

  • Mixxx — open-source DJ software running on Raspberry Pi OS
  • Rekordbox USB support — reads Rekordbox-exported USB sticks for seamless library access
  • MIDI mapping — the ATmega32U4 presents as a standard USB MIDI device, so Mixxx sees the jog wheel, buttons, and fader as native MIDI controls

Tools Used

  • KiCad — schematic capture and PCB layout
  • Fusion 360 — mechanical design
  • JLC2KiCad — importing JLCPCB component libraries into KiCad
  • JLCPCB — PCB fabrication and assembly

Schematic

Full schematic

License

This is a personal hardware project. Feel free to use it as reference for your own builds.

Description
A custom CDJ which uses a raspberry pi CM5, an arduino as a MIDI controller, and a DAC to run Mixxx DJ software. Can read Rekordbox USBs. Custom PCB, custom chassis, and it reuses old CDJ's buttons and jog wheel for good inputs
Readme 171 MiB
Languages
C++ 63.7%
C 26.4%
Python 9.3%
HTML 0.6%