What are the specs for Drum Master?
The Drum Master hardware consists of an Arduino microcontroller board, mounted on a simple circuit board. There are 5 DG408 multiplexers, which provide up to 40 inputs (called 'channels'). 8 of these channels are digital switches; the remaining 32 are analog. You can connect one or more channels to each drum pad, allowing multiple zones, to a maximum of 6 per pad.
What is the latency of the system?
In reply to an email I got asking this question back in September of 2008, I replied with the following:
"As an experiment, I made a recording of me hitting the head (so that both the drum stick strike and the computer-played sound were recorded). I used the same computer to record as I used to play back the sounds, so the distance between the computer speakers and the microphone was basically nothing. The computer was about a meter or so away from the drum head at the time. Looking at the recorded waveform, it showed the start of the playback just before the start of the actual drum stick noise. This means that the latency is less than the speed of sound (which takes about 3 - 4 ms to travel the meter and a bit between the computer and the drum). Of course, your exact results will vary depending on computer speed, etc, and this was not a very rigorous scientific experiment (for instance, it would have been nice to use different machines for playback and recording, and to have the drum head the same distance away from the mic as the speakers were), but at least this will show you a rough estimate of latency."
What communication protocol do you use to interface with the computer?
I use a custom ASCII protocol, run over top of a virtual serial port (connected to the computer via USB). The protocol is very simple: each hit consists of a channel number, a colon, and the velocity. To reduce the number of (expensive) serial writes, if multiple sensors are hit at the same time, we concatenate them using semicolons. For instance, if analog sensor 0 was hit, the Drum Master would send the string '0:534'. The velocity value is a number between 0 and 1023 (10 bits). If sensors 0, 1, and 14 were hit at the same time, the command sent over the serial port may be something like '0:521;1:1023;14:324'.
Why didn't you use MIDI, instead of making your own protocol?
I considered using MIDI, but there were a number of problems I found with it.
- You need to have extra hardware - whether that is a MIDI to USB cable, a stand-alone MIDI controller, etc.
- You would have to use a separate power cable for the Drum Master. By using USB, I draw all the power I need from the USB port (I hate wall wart proliferation!)
- MIDI is a stateful protocol - you must send a NOTE_OFF after sending a NOTE_ON, etc. I wanted to keep the Drum Master hardware and driver as simple as possible, and maintaining state would only add to the complexity. (Yes, I am aware of alternatives, such as percussion MIDI modes, which don't require a NOTE_OFF. However, all MIDI hardware does not support this, and it just seems to be more difficult that it is worth to me.)
- MIDI velocity values are 7 bits - values between 0 and 127. Drum Master velocities are 10 bits, and in theory can provide for 8 times more accuracy than the MIDI equivalent, all else being equal.
Now, all that being said, if you are a huge fan of MIDI, it should be possible to modify Drum Master to use it, with a minimal number of hardware changes. The vast majority of the Drum Master board is used as signal rectifiers, filters, and amps: this is needed regardless of what communication protocol you are using.
I can think of a few things you would need to do if you were planning onconverting to a MIDI kit:
- Wire in a 5 pin DIN (MIDI jack) to the Arduino. I only put headers to the Arduino pins which I was using, so you can easily attach a cable if need be. For instructions on how to wire MIDI, you can see this page (among numerous other sites; Google is your friend).
- Modify the Drum Master software to send a MIDI note instead of a (channel:velocity) tuple.
- Change the serial pins on the Arduino to whatever pins you connected the DIN to.
- Provide a power source, as you are no longer using USB power
I have not tried this procedure myself; if anyone has successfully (or unsuccessfully) done so, please let me know - I can post your results here.
Can I use Drum Master as a replacement for an existing commercial drum brain?
By default, Drum Master uses RJ45 connections to the drum pads. This gives me more data channels per pad, as well as put both GND and 5v on the pads, to allow you to run active electronics (such as an accelerometer on the Hi-Hat, or a capacitance touch sensor for cymbal mutes, for instance). However, since Drum Master requires you to use short jumper cables to connect from the RJ45 breakout board to the channel inputs, you can just leave off the RJ45 connections / RJ45 breakout headers, and wire in 1/4" barrel audio jacks. As long as your commercial pads just send a voltage to signal a hit, with higher voltages signifying a harder hit, there should be no problems using any sort of commercial pad.
Drum Master also contains adjustment trimmers (potentiometers) which allow you to control the sensitivity of the pads, which in theory should let you play with both commercial and homemade (or, commercial pads from various vendors), even if the pad sensitivities differ.
How are the sounds actually played?
To actually play sounds, you must be running a client program on the computer. I have created a simple one, called Drum Slave, which is the recommended approach. However, since the protocol is so simple, you can easily make your own. Some ideas would be to create a PD module, a serial -> MIDI module (for playing the sounds in Garage Band or other software MIDI synth), etc.
What samples can I use?
I include a few samples, whose licenses allow me to do so. Unfortunately, due to licensing restrictions of the others, I can not provide all the samples which I use. However, there are lots of locations where you can find samples. If you have access to an acoustic set, you could even record your own!
The samples I currently use have been accumulated from a number of sources. Many of them are from Garage Band. Others are from FreeSound. I'm sure there are a number of other sources on the Internet for free samples - for instance, I just found a number of CC licensed samples from the OLPC project.
Drum Slave currently only supports samples in .wav format, using signed 16 bit, stereo at 44100Hz. I may look into working with compressed sounds in the future, but it is not high on my priority list. You can use software such as sox to convert between sample formats. For instance, the command to convert to the required format is:
sox infile.wav -s -w -c 2 -r 44100 outfile.wav
Can I buy one?
This is a DIY project, and I currently only provide plans and software. I also have a small reserve of professionally printed PCBs which I am selling for $45 USD + shipping. These PCBs do not have the components included - it is just the board itself. You would have to purchase components yourself (I highly recommend Digikey - I purchase all my components from them, and have had excellent experiences with them on all occasions), as well as an Arduino board.
I am not responsible for incomplete or failed projects, and everything you do with this is at your own risk.
Is this cheaper than buying an electric drum set?
It depends. You can get a decent electric set for about $1000 new (normally about half that used). This contains everything you need to start playing. This project, on the other hand, will cost you approximately $170 for the Drum Master hardware alone. On top of this you need to add the cost of pads, (plus, depending on your pad design, possibly some sort of rack to mount them on). Costs for this can range from maybe five dollars per pad (if you just use a wood block which you found in your basement), to probably over fifty dollars each (if you get an acoustic drum set with mesh heads, and realistic-looking cymbals). Also remember that you will need a computer to actually synthesize the sounds - Drum Master will only signal to the computer when a hit is made, and will not play any sort of sound itself. (I assume that if you are reading this, though, you already have access to a computer! I don't have specs on what the minimum hardware is required to run the Drum Slave software; I am currently running on a MacBook Pro, but I'm sure this is overkill. If anyone has some data on what works for them, please let me know.)
However, for this price, you will have the opportunity to do much more with your drum set than you can with a similarly priced entry-level commercial set. Besides the obvious benefit of having more pads (Drum Master supports up to 16 pads, with up to 40 zones total), since you have the source code to the synthesizer software, you can modify it and customize the logic as well as the sound samples. You generally will have to spend multiple thousands of dollars on a commercial drum kit to be able to upload custom samples, and there are no commercial sets which I am aware of which give you access to the software logic itself.
In short, I view this project, not as saving me any money, but as a chance to let me do something I love (playing with electronics) and try to create something new out of it. For me, creating the thing is just as enjoyable as playing it. If you don't feel the same way about your projects, you probably will want to get an electric drum set in some other way.
How Difficult is it to build Drum Master?
I would consider this a moderately difficult project. I would recommend that you be familiar with soldering before you attempt this. All components are through-hole, but some of the areas of the board are quite tight. It took me about four hours to solder everything onto the board.
What license is Drum Master released under?
I have released the Drum Master design, including PCB layouts, schematics, software, etc under a Creative Commons Attribution-Noncommercial-Share Alike License. The license details are listed on the Creative Commons site; basically, don't try to sell what you make, and mention me (and this site) for any derived works, and don't try to change the license of derived works.