Pocket DJ controller

June 2022

My wife Maggie had a show called Hellmouth Radio on our friendly local internet radio station BFF.fm. She was using an app called Djay Pro to make playlists, and had to select, load, start, stop, crossfade, and adjust tracks while talking live on air. Djay has a nice interface, but sometimes it's nice to have a set of physical controls so there's less risk of a mis-click. So, I designed a mini DJ controller that controls all the basic functions of Djay using MIDI commands over USB!

I love a lil fun lighting

The knob at the top navigates your track list, and the two push buttons in the upper-left corner load tracks into the left and right decks. The "up faders" control track volume, and the crossfader mixes between them. The big red buttons start and stop playback, which is also reflected in the colors lights under the crossfader (green = playing, purple = cued, yellow = paused). The five buttons to either side do other things like jump back to the beginning of the song, enable loops, turn sync on/off, and more.


Circuits

When I'm designing a device like this, I usually go through many iterations of the arrangement of the physical interface components. I have a lot of DJing experience myself, so I had some familiar patterns to draw on, but it took a while to find the right balance of conciseness, compactness, and flexibility.

Almost finalized

Here it is soldered up — it looks kinda tidy from the top, but it's a bit of a rats nest in reality. I try to err on the side of longer wires to reduce strain and make sure I can get all the panel-mount components where they need to go, but it does make it a little more crowded in there.

The microcontroller here is an Adafruit KB2040, which is designed for making keyboards and macropads. I think I programmed this in circuitpython, which was super easy and fun!

Still need to add the rotary encode for selecting tracks!

Enclosure

I wound up printing this in two parts: a solid bottom with a bolt-on top panel printed in white so the lights can shine through from behind. I hadn't yet learned about heat-set threaded inserts, so I designed channels into the bottom part of the enclosure so I can use bolts and nuts.

My calipers measure in thousandths of an inch, but I like to work with millimeters in fusion360, so that's what all the scribbled numbers are
I'm still learning fusion360 but this is a bit messy...

It took a few tries to print this, but it came out great in the end :)

Ready for the airwaves!