noisybox.net blog | photos | computers | art | electronics | misc | to_do | links | resumé | email

--== the ghetto drum system ==--

ghetto drum system

Last updated on Nov. 21, 2004


About:

I've had a long time interest in learning the drums. Unfortunately, I don't have the space for a full-sized real kit, and I'm simply too cheap to throw down the money for a decent set. What I really wanted was something inexpensive and simple that I could pound out beats on and learn to develop my rhythm.

Through some 'net research, I quickly discovered that piezo elements could be hacked and used as triggers. Others have managed to use PIC microcontrollers or similar hardware to read triggers and send MIDI output signals to other devices. Naturally, this approach seemed to point at what I was wanting...but it would need some customization.

While MIDI is great and flexible, I really wanted something that would allow me to play arbitrary electronic drum sets/kits. Because I don't own a single MIDI device, I decided that a PC would be the perfect sound generator. I had already done a few projects that use the serial port on a PIC, so this seemed like the way to go.

Status:

After sitting idle for some time, the Ghetto Drum was revived in November 2004. The ultra mega super ghetto Windows app was ditched, and the comport external for pd was used instead...in a Linux environment. Initial lab research shows the respond to be hella improved.

The current plan involves building a stable and portable trigger/pad/drum platform for regular use. More later.

Project Notes:

The final circuit at the heart of the Ghetto Drum system uses a PIC16F84 to read 8 inputs from external triggers and send trigger bytes to a PC via RS232 (serial port). A custom Windows application reads these bytes from the serial port and uses DirectX to play sound samples. An op amp circuit changes the piezo trigger signals into nice little square pulses for the 16f84. A MAX232 chip is used to provide the necessary voltage level shifting that the PC serial port expects.

The whole thing was built on a copper clad perf board with point-to-point wiring. A SyQuest parallel port backup drive was scrapped and used to house the final project. 8 female RCA jacks were mounted to the SyQuest case, along with a DB9 connector for the serial port connection and an LED used as a trigger indicator. The original switch, power supply jack, and power supply from the SyQuest drive were kept intact and recycled for use in the Ghetto Drum system.

If you look closely at the pictures of the circuit, you may notice that the two op amp chips are seated directly next to one another. In my not-so-brilliant attempt to save space, I mounted the IC sockets for the op amps too close together. This required shaving down some of the ceramic housing with a Drimmel tool -- I wouldn't recommend this approach, but it worked.

Images:

Circuit:

circuit pic 1 circuit pic 2 circuit pic 3 circuit pic 4

Final box/case:

case pic 1 case pic 2 case pic 3 case pic 4 case pic 5 case pic 6 back side of case

Inputs/misc:

final case open input jack wiring 1 input jack wiring 2

Sounds:

There are currently no sounds available for download. Sorry! Check back later and maybe I'll post something.

Downloads/software:

PIC code - The following code is what runs the PIC16f84 inside the ghetto drum system. It was written in straight C for the c2c compiler and the PIC16F84 from Microchip. It is ugly, but it seems to get the job done.

Windows app - The Windows application is responsible for receiving bytes from the Ghetto Drum controller and playing the corresponding sound events. The application is heavily built around DirectX audio components, so you MUST have DirectX 8 installed for things to work properly...even then, your mileage may vary.

Props/Credits:

Much/all of the op-amp portion of the ghetto drum circuit was borrowed from this circuit (image hosted locally because apparently tripod has problems with off-site image linking?) from this page. Props to Hal for donating the sweet ass SyQuest drive case that became the final project housing. He also provided some great brainstorming sessions and actually thought the project was cool (for once!). Oh yeah, and I should really thank this guy for putting out and supporting a free C compiler for the PIC. I first stumbled on the idea of using piezo elements as triggers on this page (link is apparently dead :(), but I'm sure there are many others out there like it. Lastly, thanks to Nappybread for supporting the project ideas and pushing me to get the thing finished.

Todo:

Well, the first thing I need to do is finish up the Windows app that handles the playing of the drum samples. Currently, it only recognizes and plays 2 files. It needs the ability to load "patches" (sets of samples) and possibly the ability to apply effects to the samples. Also, it may be helpful for it to map inputs to other inputs because the RCA jacks aren't really wired up in any logical order. The COM port and baud rate should be configurable (the PIC is presently fixed at 38400, which seems to be sufficient).

Having a drum trigger controller and the supporting software is all fine and dandy, but it doesn't do much without drum heads to pound on. I really need to build some kind of collapsable frame that can hold the drum heads. I also need drum heads to mount the piezo triggers to. A foot-pedal for bass drums would be real nice.

A velocity indicator of some kind would be REALLY valuable to the project, but it would probably require a whole new design that uses A/D and peak detectors. This will probably not happen until I'm inclined to build version 2 of the Ghetto Drum.

blog | photos | computers | art | electronics | misc | to_do | links | resumé | email
all content, text, images, sounds, software, code, ideas © 2000-2007 jason plumb / noisybox / infiltration lab. email