Custom Built Arduinobased Midi DJ Controller | LBSFilm

Custom Built Arduinobased Midi DJ Controller

April 21st, 2014 by Lukas Bachschwell

Dieser Inhalt ist auch auf Deutsch verfügbar



After we’ve been experimenting with Arduino and Midi I started this project because I wanted to build a usable DJController 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 midicontroller from ebay and built a little box with 10 buttons and some faders for all the controlls the cheap controller couldn’t offer.


IMG_1729(resized)   IMG_1919(resized)



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 lasercut acrylic frontplate. I used the wood lying around in cellar. The plate is mounted using 4 screws (I might have to rethink that…)


IMG_2033(resized)   IMG_1992(resized)   IMG_2023(resized)   IMG_2002(resized)

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 jogwheels


IMG_1724(resized)   IMG_1831(resized)

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

Then I started to design the PCBs. All PCBs are designed and etched by myself. I’ve been using Fritzing for almost all of the Boards (exept for one where I used Eagle, but I don’t really like Eagle…)


IMG_2288(resized)   IMG_2289(resized)    IMG_2310(resized)

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


IMG_2073(resized)   IMG_2075(resized)

There are 8 IIC portexpanders and 3 8channel analog multiplexer, for the leds there will be a spi led matrixdriver (maxim).

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



IMG_2811(resized)    IMG_2625(resized)

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.



IMG_3308(resized)    IMG_3318(resized)    IMG_3312(resized)    IMG_3321(resized)    IMG_3323(resized)    IMG_3325(resized)


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 impuls 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 IIC Portexpanders), 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.


IMG_2935(resized)   IMG_3288(resized)    IMG_3289(resized)   IMG_3290(resized)


The controller is mapped to NIs 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 useable) state:


IMG_1072(resized)   IMG_1076(resized)






IMG_1125(resized)   IMG_1103(resized)  



USB Port



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, Jogwheel, TempoFader, 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 CrossFader, Filter On/Off, FX Assign (3,4 using shift), 2 Additional Buttons (not used yet))






Dieser Inhalt ist auch auf Deutsch verfügbar

  1. Hallo Lukas,
    ich bin auch dabei meinen eigenen DJ Controller zu basteln. Buttons und Potis sind kein Problem. Allerdings habe ich Probleme mit meinen Jogwheels. Dafür nehme ich jeweils einen Endlosencoder (5 Pins – 2 für Button und 3 für die Drehrichtung). Allerdings bekomme ich es nicht hin, die Werte auszulesen und diese meinen Jogwheels zuzuweisen. Hast du einen Tipp für mich? Viele Grüße Flo

    1. Hallo Flo, welche Encoder benutzt du denn genau?
      Ich hatte damals eben das problem dass ich mit jeder art von interrupt den Atmega328 überfordert habe… deshalb die verrückte Konstruktion mit den 7 ATTiny13 auf dem extra board. Wenn ich dieses Project nochmal anfangen würde würde ich übrigens ein Teensy Board als Hauptprozessor empfehlen 😉

  2. Hi, is there a video that discribe everything step by step. If so, please share a link. Awsome invention.

  3. Can you give me a complete list of parts that you used and complete guidelines for connecting them

    1. Unfortunately I don’t really have time for that. (neither are my decisions in this project very clever =P) If you are searching more detailed Guides check out

  4. Wow, totally awesome project!
    i had been thinking of something similar but dont have the skills and tools to do so.
    are your jogwheels touch-sensitive?

    have you thought of adding a raspberry pi (or similar) and using mixxx with this? 🙂

    1. Hi K3nny,
      No unfortunatly the jogs are not sensitive, maybe I’ll add it someday (the weels are conductive so no problem there…)
      Since my main inspiration was to build a controller for traktor I never thought about using mixxx but if I would I would probably not build it into the same housing, but still an interesting idea =D

  5. any sort of guideline, you used teensy ? schematic


    your new website looks quite impressive

    1. Thanks, no I used an arduino
      Guidelines… well this is quite a big project, if you need help with some particular detail feel free to ask

Leave a Reply