Musical Instrument Digital Interface (MIDI) controllers are computer peripherals that are used to control some sort of music related piece of software. A type of these peripherals are Disc Jockey (DJ) controllers that are made for the purpose of controlling DJ software.
There is a wide variety of these controllers on the market today, but some people choose to build it themselves, mostly for the purpose of customization. I decided to build my own controller as part of my thesis to create something new in the field of Do It Yourself controllers, and also to broaden my knowledge regarding the underlying technologies.
The controller consists of buttons, Light Emitting Diodes (LED), potentiometers and other parts that are connected to an Arduino Due. The components are housed in a 3D printed case which was designed by me. The firmware is written in C++ using the MIDIUSB library for MIDI communication.
Firstly, I planned the required components and layout of the controller, then acquired these parts, connected them to the Arduino board, and configured them as inputs or outputs. I studied the MIDI protocol and wrote simple programs capable of sending these messages. At the same time, I designed and manufactured all non-electric parts using 3D modelling and 3D printing, then perfected them following the principles of iterative design. When all components were done, I assembled them completing the hardware of the device, and wrote the firmware needed to run the controller. Finally, I used the configuration tool in a DJ program called Traktor so that all the functionality of the controller is mapped to controlling specific features in the software.