It'll also work for any PS3 Rock Band game. Passthrough Wii guitar, rearrange Wii/PS3 Keyboard to act as a guitar. PS3 guitars already work on PS4.
This project is fairly out of date as the equipment was obtained in 2011, the firmware made for the Uno Rev 1 (8U2) does appear to work with the Uno Rev 3 (16U2).
Avoid getting a Leonardo for the task unless you want to solve a new problem.
I've found having a USB Hub between the PS4 and the Arduino helps with stability, for some reason without the hub the button presses will stop transmitting but the PS4 will still say the guitar is connect. The USB hub might require power if you have other devices connected.
The Sparkfun USB Host Shield I used requires the Arduino has a 7-12V (500-1500mA) power supply. Can sometimes get away without it for the Wii keyboard adapter but Wii guitar and PS3 keyboard seem to need it. If you adapter isn't lighting up or connecting to the controller this is probably the problem.
Firmware from November 4th 2015. Sketch from February 5th 2017 updated for more recent Arduino IDE and USB Host Shield 2.0 library.
All the hard work was done unknowingly by Dean Camera for LUFA, Darran Hunt for the base Joystick firmware project, the various developers for the USB Host Shield 2.0 library, and all the corners of the Internet that had notes about how Rock Band controllers work.
Thanks to all my family and friends for putting up with me whining about the power issues and the PS3 keyboard being so similar and different to the Wii keyboard.
The Arduino will act as a passthrough, the USB HID data for Wii and PS3 is pretty much the same. In theory later controllers will also work fine as a RB1 guitar (no auto calibration).
If the Arduino thinks the USB controller attached is a keyboard (it only looks at the raw HID data, not the device ID), it will rearrange the raw data to emulate playing a Rock Band 1 Guitar. Use the console buttons (and the lone orange key) for menu navigation, and use the coloured keys for when you're playing the game - keys down will trigger a strum, lifting a key from a chord will not. Unlike Rock Band 3 with a native keyboard, the effects switch is mapped!
I've known for quite a while now how to activate the keys for PS3 keyboards but it's taken a while to figure out how to do that on an Arduino, it's quite simple really (although requires resetting until it works properly). Could be done better, but I'm still an Arduino beginner. This extra message is currently sent no matter what device is connected, does not appear to be causing any conflict with the previously supported controllers.
The following controllers I own are not supported for this conversion at this time (and I'm not that interested):
Xbox 360 controllers on PS3/PS4 are probably possible, you'll probably need a Xbox 360 Wireless Gaming Receiver for Windows and to look through the USB Host Shield library examples and figure that out yourself. For any device really, if you can get the data into the Arduino (e.g. Software Serial, MIDI Shield, Bluetooth) you can make a sketch send the emulated guitar data to the firmware and it should work just fine.
Regarding the Mustang, yes I could absolutely add support for it I have all the information I need to make it work, but should I? It barely worked for RB3 legacy guitar. I don't have a RB2+ guitar I wouldn't be able to work out how to convert it just for auto calibration.
If you want to modify the USB HID Firmware for the Arduino you will need a few extra things to compile it.
I used to play on Wii, had all the main games and quite a bit of DLC. RBN ports were eventually discontinued for Wii. I bought a PS3, all the main games and my DLC again. I didn't want to get rid of my Wii stuff (thinking it's not worth anything) and I didn't really want to get more stuff that was going to take up space in my house, so I looked into a conversion.
A MIDI PRO-Adapter was good enough for the keyboard. The overdrive button on the keyboard didn't activate overdrive when used this way. I had 2 Wii guitars I couldn't use but I liked them so much more than the cheap GH3 PS3 controller I picked up.
The first conversion attempts years ago involved serial/MIDI data from a computer to an Arduino, lag was barely an issue, the cables and a laptop near the console were. Eventually moved to using a USB Host Shield, but I suffered a hard drive failure and lost a bunch of stuff.
I bought a PS4 just for Rock Band 4, the RB3 PS3 Keyboard isn't even supported, and thus my fascination with this problem was reignited!
However, as Australians are included in the Sony Europe region, there was a long wait for RB2/Lego/Green Day exports, therefore I've barely been playing RB4 and working on this project.
My email address is: contact[at]jasonharley2o.com