Making Electric drums out of a RockBand Drumset (UPDATE #2) PICS at the show!

Volitions Advocate

Hero Member
Scroll down for new pics

Update with vid:

So we were practicing the other day in our friends cramped basement suite living room,   And lately for drums (since we don't have the room or the SPL allowance) we've been using a big rubbermaid tub with the kick pedals attached to it as the bass drum, and an assortment of practice pads and dinner plates for the other noises.  One more month till we take possession of our first house where the bottom floor of the 4 level split is completely empy and jam-ready.......  I'm so sick of waiting.   Anyway.  My drummer friend David has been trying and trying to save up for either a Roland TD-20 or a similar model from Yamaha, as well as adding in a Mandala Pad or two to mix in with his current drumset.  He's the guy in the pictures in my recording studio thread.

So the other day while we were practicing, he just grabbed the plastic drumkit from rockband to make some noise with and we got an idea that we felt pretty stupid for not having before.

Why not use the Rock Band drums as trigger pads?  They're cheap, plentiful, and expendable!

So we went about trying to figure out how to do it using MaxMSP. Others have done it (on youtube and such, but I don't think they were doing it for anything other than it looking cool) using different programs like Reason and some others I don't know the name of, But we're going to be doing this from the ground up.

So I did a little research because my Max Programming skills are a little rusty, I haven't worked on anything for a few months, but yesterday we played around a bit and learned a few things:

1.  If you have a windows machine.  Use the Xbox version, rather than PS3 or Wii, because Xbox is microsoft and plugging the drumkit into the computer took about as little hassle as installing an Xbox controller designed for PC.  It just worked.

2. They aren't very flexible.  The pads work on a USB midi protocol I think, but they're not built to record velocity.  just on or off.  So when we were monitoring the pads as we hit them the only 2 values we got were 0 and 128, which sucks... but no big deal really.

3. Game controllers don't stream data into a system, they are polled.  Which means the computer queries the interface every X milliseconds to see if any changes have happened since last time, and then implements the changes.

This doesn't mean that you have a default latency of X ms, it just means that every X ms it checks.  We found that it worked best at 20 ms.  any lower than that and it just stopped working... I guess the game controller doesn't work too fast.  Also we managed to get the true sound latency down to 10 ms.  Which leaves us with a latency of 10 - 30 ms depending on when we strike the pad.   We found that this made made it nearly undetectable.

So... I got  to work on a patch.  And so far this is what it looks like:


If you don't want to hear my ramblings on how this works.. just skip the next paragraph.

ok so its based around this 'hi' object which stands for human interface.  Normally when you create an object like this in max you have to add the text in there to tell it which HI device to be looking at.  So rather than that I made this menu next to it, that when asked for will show the devices available (thats what the info and menu boxes at the top are for, those are 'message' objects) and pipe that device back into the HI object. The 'metro' object is a metronome set to 20 ms, and when put into the inlet of the HI object, it creates the polling rate for the device, so that box above it (a toggle) needs to be checked on for  it to work.  Then below the HI object is that 'unpack' object, which basically shows 2 numbers.  the first number is the  'element' of the device. in other words each button is assigned a number, in this case the 4 pads were 48 49 50 & 51, so when I'd hit the green drum pad, that number would show up as 48, and the 2nd number would be the value that element passed on (0 or 128 as stated earlier).   Below that, the 'route' object basically routes each one of those 'elements' to a different outlet on the 'route' object,  so each one below that is a separate function each time you hit a separate pad.  The stuff below is just some rather un-elegant programming to make sure they trigger properly (i'm still not very good at it yet).  The 'sfplay~' object plays a sound file when it is triggered, and the open box next to it lets you choose a sample to load into each 'sfplay!"  the tilde (~) just means audio, because max does data, audio and video so its just there to clarify.  the 2 afterwards means 2 channels..  for stereo.  and the speakers below are DAC objects to route the digital signal to my soundcard.

So far this is very basic.  The only thing that can be done is to hit a drum pad (or push the ABXY buttons, because the share the same function or 'element') to trigger a sample.  worked like a charm and will even trigger samples simultaneously.  This is an iterative process so I'll update this post as we get more working.  What is next is David is getting together a bunch of samples he would like to use and I have to figure out a way to have presets of groups of samples that he can load into the program. and then set the start and select buttons (or the dpad) to cycle through those presets.  We're also not using the kick pedal yet, we haven't decided if we're going to put the effort in or not, they're all plastic and usually break quite easily.

These aren't intended as a replacement for his Acoustic drums, we're not THAT silly.  But this will be a great tool for our performances.  The pads look to be quite easy to take off their stand and get a decent mount going for his Tom Rail.  Should be pretty odd looking when we're done but this is one of the more exciting things I've been doing with what I've learned at school.  And surprising that it could actually be useful.

Here's the cool thing about MaxMSP as well.  You can select which objects in your patch you would like to include in 'presentation mode' and move them around in a separate space to only show the frontend of the program.
This is what it looks like so far:

nothing special, but it shows when a pad is being struck.  This will grow and get better as well,  we can use custom images etc.  And i'll get the device select menu and the patch group presets all on here as well.  We'll probably also get a 2nd drumkit to add.  All you need to do there is duplicate the entire patch and make sure the 2nd one uses the 2nd drumkit.

When it's all done I can compile it as a program that he can install on his laptop.  At which point he just needs to make sure he has enough USB ports and a decent laptop soundcard,  Then we can use it at shows.

What do you think?  Am I way too nerdy for my own good?
Pics soon, and videos, I promise!!

also If anybody is interested I'll share my program

My friend and I did that like 2 years ago.  It was interesting, definitely had a couple bugs in the software that we used.  We had fun though. 

If you think that's crazy, you should see what these guys do:
Yeah, that's pretty much exactly what I'm doing.  Except he is using FM or Synthesis and I'm just triggering samples.  He's actually using MaxMSP, he says so just before the 3 minute mark.  It's fun stuff.
I tried it a while back with my GH controllers.  It was actually really hard to get used to.  It's like trying to learn the keytar, but way more awkward.  My favorite sound was the mandolin setting! 
We're going to use it for live playing rather than recording.  If we were  going the midi route for recording, using a keyboard would be a much smarter and hassle free way to do it.

Played around with the code a bit more.  FIxed some errors with the sample triggering and changed the code to something less convoluted, more elegant, and far more useful and efficient.
Also added the bass kick pedal and spruced up the Front End of the program.  I still need to work on getting the code started for allowing saved banks of presets, which I think will be a greater undertaking.  but its functional now.

Let me know if you'd like to play around with it, I'll give you a copy.  I have an .exe for windows. but if you're a mac user the best I can do is give you the collective build of the program, you'll have to download the Max Runtime from the cycling '74 website to run it.  I can't complie for a Mac using windows.


It was a couple weeks ago, I just barely managed to get the pics off my phone.
I think It looks hilarious but it worked perfectly




The sound was as good as the samples he picked and the DAC converters in his laptop.  sooooo.... not so great.  But it didn't really matter.  He had a gong, an ambulance siren, and.. something I don't remember.

Also in max msp you can adjust the latency settings, but none of those menus are there when you build your application for stand alone use.  so he had some pretty bad latency...  I'd guess around 300ms.  But.  it worked well for a trial run.  The DI took RCA, so we just got one of those 1/8" stereo to Red/White RCA cables and plugged it in.

He was debating whether or not to save up for his Yamaha DTX or just buy one of those 3rd party ION rockband 2 drumkits (over the top quality for a video game, velocity senstive and everything)  and somebody he met somebody local when we were out paintballing last weekend and he was selling a DTXpress for 300 bucks.  so he bought it.

So now we're working on setting up his hybrid Acoustic/Electric/RockBand drumkit.  yeah nerdy.... and awesome.
I like how you pronounce it "Maximus Pee". Fun to see it in action, now we want a vid of some real integrated-into-dumset playing!