# Mock Band Microcontroller Firmware to emulate guitar and drum kit controllers from the Wii version of the Rock Band games. ![Two small plastic guitars and a cheap toy drum pad](docs/mockband.jpg) This is based on the foundational work done by Nicholas Angle on the [Wii Guitar Controller](https://github.com/NianZo/WiiGuitarController) ([text article](https://www.niangames.com/articles/reverse-engineering-rockband-guitar-controllers)). Nicholas was also really nice about answering an email question I sent. Thanks, Nicholas! # Parts Needed * A [Sparkfun Pro Micro](https://www.sparkfun.com/products/12640) * A physical controller # Controllers ## Guitar I 3D printed the [MiniCaster](https://www.printables.com/model/479046-minicaster-mini-clone-heromidi-controller) by Vlad the Inhaler. It comes with full build instructions. ## Drums I bought a [Cheap children's drum toy](https://www.amazon.com/Electronic-Sboet-Practice-Headphone-Christmas/dp/B0CHJMYCH9/) from Amazon. There are dozens of copies of this thing, the one I got was on sale for $25. I had to unscrew the cover and remove the logic board, battery, and speaker. The pads were connected with a sort of ribbon connector, which I desoldered and removed, then placed in my own perma-proto board. I also hooked up a 3.5mm TRS jack for the two pedals, which I could have desoldered from the toy (I already had these). I'm sorry I didn't photograph or record any of this, but it was pretty straightforward. # Compiling This compiles in the Arduino IDE. It doesn't have any library dependencies. You need to make two edits to `boards.txt`. Instructions for this are all over the place. Find your board, and edit the `build` lines. Don't edit anything that doesn't say `build` on the line! I can't help you if you do this. In my examples, I'm editing the lines for the leonardo build. Yours might be different: it should match the board you're using. ## Build flags This disables serial communications on the board. leonardo.build.extra_flags={build.usb_flags} -DCDC_DISABLED Hat tip to Nicholas Angle for figuring this out so I didn't have to. ## VID and PID These set the USB identifiers. VID is the Vendor ID, and PID is the Product ID. `0x1bad` means "Harmonix Music", at least, it does to the Linux kernel. ### For guitar PID `0x004` means "Guitar controller". leonardo.build.vid=0x1bad leonardo.build.pid=0x0004 leonardo.build.usb_product="Mockband Guitar" ### For drums PID `0x3110` means "Rock Band 2 drums". This works better with all versions of Rock Band on my wii, even if you don't use the cymbal inputs. leonardo.build.vid=0x1bad leonardo.build.pid=0x3110 leonardo.build.usb_product="Mockband Drums" # Wiring Both the guitar and drum kit I used provide simple momentary switches: nothing fancy like a piezo. If you're using fancier types of inputs, you'll need to modify the source code. ## Guitar ![guitar wiring](docs/guitar.png) | silkscreen pin name | description | | --- | --- | | TX0 | strum up | | RX1 | strum down | | 2 | tilt switch | | 3 | green | | 4 | red | | 5 | yellow | | 6 | blue | | 7 | orange | | 8 | no connection | | 9 | wammy bar (see note) | | 10 | plus | | 16 | minus | | 14 | orange solo | | 15 | blue solo | | 18 | yello solo | | 19 | red solo | | 20 | green solo | | 21 | no connection | The solo buttons and wammy bar are optional. I don't use them. If you hook up a wammy bar, be sure to uncomment the `#define WAMMY` in the code! ## Drum Kit ![drum wiring](docs/drums.png) | silkscreen pin name | description | | --- | --- | | TX0 | no connection | | RX1 | no connection | | 2 | 2x kick / hat (see below) | | 3 | green | | 4 | red | | 5 | yellow | | 6 | blue | | 7 | kick | | 8 | no connection | | 9 | no connection | | 10 | plus | | 16 | minus | | 14 | no connection | | 15 | blue cymbal | | 18 | yellow cymbal | | 19 | hi hat pedal (see below) | | 20 | green cymbal | | 21 | no connection | ### Pedals If you only have one pedal, wire it to pin 7. If you have two pedals, wire them to 7 and 2. If you have three pedals, wire them to 7, 2, and 19. Wii Rock Band 3 only looks at the 2x kick pin: it provides a checkbox to reassign this to the high hat. Clone Hero will use both the 2x kick and the hi hat. Maybe there is some other game that uses this too. # Bugs / Not Yet Implemented I'm tracking things I need to do in the [forgejo issues](https://git.woozle.org/neale/mockband/issues). There's a rumor that one day forgejo/gitea will join the fediverse. Until that happens, just [email me](mailto:neale@woozle.org), and I'll open an issue. # License You may use this under the terms of the [MIT License](docs/COPYING.md). # Need help? [Email me](mailto:neale@woozle.org), I'm friendly :)