docs docs docs

This commit is contained in:
Neale Pickett 2024-01-04 13:51:38 -07:00
parent 39e576f648
commit db32f4a41a
2 changed files with 81 additions and 3 deletions

View File

@ -150,7 +150,7 @@ in the code!
| --- | --- |
| TX0 | no connection |
| RX1 | no connection |
| 2 | 2x kick |
| 2 | 2x kick / hat (see below) |
| 3 | green |
| 4 | red |
| 5 | yellow |
@ -163,10 +163,30 @@ in the code!
| 14 | no connection |
| 15 | blue cymbal |
| 18 | yellow cymbal |
| 19 | hi hat pedal |
| 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

View File

@ -1,3 +1,12 @@
Technical Notes
===============
It took me a lot of time digging around the Internet to find some of this stuff.
I'm writing down the highlights here,
so that when original sources fall off the net,
hopefully at least my notes will still be around.
Sample Rate
-----------
@ -76,4 +85,53 @@ I don't know how I can verify that I'm setting this right,
but the `rbdrum2midi` program looks at these bytes to detect hits.
I set them to 127 when a hit is detected on the digital pin.
Sending these values does not seem to cause problems with my Wii games.
Sending these values does not seem to cause problems with my Wii games.
Product ID (PID)
----------------
Nicholas,
who did the initial work on the guitar,
suggested that PID 0x0005 would get the sketch working as drums.
And that was correct:
this works great on
Wii Rock Band 1 and
Wii LEGO Rock Band.
But it fails in frustrating ways on
Wii Rock Band 3:
the yellow and blue pads don't navigate menus,
and cymbals aren't detected.
The fix was setting the USB PID to 0x3110.
Drum Velocity
--------
I split the 12 "reserved" bytes from Nicholas's
`struct InstrumentButtonState`
into 4 bytes of I-Don't-Know, 4 bytes of velocity,
and 4 more bytes of I-Don't-Know.
Whenever a pad is hit,
I send 127 on the corresponding velocity.
I did this because a program called `rbdrum2midi`
ignores the button press events,
and looks only at the velocity values.
None of the Wii games I have
seem to care what these values are set to.
References
=========
The most valuable sources of information I found were:
* [Nicholas Angle's reverse-engineering write-up](https://www.niangames.com/articles/reverse-engineering-rockband-guitar-controllers)
* [Nicholas Angle's guitar controller program](https://github.com/NianZo/WiiGuitarController)
* [Clone Hero Wiki: Drum Mapping Guide](https://wiki.clonehero.net/books/guitars-drums-controllers/page/drum-mapping-guide)
* [rbdrum2midi source code](https://github.com/rbdrum2midi/rbdrum2midi)