Introduction to Drum Master
For some time, I have been wanting to create my own electric drum set from scratch. While I do have some electronics experience, most of my skills are with software. A few years ago, a failed attempt with using a PIC processor as the brain for a MIDI drum controller finally prompted me to give up and purchase a second hand Yamaha DTXpress set.
Fast forward a couple of years. I have now finished school, have a bit more time, and am in search of a new project to entertain me. One day I find a reference to the Arduino project - basically a simple development board built around an Atmel microprocessor. It includes a number of analog and digital inputs, and can interface with all major operating systems via a virtual Serial-over-USB port. Best of all, it is open source and relatively cheap (about $30 for the official board; down to about $10 for a kit to build your own).
After looking at the specs for this board, I decided to use it to make my own drum controller. Since I am a software guy, I want to keep as much of the processing (notably the actual playback of the samples) in software as possible, to keep the hardware as simple as possible. At the same time, I wanted this to be powerful (definitely an improvement over my current Yamaha kit), and if possible, I wanted it to rival the high end electric kits selling for multiple thousands of dollars. From this design goal was born the Drum Master system.
The Drum Master system is actually comprised of two parts. The hardware brain module (containing the Arduino microcontroller and a collection of circuits to assist in obtaining the sensor information) is called the Drum Master. This is connected via USB (technically, a virtual serial port over USB) to a computer, which is running the Drum Slave software, written in Java (inital version was in Python). When a sensor is hit, the Drum Master converts the signal to a digital value, and sends this value (and the port on which the sensor was detected) over the serial port. The Drum Slave program listens for this, and plays the corresponding audio sample.
For more information on how this system works, and how to build one yourself, read on!