Back
in the "old" days, I had a real set of drums, some Diamonds, and used to
play almost daily. But as time went on, the opportunity to play them became
less and less. Mostly the TV (i.e. others watching it) and the internet (in
close proximity to the "drum/dining" room! ) were to blame.
So I purchased a $1000 Roland set, but, as usual, the box had been opened
and the wrong power supply had been put in there (AC vs. DC) and there was
so much trouble returning the thing, I just gave up on the whole idea.
Later on, I
decided to build a table-top unit with 8 pads, which was made of heavy iron
and it worked great even though there was some cross-talk between the pads.
When we moved onto the boat, it was just too heavy and dangerous, so I
gutted it for the electronics and stuffed it all into a zip lock bag, and
there it sits.
When
we sailed into the US, I saw one of those RockBand toy drum sets. It seemed
solid enough so now there's one sitting in the studio. I managed to figure
out a way to interface it with the PC, as it's recognized as a joystick. I
found a nifty little proggie that converts joystick buttons to alpha-numeric
keyboard characters, which, in turn, my DAW software (FLstudio in this case)
can turn into notes on the synth, sample, or MIDI out in focus. There is
very little latency, well except with the "kick" pedal, which is an issue I
plan to address.
The only problem is there's NO velocity sensitivity at all, so the drums
don't sound natural, just loud all the time. It's ok for hammering away on
in the studio, but I'd feel embarrassed to even include it in a jam with
friends.
The
ultimate solution isn't to drop a couple Large on a new set of V-drums, but
to do another fun electronics project!
A few years ago I designed a 16 knob midi controller and tried marketing
them, missed the train, but now have lots of experience with MIDI
hardware programming.
Disclaimers: I
will make this, the schematic, and the firmware, public domain
so anyone can have a go at it. So I assume no responsibility on whatever
goes wrong with yours!
Don't
take anything you see on this page as fact! I could be a complete idiot, and
please don't try to build it until you see a video below of it actually
working!
..Of
course, once I set my sights on something, it generally becomes mine, either
by building it myself, or nice people feeling sorry for me and giving me one
:)
|
The
Rockband(tm) drums have a little control panel in the center (photo right)
which I also plan on hacking, into a PIC 16F57 micro-controller. I chose the
'57 not because they are MIDI-ready, or even have a USART, but because I
have tons of them (C57's) left over from the 16 knob thingies.
These buttons
will control stuff in FLstudio, as well as programming note# - drum pad
data. The big red button could be used to turn MIDI note output on/off, so
it can still output MIDI CC data for controlling other things...
The
first step is to draw up a schematic to see how feasible it all is. Here it
is below.
To see zoomed (and updated ) schematic, just click on it. The orange area (
blue in the zoomed schematic ) is an add-on for a "bongo mode" that
increases the sensitivity so hands can be used instead of sticks. I'm not
sure if I should implement it.
The big
empty box is the keypad configuration, and, well I haven't decided how to
configure it yet! It may have been written into the completed
schematic by now, so click the image to open in a new window.
|
|
|
The
sensors to the right are piezoelectric cells, just like the ones
found inside beepers, cheap stereo tweeters, or talking birthday cards.
Besides making a great, albeit tinny, sounding speaker, they can also
act as a microphone. They are very sensitive to vibration and, through
the piezo effect, can actually create a tiny voltage that is
proportional to the amount of vibration.
Because
the voltage is small, it needs to be amplified to microprocessor levels.
The quad op-amp LM 324 has been chosen, and is configured to amplify and
invert the signal. The input is decoupled with a .1 uF cap, just in case
corrosion creates resistance across the piezo. The output is decoupled
as well to allow for a AC-DC circuit, made of diodes and another cap, to
have it's own voltage floor. The resistor is to bleed off the charge in
about 20mS.
In
a non-velocity sensitive circuit, these would just feed into the PIC. To
detect velocity, a poor man's ADC is employed, in the way of a 10k
resistor, and a .022 uF cap. Acquisition of the voltage present at these
pins (PortC,0 to PortC,6) is obtained by setting the port to output,
then pulling the pin low for a few uS, then switching back to input to
count how long it takes the pin to recover to the minimum logical 1
voltage. The higher the voltage, the faster the recovery. The LM324 on
5VDC can only produce about 3.5 V deviation, but the diodes and cap act
like a charge pump of sorts, and without a load to ground can reach
higher than 5 volts. |
|
|
|
This
pulse of voltage is measured, then translated into MIDI note velocity, and
tacked on to the end of a note that corresponds to the pad being hit. After
the voltage drops below the PIC's input high threshold, a second piece of
data has been recorded: the time it took to discharge. This will give a more
accurate reading of the velocity, but would take to long and might create
10-20 mS of latency, which is a no-no on any DAW!
I hate
wasting perfectly good data, so this could be used to send a MIDI CC value
(control change) which could be used to control a cut-off filter, or perhaps
even the level of a sample. It gets even cooler! You may have noticed some
of the drums have 2 sensors? The theory here is based on the speed of sound,
or shockwave thereof. When I hit the rim of a snare, I want a rim-shot sound
not a snare! So a second sensor somehow attached to the rim area or even
close, will produce good results.
I mentioned
cross-talk from one pad to the other in the table-top drumpads I built
before. There was a few hundred microseconds delay from one to the other, so
I was able to cancel the resulting echo of other drum parts in software.
This didn't always work well, especially if I was trying to simultaneously
hit the pad that was being cancelled. Ugg!
With 2 sensors, this means the position of the strike can be extrapolated
by how long it takes to hit the second piezo after the first. Striking the
pad on a line from the center to the edge would create a -1/2 radius to +1/2
radius delay, thus could be fed into another MIDI CC value to control pitch,
or a bandwidth center! Cool!
Another
interesting dual sensor would be for the kick. The stock kick is just a
magnet and a reed switch to sense it. I good idea if precision isn't a
consideration. I am putting a piezo into it, but have decided to keep the
switch as well. The switch could be used to measure velocity and provide CC
data, but also it can be held longer to act as a muffle, just like a real
kick. I really hate the action on this pedal though, having used a real
pedal for years, so that may have to be modified to resemble a real action.
A spring that flops over? a replica of a real kick pedal?
|
|