Beatmatching in Your Pocket
Over the past weekend I finished up a pocket-sized circuit to control the popular open source DJ platform MIXXX. Basic beat matching controls mapped to physical buttons for cue, play, speed, nudge, jog wheel, sync, and headphone control. This fit all the necessary requirements to get hands on with digital DJing.
Faced with a few different controls (potentiometer, encoder, button bank), I leveraged some great community resources to get everything working:
- Multi-Button Check & Debounce : Adafruit
- Running Average Potentiometer Smoothing : Arduino Playground
- Rotary Encoder Interrupt : Bildr
In order to control two DJ decks with one circuit, I added a pair of switches and corresponding LEDs. A separate data structure for each mapping is swapped out when the corresponding button is pressed.
Lastly, I had to get the device communicating with MIXXX. I used the same MIDI serial connection from my arduino step sequencer into a USB MIDI interface. For the software mapping, MIXXX had some great resources to get up and running quickly.
The last video, by MIXXX developer and controller master Pegasus, was a great resource for getting the encoder to function as a jog wheel. Not only does it walk through the process of setting up MIDI mappings for MIXXX, but it also goes through the basics of relative MIDI controls, which is how most jog wheels interact with DJ software.
After I got it all working Sunday night, I spent the next half an hour pulling and mixing tracks from soundcloud. Worked awesome!
New adjacent possibilities from here
- Use as a control device for a step sequencer
- Integrate with other audio environments (multi-track, synthesis environments, web)
- Create larger mechanical jog wheel platter (3D printing, laser cutter, gear-train)
- Replace midi connection with usb interface (HIDuino)
- Scratching controls