Use your RockBand and Guitar Hero game drumkits as midi controllers
Switch branches/tags
Nothing to show
Clone or download
ssj71 Merge pull request #7 from osxmidi/master
XBox 360 Guitar Hero changes
Latest commit c176cd7 Mar 8, 2018

README

Rockband Instrument Midi Driver
by Randommatt and ssj71

Version 0.6

Installation:
Requires libusb-1.0, libjack, and libasound2 dev packages to compile and runtime libraries to run
This project now uses cmake, so to install do:
mkdir build
cd build
cmake ..
sudo make install

or if you prefer to compile manually:
cd src
gcc *.c -o rbdrum2midi -lasound -lusb-1.0 -ljack
you will have to execute this locally (or copy the binary to /usr/bin) when using this method..


Execution:
either run the executable localy: 
src/rbdrum2midi (you may have to run this as root if you do not have the correct usb permissions; see notes below)
or run from terminal:
rbdrum2midi


Tested Drumkits:
-PS3 Rockband pro drumkit
-PS3 Guitar Hero world tour kit
-XBox 360 Guitar Hero world tour kit
-PS3 Rockband 1 drumkit
-XBox 360 Rockband 1 drumkit
If your kit isn't listed theres a chance it will still work. If it is a rockband kit try the option '-rb1'.If it doesn't we will happily add support for your kit if you can build and run the commands:
lsusb
/rbdrumkit -dbg
Hit each drum a few times and copy and paste the output to a new issue in github https://github.com/rbdrum2midi/rbdrum2midi/issues

Other Tested Instruments:
-PS3 Rockband wireless guitar
-Xbox 360 Rockband wired guitar

