After my first attempt at DIY  with the conversion of an old DJ mixer to a USB MIDI controller I realised that it would be great to create and have a complete DIY setup. DJ USB MIDI Mixer was complete I had to focus on how to control of the virtual DJ decks in TRAKTOR (or whatever DJ software you use like SERATO or MIXXX), that's how I started the journey of my own DIY DJ Deck MIDI controller.

  1. Functionality & MIDI mapping
  2. Design
  3. Hardware
  4. Firmware
  5. Downloads

Functionality & MIDI mapping

Particular control items and its functions have been designed regard to my needs and experiences with TRAKTOR SCRATCH PRO 2, but is no problem to remap each item to any other DJ software.MIDI mapping for DIY MIDI DJ Deck controller - Control Items layout on the top panel and its functions in TRAKTOR DJ software

Design

Overall design was made in Google SketchUp to get overview of placement of all control items and to be able design PCBs and also to manufacture the front panel accordingly. Because it's a very first prototype I didn't speculate about the complicated manufacture of the case and just decide to put the all items and electronic between two plates of acrylic (plexiglass) plates of 2mm thickness. Thickness of 2mm for top panel is for sure not enough in order to avoid the bending during the buttons pushing but my design holds the all items (boards with the items) on the stand offs attached to the bottom so it's not so big issue. Exceptions are boards for arcade buttons for START and STOP function (and Tempo slider) so around these buttons are installed few additional hexa stand-offs to reinforce the top panel in this area.  

Design of DIY MIDI DJ Deck controller - Google sketchup design of the construction with descrition of particular parts

Hardware

Because different types of interface items have also different dimensions (especially the height ) MIDI controller consist of several different PCBs according to the type of control items on it (push buttons, potentiometers, arcade buttons..) mounted on the stand-offs of various heights in order to achieve the same plane for the top panel. Behind of all control boards is one main board with micro-controller (Microchip Corporation - PIC18F4550). Main board is responsible for multiplexing and reading the incoming and out-coming signals from and to control boards and also communication with computer via USB connection (sending & receiving MIDI data packets).

Main-Board

For logic and processing of all signals and MIDI data communication with the computer (in both directions) is responsible 8 bit mid range family micro-controller PIC18F4550 with USB connection ability. Main-board consist of the micro-controller and several 8-bit static shift registers (4021) for the processing of button signals, serial to parallel shift registers (74HC959) for the LEDs and one 8-channel analog multiplexer/demultiplexer (4051) for analog inputs of FX pots and Tempo slider.

DIY MIDI DJ Deck controller - Main board PCB view with description of particular input / output connectors

FX Control

FX control board contains 4 potentiometers and equally 4 push buttons with back-lit blue LEDs for control TRAKTOR FX Units. Potentiometers works as voltage divider. Divided analog signals are multiplexed to one by multiplexer chip 4051 on the Main-board and than signal goes as input for micro-controller ADC unit (Analog to Digital Converter).

DIY MIDI DJ Deck controller - Photo of FX unit board with buttons and potentiometers for controlling of FX effects in TRAKTOR DJ software

CUE POINTS

Control board for Cue points is simple board with 8 tactile buttons with pull-up resistors (and rounded caps on it) without back-lit. Signals from buttons are processed by 4021 shift registers and PIC 18F4550 micro-controller on the Main-board.

 

LOOPS

The same design as Cue points controller - just six tactile push buttons without back-lit.

DIY MIDI DJ Deck controller - Photo of Loop control PCB board with buttons for controlling of loops in TRAKTOR DJ software

START/STOP & CUE

Two transparent Arcade buttons with blue LEDs. Because current consumption of four LEDs is too high and exceeds the current limit for one micro-controller output there was necessary to use transistor as switching element. Both button PCBs have the same design with 4 blue LEDs below the button.

DIY MIDI DJ Deck controller - Photo of arcade buttons with PCBs for START, STOP and CUE function in TRAKTOR DJ software

JOG WHEEL

For deck "platter" control was used solution with this Old HDD modification. I've find out one old HDD a bit different than others that I had at home. One where was possible to dismantle the motor itself without useless construction frame parts so it better fit to the layout and doesn't waste the space around. According to its dimensions I've designed the PCB with operational amps for transformation of low voltage output from coils to readable signal impulses for micro-controller. Transformed signals are connected directly to the micro-controller on Main-board without usage of shift register.

DIY MIDI DJ Deck controller - Jog Wheel made from old HDD for platter controlling in TRAKTOR DJ software

ROTARY KNOB

Used for track listing but can be very useful for some other MIDI functions as well. Depends on the creativity of MIDI mapping author. Encoder has own PCB with pull-up resistors and connector for direct connection with micro-controller on the Main-board.

deck control rotary knob

OTHER Functions

L shape board with push buttons with blue back-lit LEDs. There is control of decks selection and other TRAKTOR functions like quantize, snap, flux, master, sync, loop on/off.

DIY MIDI DJ Deck controller - Photo of PCB board for controlling functions like quantize, snap, sync, master in TRAKTOR DJ software

SHIFT Button

Small board with only one tactile button without back-lit.

DIY MIDI DJ Deck controller - Photo of PCB board of shift button for modifier function in TRAKTOR DJ software

Firmware

The basis of the controller for signals processing and sending MIDI data via USB to the computer is PIC micro-controller 18F4550 by Microchip corporation. For firmware development I use MPLAB X IDE 3.40. and basic C compiler for 8bit micro-controllers family XC8. For debugging and programming the PIC chip was used PICKIT3 programmer. USB MIDI interface is established by Microchip Libraries for Applications for USB MIDI communications. Related files were pulled out from the libraries and included to the project in order to achieve project portability in the scope of one folder so there is no need to have MLA installed. Download of the MPLAB project is available in download section below.

Downloads

Google Sketchup fileGoogle Sketchup (Design)

Eagle CAD softwareEagle CAD File (schematic + PCB)

Microchip MplabX IDE projectFirmware - Microchip MPLABX IDE

Traktor DJ - MIDI mappingMIDI mapping for TRAKTOR 2