Custom Built Arduinobased Midi DJ Controller

21 April 2014

After we’ve been experimenting with Arduino and Midi I started this project because I wanted to build a usable DJ Controller for NI Traktor. I didn’t want to buy myself something expensive, cause I thought that it would be easier to build it  =D (My dream tool was an S4 but I didn’t want to spend that much money)
So after discovering HIDuino (A new Firmware for Arduino’s Serial to USB chip) I bought myself a cheap midi controller from eBay and built a little box with 10 buttons and some faders for all the controls the cheap controller couldn’t offer.

 

 

I designed a mapping and the setup worked quite well. But I wanted something more compact. So I started to design this controller.
The controller consists out of a wooden chassis covered by a laser-cut acrylic front plate. I used the wood lying around in cellar. The plate is mounted using 4 screws (I might have to rethink that…)

 

I’ve drew the plate in a free program called DraftSight and sent it to a company in Schwechat near Vienna. Then I started to order the Buttons: I’ve used many Parts from the cheap midi controller off eBay : 15 potentiometer, 15 Buttons, 3 Encoders and the jog wheels

 

In addition I used about 15 Omron Buttons from RS, 10 Sanwa Arcarde Buttons from DJ TechTools and 2 Alps Encoder with button.

Then I started to design the PCBs. All PCBs are designed and etched by myself, although it should be added here that I was 15 at the time, and this was my first PCB project ever. I’ve been using Fritzing for almost all of the Boards (exept for one where I used Eagle)

 

Then I had to think about how to mount the boards in case. At first I’ve tried to use wood as well but that turned out to be quite bad, so I bought some aluminum stand-offs and used them.

 

There are 8 IIC port expanders and 3 8channel analog multiplexer, for the LEDs there will be a SPI led matrix driver (maxim).

I already used the controller before I finished the jogs. To protect the electronics I covered the holes for the jogs.

 

The two jogs are mounted direct on the optical encoders. I cut out the aluminum axe of the jogs and designed an acrylic construction to hold them in place.

 

 

All 7 encoders are interfaced by a board of 8 ATTiny13, programmed to be something like a quadrature decoder. It works like this: Two pins are connected to the encoder. If the chip detected an impulse it turns one of its two output pins high. The main processor checks all the output pins in the loop (the tinys are connected over I2C port expanders), sends the according Midi signal and resets the tinys. To program and debug the chips on the board I used a chip clamp.
Download the code for the tinys here.

 

 

The controller is mapped to NI's Traktor.
The mapping does not include outputs yet because the leds are sill not wired to the Maxim Led driver. I’ll have to etch another board for the chip.

Some buttons are also still missing and over all the project is not finished yet. (I’ll update this page as I proceed)

But till then, here are some photos of it’s current (working and usable) state:

 

 
Here is a quick overview of the control’s layout (a bit inspired by the S4):

Deck Control Section (Play,Cue, Beatjump Encoder,Loop in/out, Loop Encoder, Sync, Hotques (First button to switch between 1-4 and 5-8) )

Deck Section (Shift Button, jog wheel, tempo fader, Pitch +/-, Deck Selection (currently just to turn on and off certain FX))

FX Section (4 Buttons and 4 Pots like the FX Modules in Traktor, I’ve also added special mappings into them which can be turned on and off (like the Sweep and Drama from here))

And finally the Mixer Section (Browser operation, Gain/High/Mid/Low/Filter, faders and cross fader, Filter On/Off, FX Assign (3,4 using shift), 2 Additional Buttons (not used yet))