From 829aeebcc45c47f10ca53f6c50f766c3126b4256 Mon Sep 17 00:00:00 2001 From: Neale Pickett Date: Wed, 3 Jan 2024 22:54:29 -0700 Subject: [PATCH] rock band re post --- .../2024/01-03-wii-drum-controller/index.md | 79 +++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 content/blog/2024/01-03-wii-drum-controller/index.md diff --git a/content/blog/2024/01-03-wii-drum-controller/index.md b/content/blog/2024/01-03-wii-drum-controller/index.md new file mode 100644 index 0000000..552acb6 --- /dev/null +++ b/content/blog/2024/01-03-wii-drum-controller/index.md @@ -0,0 +1,79 @@ +--- +title: Wii drum controller +date: 2024-01-03 +tags: + - rockband +--- + +The Rock Band controllers (guitars and drum kit) +are working very well on LEGO Rock Band and Clone Hero. +But I'm a completionist, +so I'm not resting yet: +the cymbals don't work on Rock Band 3! + +Here's what I've found out so far about the Wii Rock Band drum kit. +This is +based on +the Clone Hero wiki, +[a forums post](https://discourse.zynthian.org/t/rockband-drums-joystick-as-a-drum-controller/2475/3), +and the +[rbdrum2midi](https://github.com/rbdrum2midi/rbdrum2midi/blob/master/src/rbkit.c) +software. +That last one was an exciting find: +someone coded up how to read the controller. +I may be able to use this program to test my controller code, +instead of having to keep restarting games on the Wii! + + +Rock Band 1 Drums +----------------- + +VID: 0x1bad +PID: 0x0005 + +This works very similarly to the guitar code. +The pads work the same as the non-solo buttons, +kick drum is the orange pad. +d-pad is sent as axis 2. +That's it! + +I have these working as I write this, +2024-01-03. + + +Rock Band 2/3 Drums +------------------- + +VID: 0x1bad +PID: 0x3110? + +These are velocity-sensitive, +but Amazon reviews claim they work with Rock Band 1. +So either RB1 will recognize PID 0x3110 as a drum controller, +the drums show up with two PIDs somehow, +or I have bad information. + +rbdrum2midi makes it look like +both PIDs use the same interface. +I think it may be likely that 0x0005 sends velocity information! + +It does specify bit 3 of byte 1 in the HID report +is the cymbal flag, +which lines up with what Clone Hero says (button 10), +and is what I'm sending. +The two kick drum bits rbdrum2midi reads +also align with what I'm sending. +But rbdrum2midi isn't going to read any of my pad hits, +because it's looking for velocity values. + +Maybe RB3 needs velocity >0 for cymbal hits. + +I'll try sending 0x7f +in the reserved bytes for pads. +These bytes seem to be ordered differently than the bits. +rbdrum2midi lists the order as: + +* byte 11: yellow +* byte 12: red +* byte 13: green +* byte 14: blue