Rock Band with Electronic Drums (HOWTO)

Comments

  • SystematicGravySystematicGravy Unsigned
    edited January 2008
    That's the exact breadboard I am using. The copper on it is layed out exactly as it's shown in that link that zolon provided. plug things into the holes such that you use the different copper strips to connect things you want to connect. For the ground, you could run the ground to one of the outside 4 sets of holes and then run the ground from each of the 5 leads into that row also.
  • superchudsuperchud Unsigned
    edited January 2008
    Ordered my MSA-P with the beta firmware yesterday, however my rockband drums took a dump last night every time I plug them in they lock up my XBOX so it looks like I will be waiting for a new drum kit to hack up. :(
  • BlankoBlanko Opening Act
    edited January 2008
    The board arrived. Excellence. A big thanks to John at Highly_Liquid.

    I also confirmed a few more details. Some may seem blindingly obvious. But with parts so rare and experience so low, it's not worth guessing.

    Regarding powering the MSA.
    You'll need somewhere between 7.5 and 12 VDC to power the MSA. This can be from a battery (like a 9V battery), or from a DC power supply, such
    as a wall wart.

    Connect the negative (-) terminal of the battery or supply to "POWER IN"
    "G" on the MSA. Connect the positive terminal to "POWER IN" "+" on the MSA.
    Then for hooking up the outputs. I'll be plugging each controller wire into the "A" socket for the first 5
    outputs. Then I have a single ground from the controller. I'm splitting that
    with a breadboard and running 5 wires from those into the "B" for each
    socket.

    John can't really speak to anything xbox controller specific, but in response to this he did say,
    The MSA-P A/B terminals have no polarity--so you'd have no problem grounding either side.
    Tonight I'm going to chill out. This mod concludes tomorrow.
    David
  • BlankoBlanko Opening Act
    edited January 2008
    That suck SystematicGravy. Sorry to hear that.
    My first kit came doa. It was a sad day.

    Thanks for the tips guys. I think we've covered all the bases.

    David
  • zolonzolon Opening Act
    edited January 2008
    Well, I may not be the first to get the MSA-P solution working, but at least it was my idea. :p

    Good work Blanko. You are making me wish the MSA-P would get here faster.

    I'm going to rip apart my drums Sunday night and get it all prepped. As I have some strange parts laying around already, my goal is to get all of this working as a stand along box with controller being part of it so it becomes just the wire from the drum kit going in, and the wire to the xbox going out.

    Clean, tidy, and mounted to my drum rack.

    I would start the tear apart sooner, but I got suckered into going to a dog show with my lady.
  • superchudsuperchud Unsigned
    edited January 2008
    Did you guys order your MPA assembled?


    I didn't so I am wondering if its going to come in kit form (a bunch of pieces for me to solder WOOT).
  • zolonzolon Opening Act
    edited January 2008
    Ok, quick summary of this thread for people new to it.

    Aelius27 - Started the thread with a working solution. All hail Aelius27 for starting these paths for us.

    Solutions Provided:
    • 1. Breadboard Project with MicroController - Worked with minor issues.
    • 2. Computer System with Breadboard for wire handling - Worked with custom software.
    brianwi - Solution using prebuilt hardware.

    Solution Provided:
    • 1. Midi-Solutions R8 - Worked right out of the box with some settings tweaked. Quick easy, only requires enough knowledge to solder wires to the controller.
    Zolon - Solution using self assembly hardware.
    • 1. MSA-P hardware solution. - Not all that unlike the Midi-Solutions R8 and the Breadboard Micro-Controller Solution. Requires more knowledge to build then the R8. STILL UNTESTED.

    ThePro2001 - Solution with just useing the piezo triggers.
    • 1. Piezo Triggers Taped to Drum - Quick, dirty, simple. Requires mesh heads or real drum heads. Only allows the 4 pads.
    mikejl46 - DIY Drum Set
    • 1. DIY Drum Set directions that don't require buying a whole new MIDI setup. Will currently only work with the ThePro2001's solution. (I could be wrong about this, let me know and I will fix this summary.)
    People part of the thread currently working on one of these methods.
    • SystematicGravy - Computer System with Custom Software Solution - I think.
    • Jack Fuller - R8 Solution
    • Blanko - MSA-P Hardware Solution - Still in progress
    • Sandeep - Computer System with Custom Software Solution - Wrote his own software.
    • superchud - MSA-P Hardware Solution - Still in progress
    Quick List of Information needed:
    • 1. There are two known types of controller boards in the RB DrumKit.
    • 2. The best working pulse length is ~35ms.
    • 3. Wireing directly to the piezo connections will not work as they expect voltage spikes too high.
    If I missed any one, or known methods, or something I didn't think of, please let me know and I will update the summary.
  • zolonzolon Opening Act
    edited January 2008
    superchud;264663 said:
    Did you guys order your MPA assembled?


    I didn't so I am wondering if its going to come in kit form (a bunch of pieces for me to solder WOOT).
    I ordered mine the same way as you. So my bag of silicon granola mix will arrive around monday.
  • SystematicGravySystematicGravy Unsigned
    edited January 2008
    I'm working on the code that will run on my pc now, but I'm not sure how the switch works in Sandeep's code. What type of values should I be expecting from midimessage in b[1] ?
  • zolonzolon Opening Act
    edited January 2008
    Welp, I just cut my drums apart and got it all down to just the control module.

    Funny thing though, I finally got the RMA box for my drum kit. Should I ship them back the peices with a note saying not to worry about it?

    I have the blue board, rev3. So it might be a regional thing.

    Anyways, I'm at a stand still until I get the MSA-P now. So this project is on hold until around Monday. :)

    Oh, and I have no clue on the software/computer method. Sorry.

    Ok, I repacked the box, and wrote a letter to EA that is taped to the drums missing the control module.

    http://i16.photobucket.com/albums/b9/zolon/IMG_2125.jpg

    Dear EA,

    Here is what became of my RockBand DrumKit. You will notice the control module missing. I have decided to use it for hooking my MIDI Kit to the game. I was tired of waiting on your RMA Service. The kick pedal and mounts are good and included. Do what you wish.

    Jason
    I took pictures of that also.
  • BlankoBlanko Opening Act
    edited January 2008
    Yeah man - it's all you. We should name the mod's after their founders.

    I've mounted the controller the same way. I'm also checking out other project boxes today. Ideally I have the controller and necessary hardware all in one unit. I have a cloverfield engagment then dinner plans. But after that it's time to wrap the Zolon Midi Rockband Drum Mod!

    D

    PS: Amazing note to EA. Should have wrote it with newspaper clippings ;)
  • BlankoBlanko Opening Act
    edited January 2008
    To avoid a going off on a tangent I posted this to another thread.
    http://www.rockband.com/forums/showthread.php?t=23987

    D
  • superchudsuperchud Unsigned
    edited January 2008
    zolon;265216 said:
    Welp, I just cut my drums apart and got it all down to just the control module.

    Funny thing though, I finally got the RMA box for my drum kit. Should I ship them back the peices with a note saying not to worry about it?

    I have the blue board, rev3. So it might be a regional thing.

    Anyways, I'm at a stand still until I get the MSA-P now. So this project is on hold until around Monday. :)

    Oh, and I have no clue on the software/computer method. Sorry.

    Ok, I repacked the box, and wrote a letter to EA that is taped to the drums missing the control module.

    http://i16.photobucket.com/albums/b9/zolon/IMG_2125.jpg



    I took pictures of that also.
    LOL that is funny, I agree with blanko newspaper and magazine clippings would be the icing on the cake. :D
  • BlankoBlanko Opening Act
    edited January 2008
    Hey guys,
    I got everything hooked up and plugged everything in. But my drums just weren't triggering the MSA. I spent hours troubleshooting.

    Then I set everything up through the computer (usb-to-midi-to-msa). Hit the kick drum note, and success!

    I'm 99% sure my module is setup correctly. So it's more likely that my ancient midi cable is busted. I'll be running out to grab another tomorrow.

    I promise to report with details as soon as I get the drums connected properly.

    At least we know it works.
    David
  • BlankoBlanko Opening Act
    edited January 2008
    Drums are done!

    It wasn't the midi cable it was the midi channel. For some reason I thought the msa received notes on all channels. Not the case. My drums output to channel 10 by default. So I just had to flip the 1 and 4 switch on the msa.

    So far, this is farking amazing. Even if you just use 4 pads - they're a breath of fresh air compared to the unresponsive plastic. I did have to re-calibrate. But it was only by a few ms. My girlfriend didn't notice a difference. But evidently it helped. Another great thing is that even though I'm switching multiple pads to the same note - the module still plays the right sound.

    I'll wait until after zolon wraps his mod to post any media of my drum setup and the mod in action. For now, here's the project box.

    I need to pickup a serial cable with 9 pins... I thought a vga cable would work but it was 15. Can I get a 9 pin serial cable retail? Or do I have to build it?

    David
    1200 x 480 - 73K
    1200 x 480 - 96K
    1126 x 845 - 94K
  • zolonzolon Opening Act
    edited January 2008
    VERY NICE Blanko!

    I just got home from the dog show, and got a nice suprise. My MSA showed up.

    So I will start working on it tomorow, and as I have to actually assemble mine, this will be interesting.

    Welp, I started assembly for a moment, and then stopped. My soldering gun is having issues, so I am going to pick up a coldheat pen tomorow. Strike that, just read up on cold heat. I'm going to pick up a real iron. Cold Heat aparently can fry electronic componets because of how it work.
  • davidshekdavidshek Community Playtester
    edited January 2008
    Blanko;268455 said:
    I need to pickup a serial cable with 10 pins... I thought a vga cable would work but it was 15. Can I get a 10 pin serial cable retail? Or do I have to build it?
    Serial cables are 9 pins...the ports you put in your box and 360 drum controller are standard DB9 serial plugs. How would you plug a 10 pin serial cable into a 9 pin port? :)
  • BlankoBlanko Opening Act
    edited January 2008
    Yeah, as per Aelius suggestion I grabbed a $7 iron and it works amazing. It was the solder that made my original tests suck. Maybe this is old news, but using a solder infused with flux changed my whole outlook. I even ended up building the pc-relay board for the heck of it. -- anyone in to Toronto want to buy it off me (at cost)... the pc solution will still work when Aelius drops the software on us.

    D
  • superchudsuperchud Unsigned
    edited January 2008
    Great news blanko, my MSA should be showing up today or tomorrow.

    Cant wait...
  • joshmxpxjoshmxpx Unsigned
    edited January 2008
    Blanko;269899 said:
    Yeah, as per Aelius suggestion I grabbed a $7 iron and it works amazing. It was the solder that made my original tests suck. Maybe this is old news, but using a solder infused with flux changed my whole outlook. I even ended up building the pc-relay board for the heck of it. -- anyone in to Toronto want to buy it off me (at cost)... the pc solution will still work when Aelius drops the software on us.

    D
    what would cost be? in just outside of the gta, but would be interested. i was planning on doing this, but this way i could keep my original rb drums intact...
  • SystematicGravySystematicGravy Unsigned
    edited January 2008
    I have finished the pc implementation and have played using it quite a bit this weekend. It works really well, however, I have found a couple problems with my electronic set. I use a Roland TD6, so if anyone also uses this set let me know if you've experienced this or if you ahve any suggestions on how to fix it. First, for some reason if i hit two drum sticks together my snare drum will register a hit, it is the only mesh head on the set, so I'm thinking it's something to do with that. Secondly, I seem to get missed notes in Rock Band when I play blue and green notes using the actual cymbals, but don't miss notes if I play blue and green on the drum pads.

    Other than those two problems, everything seems to work great. I have no additional lag and I can actually play the drum rolls on now. I wrote my code based on Sandeeps implementation, but I don't use any proprietary code, so I will post the full working code below. You will still need the inpout32.dll and include inpout32.dll in the C++ project, which can be downloaded from here, to be able to access the LPT1 port.

    #define WINVER 0x0500
    #include <afxwin.h>
    #include <windows.h>
    #include <mmsystem.h>
    #include <iostream>
    #include <string>
    #include <vector>


    using namespace std;


    short _stdcall Inp32(short PortAddress);
    void _stdcall Out32(short PordAddress, short data);

    void outportb(unsigned char value)
    {
    // 0x378 is LPT1
    Out32(0x378, value);
    }


    bool Notes[5];
    vector<HMIDIIN> MidiInList;

    void CALLBACK MidiInProc(
    HMIDIIN hMidiIn,
    UINT wMsg,
    DWORD_PTR dwInstance,
    DWORD_PTR midimessage,
    DWORD_PTR dwParam2
    )
    {
    if(wMsg = MIM_DATA)
    {
    unsigned char *b = (unsigned char *)&midimessage;

    //0x99 is Note On, Channel 10
    if(b[0] == 0x99)
    {
    cout << (int)b[1] << endl;

    switch(b[1])
    {
    // bass drum = 36

    // snare = 38
    // snare rim = 40

    // hi-hat = 46
    // hi-hat rim - 26

    // tom1 = 48
    // tom1 rim = 50

    // tom2 = 45
    // tom2 rim = 47

    // tom3 = 41
    // tom3 rim = 43

    // crash1 = 49
    // crash1 rim = 55

    // crash2 = 57
    // crash2 rim = 52

    // ride1 = 51
    // ride1 rim = 53

    case 36: // bass drum
    Notes[0] = true;
    break;
    case 38: // snare
    case 40: // snare rim
    Notes[1] = true;
    break;
    case 46: // hi-hat
    case 26: // hi-hat rim
    case 48: // tom1
    case 50: // tom1 rim
    Notes[2] = true;
    break;
    case 45: // tom2
    case 47: // tom2 rim
    case 51: // ride1
    case 53: // ride1 rim
    Notes[3] = true;
    break;
    case 41: // tom3
    case 43: // tom3 rim
    case 49: // crash1
    case 55: // crash1 rim
    Notes[4] = true;
    break;

    }

    }
    }
    }

    int do_frame()
    {
    // 0 triggers nothing
    unsigned char ports = 0;

    /*if(Notes[0] || Notes[1] || Notes[2] || Notes[3] || Notes[4])
    {
    ports = 255;
    }
    */

    if(Notes[0])
    {
    ports = ports^8; // pin 5 (bass/orange drum)
    Notes[0] = false;
    cout << \"orange\" << endl;
    }

    if(Notes[1])
    {
    ports = ports^1; // pin 2
    Notes[1] = false;
    cout << \"red\" << endl;
    }

    if(Notes[2])
    {
    ports = ports^32; // pin 7
    Notes[2] = false;
    cout << \"yellow\" << endl;
    }

    if(Notes[3])
    {
    ports = ports^64; // pin 8
    Notes[3] = false;
    cout << \"blue\" << endl;
    }

    if(Notes[4])
    {
    ports = ports^128; // pin 9
    Notes[4] = false;
    cout << \"green\" << endl;
    }

    outportb(ports);
    Sleep(20);
    outportb(0);

    return 0;
    }

    bool threadExit = false;

    UINT mainLoop(LPVOID pParam)
    {
    // midi initialization by Sandeep
    HMIDIIN midi_in;
    for(unsigned int i = 0; i < midiInGetNumDevs(); i++)
    {
    MMRESULT res = midiInOpen(&midi_in, i, (DWORD_PTR)&MidiInProc, NULL, CALLBACK_FUNCTION);
    if (res == MMSYSERR_NOERROR)
    {
    MidiInList.push_back(midi_in);
    midiInStart(midi_in);
    }
    }

    while(true)
    {
    if(do_frame() != 0 && !threadExit)
    {
    break;
    }
    }

    return 0;
    }

    int main()
    {
    AfxBeginThread(mainLoop, NULL);

    string input;
    while(true)
    {
    cout << \"Type quit to exit\" << endl;
    cin >> input;

    if(input.compare(\"quit\") == 0)
    {
    break;
    }
    }

    vector<HMIDIIN>::iterator iter;
    for(iter = MidiInList.begin(); iter != MidiInList.end(); iter++)
    {
    midiInStop(*iter);
    midiInClose(*iter);
    }

    threadExit = true;

    return 0;
    }

  • superchudsuperchud Unsigned
    edited January 2008
    Have you tried turning down the sensitivity on the snare?

    What cymbals do you have?
  • SystematicGravySystematicGravy Unsigned
    edited January 2008
    I looked for a sensitivity settings, but didn't find out... maybe I should pull out the manual.

    The cymbals I have are both CY-8.
  • BlankoBlanko Opening Act
    edited January 2008
    Hey Joshmxpx,
    I bought it from http://www.a1parts.com/ (in etobicoke) for $60. A little pricy, but not much more than online with shipping from here (http://www.hobbyengineering.com/H1268.html). There's also a pre-assembed kit (http://www.hobbyengineering.com/H1971.html), but A-1 didn't have that. Also more expensive.

    Anyway - if you want to pick it up. I'm closest to yonge+davisville most of the day. Like I said it's assembled and ready to go. You just need a spare computer and the software.

    D
  • BlankoBlanko Opening Act
    edited January 2008
    SystematicGravy;270211 said:
    First, for some reason if i hit two drum sticks together my snare drum will register a hit, it is the only mesh head on the set, so I'm thinking it's something to do with that.
    I'm not sure I understand the problem here? I assume you only want one hit?
    All my pads are mesh.
    Secondly, I seem to get missed notes in Rock Band when I play blue and green notes using the actual cymbals, but don't miss notes if I play blue and green on the drum pads.
    I have CY-14C and CY-15R. I *may* have noticed this as well. But last night was my first time using the new setup - so I just chalked it up as MY inaccuracy. I will specifically test this tonight and report back.

    If this does turn out to be a problem, it may be as simple as adjusting how the module throttles the responsiveness. But off hand, I don't think this should affect the timing of the 'hit'.

    I'm having a little trouble understanding the note output for the hi-hat. Currently I have the hh triggering the yellow (lefty:blue) pad. Additionally/Ideally, I'd like the open hh rim hits to trigger the blue pad (lefty:yellow). The reason for this that the game often uses blue as the accented open hh hits. And it's counter-intuitive to hit a crash cymbal for this effect. I'm thinking the module outputs different notes for open hh hits. But I'm not sure. Anyone else mess with this yet?

    David
  • superchudsuperchud Unsigned
    edited January 2008
    If you plug in your headset to the brain can you here the cymbal trigger twice or just once?

    If twice turn up the re-trigger cancel, if you can only hear it once it could be something with the swing sensor on the CY cymbals maybe try choking the cymbal after you hit it.

    What happens if you hit just the bell on the ride does it double hit?
  • SystematicGravySystematicGravy Unsigned
    edited January 2008
    Blanko;270358 said:
    I'm not sure I understand the problem here? I assume you only want one hit?
    All my pads are mesh.
    I mean like if I'm clicking the drumsticks together in the air during a break in the drum part, it will actually trigger the snare, thus playing the red drum in the game and breaking my streak. I did get my manual out for the set, and there is a setting for both sensitivity and for threshold, so I think I can fix this problem with one of those settings.

    As for the hi-hat vs hi-hat rim, it does output a different value. The values I found for my module was 46 for hi-hat and 26 for hi-hat rim. Another thing, which I haven't tested it, is if holding down the hi-hat pedal changes both values. If that is the case, you could it so both hi-hat and hi-hat rim play yellow with the pedal down and blue with the pedal up. I will do some tests later tonight.
  • BlankoBlanko Opening Act
    edited January 2008
    RE: Cymbal double hits.

    It just occurred to me what might be happening. When I'm using the crash as my counter I'm not usually smashing (like you would when ending a fill, etc). If you're doing the same, take note of how the crash swings up and down. In the past, I've noticed not missed hits, but double hits (which would kill your multiplier in rockband - and might seem like misses).

    These double hits come from when you hit the crash, it swings down, then back up just before your next intentional hit. In this case - depending on your crash sensitivity - that
    (un)intentional hit is where your inaccuracy would be coming from.

    I say "(un)intentional" because these are the kinds of dynamics vdrums strive to produce. But in a rockband 1-1 note relationship these subtleties cause a problem.

    Instead of adjusting sensitivity settings, maybe just try tightening the cymbal on the stand so it doesn't swing when you hit it.

    Side note: I've thought the game should detect notes a little more liberally. Not less accurately, but for example, if I'm playing on medium but I'm able to hit the kick in time with the expert kick - I shouldn't be penalized. As far as making such a thing for this cymbal issue, it might be far off considering this problem doesn't exist while all triggers are fixed pads.
  • BlankoBlanko Opening Act
    edited January 2008
    In-the-air-hits.
    Wow - that's a sensitive pad ;)

    All I can contribute is that I know my kit uses intrument 'cross-talk'. Essentially this is the realistic sound overlap that would occur when recording real drums with mic's. For example, the kick makes the snare 'buzz'.

    If your kit has this functionality, that might be it. It's easily disabled/enabled.

    D
  • BlankoBlanko Opening Act
    edited January 2008
    I isolated all my problems to custom kits and configurations. I simply reset the module back to factory defaults, adjusted the midi notes on the first default kit, and everything worked like a charm.

    D
Sign In or Register to comment.