Usage:
connect rbdrumkit wireless dongle (PS3 works, Wii should, xbox probably won't), 
start rbdrum2midi. This will create an ALSA midiport, start the jack audio server and Hydrogen (or your drum program of choice).
If you are using qjackctl, under the alsa tab of the connection window, connect "Game Drumkit Client" to Hydrogen. You may also need the a2j bridge.

run with the '-h' option to see the full useage.

the midi notes are mapped as follows

RB3 drumkit default midi mapping: 
kick pedal 1: 	midi note 36
kick pedal 2:   hihat mode (controlling yellow cymbal)	
red pad : 	midi note 37
yellow pad:	midi note 38
yellow Cymbal:	midi note 41 when kick2 is down, 42 when it is up.
blue pad:	midi note 39
blue Cymbal:	midi note 43
green pad:	midi note 40
green Cymbal:	midi note 45

RB1 drumkit default midi mapping: 
kick pedal : 	midi note 36 
red pad : 	midi note 37
yellow pad:	midi note 38 
blue pad:	midi note 39 
green pad:	midi note 40 

Guitar Hero drumkit default midi mapping:  
kick pedal : 	midi note 36
red pad : 	midi note 37
yellow Cymbal:	midi note 41
blue pad:	midi note 39
Orange Cymbal:	midi note 43
green pad:	midi note 40

This corresponds to the setup for the Hydrogen YamahaVintageKit (note that you can easily change the mapping to GM using the command line arguments).

Note that only the pro-drumkit and Guitar Hero drumkits have velocity information. This is a hardware limitation.

With defaults only rockband drumkits have a hihat pedal as other drumkits only have a single pedal.
However the single pedal on the other drumkits can become the hat pedal through the command line arguments.
Hihat mode changes the hihat drum (default yellow cymbal) midi note when the pedal is opened or closed
You can set the 2 midi values with args -hto and -htc as well as which drum and pedal control the hihat.
The pedal can also play a sample by assigning the hat pedal a midi note value (i.e. -htp bkb -bkb 44).i
Some samplers will play the appropriate hat sample depending on whether the hat pedal note has sent a note off.
To do this (disable the note switching) assign a 0 to the hat pedal (arg -htp 0) and assign the pedal 
the note you wish (i.e. -bkb 44). This interface was concieved as the simplest while maintaining 
flexibility for these different methods.

To fix usb permission problems create the file 90-drumkit.rules with the following line:


SUBSYSTEM=="usb", ATTR{idVendor}=="12ba", ATTR{idProduct}=="0210", GROUP="audio", MODE="0664"
SUBSYSTEM=="usb", ATTR{idVendor}=="12ba", ATTR{idProduct}=="0120", GROUP="audio", MODE="0664"
SUBSYSTEM=="usb", ATTR{idVendor}=="1bad", ATTR{idProduct}=="0003", GROUP="audio", MODE="0664"
SUBSYSTEM=="usb", ATTR{idVendor}=="1bad", ATTR{idProduct}=="0005", GROUP="audio", MODE="0664"


this will work if your linux distro has an "audio" group and your user is a member, otherwise substitute "audio" with "users". 
Place this file in /etc/udev/rules.d/ and reload the udev deamon.

If you are using the JACK driver, it is important that you get these permissions right. Running the program as super will not allow you to see the JACK dbus daemon unless you ran JACK as super.

The original programs' copyrights, disclaimers and limitations still hold.


======OLD README CONTENT=======
 (left for historical reasons)

Version 0.4

Complete code rewrite for tidyness and modularity, for RB1 kits the option is now -rb1 for both xbox and ps3.

for more usage instructions:

rbdrum2midi -h 


Since Ubuntu 12.04 and other "newer distros" regular cmmi may not work so please try the following:

 gcc main.c -o rbdrum2midi -lasound -lusb-1.0

then running the output program using

 ./rbdrum2midi

For addition information on useage (such as assigning the midi values), run it with the -h option.
If your drumkit doesn't seem to work right, we probably haven't had anyone to help us implement it yet. You can help us by sending us the output of

 lsusb

and running

./rbdrum2midi -dbg

(you will probably need to do it as root (sudo) unless you do the workaround found below). Hit each drum a couple of times and send us the output telling us which signals correspond to which drum. Please post these results on the discussion board of our sourceforge project at
http://sourceforge.net/projects/rbdrum2midi/ 
and we'll do our best to accommodate you quickly.

See previous versions for more detailed instructions.

Version 0.3

Support for rb1 drumkits has been added. 
Usage:
xbox rb1 kit
rbdrum2midi -rb1x 
PS3 rb1 kit
rbdrum2midi -rb1p
Problem with dynamic velocity detection for RB2 and RB3-pro kits is solved. 

Version 0.2
Added support for Guitar Hero: World Tour drumkit for the PS3, xbox and wii support is now possible for Rockband drumkits (in the sence that now they may actually work).

Guitar Hero drumkit midi mapping:  
kick pedal : 	midi note 36
red pad : 	midi note 37
yellow Cymbal:	midi note 41
blue pad:	midi note 39
Orange Cymbal:	midi note 43
green pad:	midi note 40

Xbox and wii RB drumkits should get recognized by the program, but if the signalling is different from the PS3 kits, they won't work or at the verry least the mapping will be different.
Unfortunately I don't have xbox and wii hardware to test with, so this is the best I can do.

To use rbdrum2midi without root priviledges create a rules file in /etc/udev/rules.d/


file 90-drumkit.rules:

SUBSYSTEM=="usb", ATTR{idVendor}=="12ba", ATTR{idProduct}=="0210", GROUP="audio", MODE="0664"
SUBSYSTEM=="usb", ATTR{idVendor}=="12ba", ATTR{idProduct}=="0120", GROUP="audio", MODE="0664"
SUBSYSTEM=="usb", ATTR{idVendor}=="1bad", ATTR{idProduct}=="0003", GROUP="audio", MODE="0664"
SUBSYSTEM=="usb", ATTR{idVendor}=="1bad", ATTR{idProduct}=="0005", GROUP="audio", MODE="0664"


this will work if your linux distro has an "audio" group and your user is a member, otherwise substitute "audio" with "users".

Version 0.1

This userland program uses libusb to gain access to the velocity sensitive 
data in the rockband 3 wireless usb prodrum controller (with cymbals) and use it as an ALSA 
MIDI controller. It has a low latency setup so that it can give a fairly 
good drumming experience. This is an evolution of the Rockband 2 Drum Driver of which I have 
attached the original README.

Installation:
Requires libusb and libasound2 dev packages to compile and runtime libraries to run
It follows the ussual cmmi:
./configure
make 
make install

Execution:
either run the executable localy: 
src/rbdrum2midi (you may have to run this as root if you do not have the correct usb permissions)
or run from terminal:
rbdrum2midi

Usage:
connect rbdrumkit wireless dongle (PS3 works, Wii should, xbox probably won't), 
start rbdrum2midi. This will create an ALSA midiport, start the jack audio server and Hydrogen,
in the connection window under the alsa tab connect "129:PS3 Joystick Client" to Hydrogen.
the midi channels are mapped as follows

RB3 drumkit midi mapping: 

kick pedal 1: 	midi note 36
kick pedal 2: 	midi note 42
red pad : 	midi note 37
yellow pad:	midi note 38
yellow Cymbal:	midi note 41
blue pad:	midi note 39
blue Cymbal:	midi note 43
green pad:	midi note 40
green Cymbal:	midi note 45

This corresponds to the setup for the Hydrogen YamahaVintageKit.

To fix usb permission problems create the file 90-PS3-drumkit.rules with the following line:

SUBSYSTEM=="usb", ATTR{idVendor}=="12ba", ATTR{idProduct}=="0210", GROUP="audio", MODE="0664"

place this file in /etc/udev/rules.d/

and reload the udev deamon.

The original programs' copyrights, disclaimers and limitations still hold.




Rockband 2 Drum Driver
by Javantea

Version 0.1

This userland program uses libusb to gain access to the velocity sensitive 
data in the rockband 2 wireless usb drum controller and use it as an ALSA 
MIDI controller. It has a low latency setup so that it can give a fairly 
good drumming experience.

The official homepage:
https://www.altsci.com/concepts/page.php?s=rockband2-drum&p=1

Copyright (C) 2008  Joel R. Voss

This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301,
USA.