Arduino MIDI Rockband Drumset




About: I'm an Electrical Engineer working out of Northern California with a never ending interest in repairing and creating.

This video shows an early prototype of my arduino MIDI rockband drumset.

Teacher Notes

Teachers! Did you use this instructable in your classroom?
Add a Teacher Note to share how you incorporated it into your lesson.

Be the First to Share


    • CNC Contest

      CNC Contest
    • Make it Move

      Make it Move
    • Teacher Contest

      Teacher Contest

    5 Discussions


    Reply 6 years ago on Introduction

    Here you go. If it seems confusing, see my other instructable about Arduino MIDI Organ Pedals. I explain the code in that instructable. Also note that this is not the source code that was used in the video. I have since modified it to produce different sounds. I also added a second pedal that when pressed, makes the sound of a closing Hi-Hat, and when the left drum trigger is hit it makes the sound of a closed Hi-Hat being hit. Also, when the pedal is not pressed and the left trigger is hit, it makes an open hi-hat sound. I hope you find this useful!
    int redpad=0;
    int yellowpad=0;
    int bluepad=0;
    int greenpad=0;
    int peddle=0;
    int lastpeddle=0;
    int peddle2=0;
    int lastpeddle2=0;

    int hiHat = 0;

    void setup() {
    pinMode(5, INPUT);
    pinMode(6, INPUT);


    void loop() {

    redpad = analogRead(A0);
    if (redpad >25) {
    if (hiHat == 1) {
    noteOn(0x99, 42, 0x7F);
    noteOn(0x99, 42, 0x00);
    else {
    noteOn(0x99, 46, 0x7F);
    noteOn(0x99, 46, 0x00);

    yellowpad = analogRead(A1);
    if (yellowpad >25) {
    noteOn(0x99, 40, 0x7F);
    noteOn(0x99, 40, 0x00);

    bluepad = analogRead(A2);
    if (bluepad >25) {
    noteOn(0x99, 47, 0x7F);
    noteOn(0x99, 47, 0x00);

    greenpad = analogRead(A3);
    if (greenpad >25) {
    noteOn(0x99, 57, 0x7F);
    noteOn(0x99, 57, 0x00);

    peddle = digitalRead(6);
    if (peddle != lastpeddle) {
    if (peddle == 1) {
    noteOn(0x99, 36, 0x7F);
    else {
    noteOn(0x99, 36, 0x00);

    peddle2 = digitalRead(5);
    if (peddle2 != lastpeddle2) {
    if (peddle2 == 1) {
    noteOn(0x99, 44, 0x7F);
    noteOn(0x99, 44, 0x00);
    hiHat = 1;
    else {
    hiHat = 0;
    else {
    if (peddle2 == 1) {
    hiHat = 1;
    else {
    hiHat = 0;

    lastpeddle = peddle;
    lastpeddle2 = peddle2;


    void noteOn(byte cmd, byte data1, byte data2) {


    6 years ago on Introduction

    College has been keeping me pretty busy, so this project has gradually come to a halt. I can post the source code as another comment if anyone asks.
    Here are the links to the parts I purchased:

    For use with an Arduino Duemilanove:
    For use with an Arduino Uno:

    DIP Socket for atmega328p:

    16 MHz Crystal:

    Power Regulator:

    22 pF Capacitor (x2):

    Perf Board to solder it all to:

    MIDI cable:

    And of course, a rockband drumset (it shouldn't matter if it's xbox 360, wii, playstation 2 or 3):

    I can't remember what resistors I used to pull down the analog inputs for the drum triggers.  I'm sure they're interchangeable, and in hindsight, potentiometers would probably would have been a good idea to adjust the sensitivity of the triggers. 

    Since this video, I added support for a second foot pedal and reprogrammed the chip to output different midi notes to utilize a hihat sound.  The second pedal decides whether the hihat makes a closed or open sound.

    This entire project cost me around $50.  I don't have a schematic, but the wiring is pretty self explanatory.

    The most important parts of this project are modified from the following tutorial:

    If anyone improves or expands on this project, keep me in the loop.  I'd like to see what others can do and learn from them.