Neale Pickett
·
2024-01-15
README.md
1---
2gitea: none
3include_toc: true
4---
5
6# Introduction
7
8Microcontroller Firmware to emulate guitar and drum kit controllers from the
9Wii version of the Rock Band games.
10
11
12
13This is based on the foundational work done by Nicholas Angle on the
14[Wii Guitar Controller](https://github.com/NianZo/WiiGuitarController)
15([text article](https://www.niangames.com/articles/reverse-engineering-rockband-guitar-controllers)).
16Nicholas was also really nice about answering an email question I sent.
17Thanks, Nicholas!
18
19
20# Parts Needed
21
22* A [Sparkfun Pro Micro](https://www.sparkfun.com/products/12640)
23* A physical controller
24
25
26# Skills Needed
27
28This is a research project:
29it's assumed you already have a skillset that includes:
30
31* Disassembling consumer electronics
32* Using a multimeter to perform continuity checks
33* Building electronics projects using a microcontroller
34* Soldering
35* Running the Arduino IDE *or* using `avrdude` to flash a firmware
36
37If you're not comfortable with the above list,
38your best option right now (Jan 2024) is to either buy a used kit,
39or wait for the Polybar project to finish their work
40producing a beginner-friendly kit with assembly manual.
41
42
43# Controllers
44
45## Guitar
46
47I 3D printed the
48[MiniCaster](https://www.printables.com/model/479046-minicaster-mini-clone-heromidi-controller)
49by Vlad the Inhaler.
50It comes with full build instructions.
51
52## Drums
53
54I bought a [Cheap children's drum toy](https://www.amazon.com/Electronic-Sboet-Practice-Headphone-Christmas/dp/B0CHJMYCH9/)
55from Amazon.
56There are dozens of copies of this thing,
57the one I got was on sale for $25.
58
59I had to unscrew the cover and remove the
60logic board, battery, and speaker.
61The pads were connected with
62a sort of ribbon connector,
63which I desoldered and removed,
64then placed in my own perma-proto board.
65
66I also hooked up a 3.5mm TRS jack for the two pedals,
67which I could have desoldered from the toy
68(I already had these).
69
70I'm sorry I didn't photograph or record any of this,
71but it was pretty straightforward.
72
73
74# Building
75
76This will compile in the Arduino IDE,
77or on the commandline using `make`.
78
79## Command Line
80
81Just run `make` on a Unix system.
82I set up paths for my Debian install of Arduino 1.8;
83you may need to adjust them if your setup has different paths.
84
85There is a `flash-%` target that will upload the built firmware to a Pro Micro.
86The following targets exist:
87
88 make flash-guitar # Guitar firmware
89 make flash-guitar-wammy # Guitar firmware with wammy bar
90 make flash-drums # Drums firmware
91
92## Arduino
93
94Mockband has no library dependencies,
95and as far as I can tell,
96will work with the built-in Leonardo profile,
97even though you're uploading to a Pro Micro.
98
99You need to make two edits to `boards.txt`.
100Instructions for this are all over the place.
101
102Find your board, and edit the `build` lines.
103Don't edit anything that doesn't say `build` on the line! I can't help you if you do this.
104
105In my examples, I'm editing the lines for the leonardo build. Yours might be different:
106it should match the board you're using.
107
108### Build flags
109
110This disables serial communications on the board.
111
112 leonardo.build.extra_flags={build.usb_flags} -DCDC_DISABLED
113
114Hat tip to Nicholas Angle for figuring this out
115so I didn't have to.
116
117### VID and PID
118
119These set the USB identifiers.
120VID is the Vendor ID,
121and PID is the Product ID.
122
123`0x1bad` means "Harmonix Music",
124at least, it does to the Linux kernel.
125
126#### For guitar
127
128PID `0x004` means "Guitar controller".
129
130 leonardo.build.vid=0x1bad
131 leonardo.build.pid=0x0004
132 leonardo.build.usb_product="Mockband Guitar"
133
134
135#### For drums
136
137PID `0x3110` means "Rock Band 2 drums".
138This works better with all versions of Rock Band on my wii,
139even if you don't use the cymbal inputs.
140
141 leonardo.build.vid=0x1bad
142 leonardo.build.pid=0x3110
143 leonardo.build.usb_product="Mockband Drums"
144
145
146# Wiring
147
148Both the guitar and drum kit I used
149provide simple momentary switches:
150nothing fancy like a piezo.
151If you're using fancier types of inputs,
152you'll need to modify the source code.
153
154## Guitar
155
156
157
158| silkscreen pin name | description |
159| --- | --- |
160| TX0 | strum up |
161| RX1 | strum down |
162| 2 | tilt switch |
163| 3 | green |
164| 4 | red |
165| 5 | yellow |
166| 6 | blue |
167| 7 | orange |
168| 8 | no connection |
169| 9 | wammy bar (see note) |
170| 10 | plus |
171| 16 | minus |
172| 14 | orange solo |
173| 15 | blue solo |
174| 18 | yello solo |
175| 19 | red solo |
176| 20 | green solo |
177| 21 | no connection |
178
179The solo buttons and wammy bar are optional.
180I don't use them.
181
182If you hook up a wammy bar,
183be sure to uncomment the `#define WAMMY`
184in the code!
185
186
187## Drum Kit
188
189
190
191| silkscreen pin name | description |
192| --- | --- |
193| TX0 | no connection |
194| RX1 | no connection |
195| 2 | 2x kick / hat (see below) |
196| 3 | green |
197| 4 | red |
198| 5 | yellow |
199| 6 | blue |
200| 7 | kick |
201| 8 | no connection |
202| 9 | no connection |
203| 10 | plus |
204| 16 | minus |
205| 14 | no connection |
206| 15 | blue cymbal |
207| 18 | yellow cymbal |
208| 19 | hi hat pedal (see below) |
209| 20 | green cymbal |
210| 21 | no connection |
211
212### Pedals
213
214If you only have one pedal,
215wire it to pin 7.
216
217If you have two pedals,
218wire them to 7 and 2.
219
220If you have three pedals,
221wire them to 7, 2, and 19.
222
223Wii Rock Band 3
224only looks at the 2x kick pin:
225it provides a checkbox to reassign this to the high hat.
226Clone Hero
227will use both the 2x kick and the hi hat.
228Maybe there is some other game that uses this too.
229
230
231# Related Projects
232
233Mockband is a research project.
234You can use it to build a fully working controller,
235but the main goal of this project is to inform other developers.
236
237If you're looking for a user-friendly way to get a Rock Band drum controller,
238consider the following alternatives:
239
240* Buying a used Harmonix (official Rock Band) drum kit
241* Mad Catz Rock Band 3 MIDI PRO-Adapter and a MIDI e-drum kit
242* [Santroller](https://santroller.tangentmc.net/wiring_guides/drum.html)
243 wired to a used Harmonix drum kit
244
245
246# Bugs / Not Yet Implemented
247
248I'm tracking things I need to do in the
249[forgejo issues](https://git.woozle.org/neale/mockband/issues).
250
251There's a rumor that one day forgejo/gitea will join the fediverse.
252Until that happens,
253just
254[email me](mailto:neale@woozle.org),
255and I'll open an issue.
256
257
258# License
259
260You may use this under the terms of the [MIT License](docs/COPYING.md).
261
262
263# Need help?
264
265[Email me](mailto:neale@woozle.org),
266I'm friendly :)