Arduino MIDI Rockband Drumset





Introduction: Arduino MIDI Rockband Drumset

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



    • Science of Cooking

      Science of Cooking
    • Pro Tips Challenge

      Pro Tips Challenge
    • Paper Contest 2018

      Paper Contest 2018

    We have a be nice policy.
    Please be positive and constructive.




    Hey man, nice job. Can I have a gander at the source code?

    Thanks, Josh

    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) {

    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.


    post me bill of material, if possible.

    Nice...keep up the good work :)