A microcontroller
The Pi Pico is recommended, but click below to see information about other microcontrollers.
Some Wire
Soldering Iron
Multimeter (it will be used mainly in continuity mode, where it beeps when the two contacts are shorted together)
Wire Strippers
Wire Cutters
Heatshrink
Supplies for specific features
This guide assumes that you know how to solder, if you do not stop now and go practice soldering.
If you have no idea what a microcontroller is, start here. If you are familiar with microcontrollers and pcbs skip to choosing a microcontroller.
A microcontroller is a small board that can be programmed to perform various functions. In this guide you will be using the microcontroller to replace the main board of the guitar. Around the edge of the microcontroller, you will see various solder through holes called pins. These are labelled with a pinout (which you can find by googling {your microcontroller} pinout) and sometimes on the microcontroller itself. The pins have various functions, but for this controller mod you will need to be familiar with 4 kinds:
Analogue pins can be used as a digital pin, but digital pins CANNOT be used as an analogue pin. So if it the instructions say connect to a digital pin, you can use an analogue pin.
Analogue pins can be used as a digital pin, but digital pins CANNOT be used as an analogue pin. So if it the instructions say connect to a digital pin, you can use an analogue pin.
V<sub>CC</sub> and GND can have more than one wire soldered to them. For example, if you want tilt and whammy but only have one V<sub>CC</sub> you can solder them both to the single V<sub>CC</sub> pin on the microcontroller.
V<sub>CC</sub> and GND can have more than one wire soldered to them. For example, if you want tilt and whammy but only have one V<sub>CC</sub> you can solder them both to the single V<sub>CC</sub> pin on the microcontroller.
Avoid pins 0 and 1 on the Arduino Uno, as these get used for sending controller information over USB.
Avoid pins 0 and 1 on the Arduino Uno, as these get used for sending controller information over USB.
Note that on the pi pico you need to use the 3v3 out
pin (pin 36) for your V<sub>CC</sub>, not 5V or 3v3_en
. The pins on the pico are not rated for 5v, and the 3v3_en
pin is actually an input that will stop your pico from starting.
If you are unfamiliar with microcontrollers, you may also be unfamiliar with PCBs in general and figuring out which pins correlate to which function. Here are some terms you will need to know.
For every function of the guitar, you will follow these same 3 basic steps. More details for specific functions will be given below.
Once you have successfully modded one guitar (or even during your first) you will find it easiest to disconnect everything then begin soldering as it gives you more room to work. To keep the relevant information in this guide easy to find, information is sorted by function.
To wire an xplorer start/select board you will have to solder directly to the contacts and cut the traces that connect to each contact. It is not recommended you try to mod an xplorer as your first project because this can be difficult.Note that with the Pi Pico, you can instead just hook these inputs up over USB, and avoid soldering them.
If you are working on a controller with only "2" pins as shown below, you will need to desolder the bridged pins and run 3 wires yourself as noted above for the whammy to work best with the configurator.
If you are working on a controller with only "2" pins as the RB Precision Bass, you will need to desolder the bridged pins and run 3 wires yourself as noted above for the pickup selector to work best with the configurator. For the Precision Bass this is easiest done by desoldering the PCB attached to the potentiometer, and then running your own wires directly to the potentiometer.
Connect GND to GND
Connect VCC to VCC (note that this is a 3.3v device, so for 5V microcontrollers make sure your breakout has a voltage regulator onboard or you are using your own regulator)
Hook up SDA and SCL to the microcontroller
Microcontroller | SDA | SCL |
---|---|---|
Pi Pico (Recommended) | GP18 | GP19 |
Pro Micro, Leonardo, Micro | 2 | 3 |
Uno | A4 | A5 |
Mega | 20 | 21 |
Pi Pico (Advanced, Channel 0) | GP0, GP4, GP8, GP12, GP16, GP20 | GP1, GP5, GP9, GP13, GP17, GP21 |
Pi Pico (Advanced, Channel 1) | GP2, GP6, GP10, GP14, GP18, GP26 | GP3, GP7, GP11, GP15, GP19, GP27 |
For d-pads that are integrated with the main board it is advised you skip wiring the dpad as you have to solder directly to the contacts and run wires accross the board. You will either be able to use your keyboard for these buttons, or they really won't really be needed as the games were designed to be controlled with the guitar alone. Below is an example of what this can look like, and why it is advisable to skip.
For guitars with a DPad that is seperate, it will be much easier to wire as you can follow the traces and wire it to the pins like you would for start/select.
For guitars with a joystick, there will be four pins, one is VCC, one is GND, one is the x axis and one is the y axis. You can work out which is which by tracing the traces, however on some guitars the traces are labelled for you. The joystick needs to go to an analogue pin (one of the A pins)
The Strum switches are similar to the start and select buttons, they will be three wires on some guitars. For these situations it is easy enough to connect to the microcontroller.
On others, the Strum switches are a part of the main PCB, and you will need to solder directly to the strum switches, which should poke out the back of the main PCB. For example, on a wiitar, you will see the following:
In this case, there are two grounds that will be shorted together, so with the multimeter, you should be able to work out which pins are ground, by testing a pin from each switch, and working out which ones are shorted together by it beeping.
Note that you can also choose to replace the original PCB with a 3D printed strum switch holder. If you want to go that route, there are some designs around for various guitars. The image at the beginning of this guide shows how this would look.
When the strums are part of the main board you will need to cut the traces or you will have phantom inputs as your signal will still be traveling through the motherboard. (this is when your strum switches constantly input and you likely cannot autobind inputs in the configurator) You will need to take a knife and cut any traces that connect to the strum switches. In the picture below, the person did not cut many traces as they knew which ones were causing phantom inputs. Cutting extra traces is not going to affect your arduino guitar, as none of the traces are used except the one that connects the two grounds of the switches together. Even if you accidentally cut that trace, you will be able to connect the grounds again with a little extra wire.
The world tour slider bar originally used a single wire to connect between the bar and the main PCB. This caused a lot of problems, as the format of data being sent over this wire is not optimal for speed, and it limits the combinations of frets we can read from the slider bar. To combat this, we bypass the chip generating this data, and opt to use a dedicated touch sensor chip, the MPR121, to handle reading from the slider bar and sending us data in a format that we can easily use.
Cut the traces indicated with red lines in the following image on your Slider bar PCB. You can also opt to just desolder U2 if you prefer.
Solder each of the circled vias on the WT Slider bar PCB to its own channel on the MPR121. It is recommended to use channels 0-4 for the slider bar, as the MPR121 requires assigning touch pads first before other pins.
For the frets, follow the traces between the fret contacts. The ground wire traces will connect to all of the fret contacts, whereas a fret trace will lead to a single fret contact. At the end of this guide, there are some images for known neck pinouts. If using the multimeter, test between the fret wire and the ground wire, and the multimeter should beep when the fret is pressed.
Connect the common grounds to a ground pin on the MPR121.
Connect each fret to its own unused channel on the MPR121.
Hook up VCC (marked as 3.3V) and GND (marked as GND) to the microcontroller. Note that this means you need to use a 3.3V power pin on your microconroller, so if your microcontroller only has 5V power pins you will need a voltage regulator.
Hook up SDA and SCL to the microcontroller
Microcontroller | SDA (D) | SCL (C) |
---|---|---|
Pi Pico (Recommended) | GP18 | GP19 |
Pro Micro, Leonardo, Micro | 2 | 3 |
Uno | A4 | A5 |
Mega | 20 | 21 |
Pi Pico (Advanced, Channel 0) | GP0, GP4, GP8, GP12, GP16, GP20 | GP1, GP5, GP9, GP13, GP17, GP21 |
Pi Pico (Advanced, Channel 1) | GP2, GP6, GP10, GP14, GP18, GP26 | GP3, GP7, GP11, GP15, GP19, GP27 |
Hook up VCC (marked as V or VCC) and GND (marked as GND or G) to the microcontroller
Hook up SDA (Marked as D) and SCL (marked as C) to the microcontroller
Microcontroller | SDA (D) | SCL (C) |
---|---|---|
Pi Pico (Recommended) | GP18 | GP19 |
Pro Micro, Leonardo, Micro | 2 | 3 |
Uno | A4 | A5 |
Mega | 20 | 21 |
Pi Pico (Advanced, Channel 0) | GP0, GP4, GP8, GP12, GP16, GP20 | GP1, GP5, GP9, GP13, GP17, GP21 |
Pi Pico (Advanced, Channel 1) | GP2, GP6, GP10, GP14, GP18, GP26 | GP3, GP7, GP11, GP15, GP19, GP27 |
Hook up VCC, GND, SCL and SDA pins to your microcontroller. Note that this is one of the few I2C devices that works perfectly fine on 5v.
Hook up SDA (Marked as D) and SCL (marked as C) to the microcontroller
Microcontroller | SDA (D) | SCL (C) |
---|---|---|
Pi Pico (Recommended) | GP18 | GP19 |
Pro Micro, Leonardo, Micro | 2 | 3 |
Uno | A4 | A5 |
Mega | 20 | 21 |
Pi Pico (Advanced, Channel 0) | GP0, GP4, GP8, GP12, GP16, GP20 | GP1, GP5, GP9, GP13, GP17, GP21 |
Pi Pico (Advanced, Channel 1) | GP2, GP6, GP10, GP14, GP18, GP26 | GP3, GP7, GP11, GP15, GP19, GP27 |
In some cases, you may want to poll frets directly, but you still wish to use a neck connector that does not have enough pins to connect the frets. You can get around this by using an MPR121.
Cut the traces going from the main chip to the pads on the slider PCB.
Solder each via on the Slider bar PCB to its own channel on the MPR121. It is recommended to use channels 0-4 for the slider bar, as the MPR121 requires assigning touch pads first before other pins.
For the frets, follow the traces between the fret contacts. The ground wire traces will connect to all of the fret contacts, whereas a fret trace will lead to a single fret contact. At the end of this guide, there are some images for known neck pinouts. If using the multimeter, test between the fret wire and the ground wire, and the multimeter should beep when the fret is pressed.
Connect the common grounds to a ground pin on the MPR121.
Connect each fret to its own unused channel on the MPR121.
Hook up VCC (marked as 3.3V) and GND (marked as GND) to the microcontroller. Note that this means you need to use a 3.3V power pin on your microconroller, so if your microcontroller only has 5V power pins you will need a voltage regulator.
Hook up SDA and SCL to the microcontroller
Microcontroller | SDA (D) | SCL (C) |
---|---|---|
Pi Pico (Recommended) | GP18 | GP19 |
Pro Micro, Leonardo, Micro | 2 | 3 |
Uno | A4 | A5 |
Mega | 20 | 21 |
Pi Pico (Advanced, Channel 0) | GP0, GP4, GP8, GP12, GP16, GP20 | GP1, GP5, GP9, GP13, GP17, GP21 |
Pi Pico (Advanced, Channel 1) | GP2, GP6, GP10, GP14, GP18, GP26 | GP3, GP7, GP11, GP15, GP19, GP27 |
In some cases, you may want to poll frets directly, but you still wish to use a neck connector that does not have enough pins to connect the frets. You can get around this by putting a second Pi Pico in the neck.
Choose some SDA and SCL pins on each Pico, and connect them by these pins.
Microcontroller | SDA | SCL |
---|---|---|
Pi Pico (Recommended) | GP18 | GP19 |
Pi Pico (Advanced, Channel 0) | GP0, GP4, GP8, GP12, GP16, GP20 | GP1, GP5, GP9, GP13, GP17, GP21 |
Pi Pico (Advanced, Channel 1) | GP2, GP6, GP10, GP14, GP18, GP26 | GP3, GP7, GP11, GP15, GP19, GP27 |
Connect the Slider bar to the same SDA and SCL pins
Connect VBUS and GND between the two Pi Picos.
Connect the Slider bar to 3.3v and GND on the peripheral Pico.
For the frets, if it is not labeled it is easiest to follow the traces between the fret contacts. The ground wire traces will connect to all of the fret contacts, whereas a fret trace will lead to a single fret contact. At the end of this guide, there are some images for known neck pinouts. If using the multimeter, test between the fret wire and the ground wire, and the multimeter should beep when the fret is pressed.
Connect the common grounds to a ground pin on the peripheral Pico.
Connect each fret to its own unused digital pin on the peripheral Pico.
If you intend to use the peripheral features, it is recommended to program the peripheral pico first. Follow the below instructions to do that, or skip these if you are not using this feature.
Peripheral Device
Controller Settings
Emulation Type
to Controller
Controller Type
based on the game you want to play.Windows controller mode
can be set based on your preferences. Note that this only affects windows, a controller in XInput mode will use the correct mode on a console, and will automatically use HID mode on Linux and macOS. XInput
- This works more natively on windows, and most games will automatically bind controls.HID
- This uses HID on windows, which means games won't automatically bind controls, but HID is polled a bit more efficiently in games like Clone Hero.Controller Poll Settings
Queue Based Inputs
you can turn that on here. This puts any buttons you press into a queue, and sends them out to the PC as fast as USB allows. This means that the controller will process your inputs at a faster poll rate than 1ms (the fastest rate USB allows) and then the PC will be sent your inputs at a 1ms rate.Input Type
is set to Digital Pin Input
.Pin Mode
is set to Pull Up
.Find Pin
button, and then press the button on the guitar. If you have wired everything correctly, the tool should detect the pin and the icon for that button should now light up whenever the button is pressed.Input Type
to Shortcut
Input Type
to Digital Pin Input
Pin Mode
is set to Pull Up
.Find Pin
button, and then press the start button on the guitar. If you have wired everything correctly, the tool should detect the pin.Find Pin
button, and then press the select button on the guitar. If you have wired everything correctly, the tool should detect the pin and the icon for the home button should now light up whenever both start and select is pressed.Input Type
to Analog Pin Input
.Type
to Joystick Negative
Find Pin
and move the joystick left or rightType
to Joystick Positive
instead.Add Setting
and add another Strum Up and Strum Down input. Then you can follow the above instructions again, only using negative for up and positive for down, and when detecting the pin, move the joystick up and down instead.Input Type
is set to Analog Pin Input
.Find Pin
button, and then press on the whammy. If you have wired everything correctly, the tool should detect the pin and the Original Value
value should change when you push on the whammy.Calibrate
.Next
.Next
Next
. If your whammy is noisy, you can push it in a tiny bit, and the zero position will be set to this location, which will make sure that the whammy is always considered released when it is released.Input Type
is set to Analog Pin Input
.Find Pin
button, and then move the pickup selector. If you have wired everything correctly, the tool should detect the pin and the Original Value
value should change when you move the pickup selector.Original Value
of the pickup selector decreases as you increase the notch position on your guitar, turn on Invert
.Notch 2 Value
so that the current notch is Notch 2
.Notch 3
as detailed above.Input Type
is set to Digital Pin Input
.Pin Mode
is set to Pull Up
.Find Pin
button, and then tilt your guitar. If you have wired everything correctly, the tool should detect the pin and the tilt icon should light up whenever you tilt the guitar.Invert
option to correct this.Input Type
is set to Analog Pin Input
.Find Pin
button, and then tilt your guitar. If you have wired everything correctly, the tool should detect the pin and the tilt Original Value
value should change as you tilt your guitar.Calibrate
Next
Next
Next
. Values below this position will be zeroed.Add setting
Accelerometer
Accelerometer Type
for your given sensorInput Type
is set to Accelerometer Input
.Calibrate
Next
Next
Next
. Values below this position will be zeroed. With the adxl, you can increase the deadzone to help counteract strumming or shaking activating tilt.Low Pass Filter
. This value controls how new value from the ADXL are filtered, a value closer to 0 will result in a sensor that won't respond to a shake or strumming, but if you decrease it too much the sensor will have a decreased responsiveness. If you set it closer to 1, then the sensor will be very responsive but it will also pick up any tiny vibrations as well. From testing a value of 0.05 seemed like a good place to start.MPR121 Settings
MPR!21 Capacitive Touch Pad Count
based on the number of touch pads you are using. For a normal slider bar, this should be 5, or if you aren't using a slider bar set this to 0.Peripheral Settings
Slider
settingInput Type
to MPR121 Input
Save Settings
. Note that everything else needs to be configured before you can do this.Input Type
to MPR121 Input
.GH5 Neck Inputs
settingRock Band
mode, the tap bar is automatically mapped to the solo frets.enable
for each of the frets.Crazy Guitar Neck Inputs
settingRock Band
mode, the tap bar is automatically mapped to the solo frets.enable
for each of the frets.1. If you wish to have better latency frets with these necks, you can replace the slider bar controller with an MPR121, which will give you low latency but will still use the same amount of wires.
2. Click on Add Setting, and add a `Slider` setting
3. Set the `Input Type` to `MPR121 Input`
4. Hit `Save Settings`. Note that everything else needs to be configured before you can do this.
5. Set the channels based on your wiring. The configuration will update live, so if you are unsure which via maps to which slider pad, you can just work through the channels and assign things to the correct pads by touching each pad and working out which channel is which.
6. Go to each fret, and set its `Input Type` to `MPR121 Input`.
7. Set the channel based on your wiring. If you are unsure which channel you used, you can just walk through each channel and work out which one was used, as the status of the MPR121 will update live as you press and release frets.
Input Type
to Digital Pin Input (Peripheral)
.Pin Mode
is set to Pull Up
.Find Pin
to detect the pin your fret was hooked up to.USB Host inputs
usbdsecpatch
, you can disable Authentication for Xbox 360
.Remove
button to the right on that input.Save Settings
button should be clickable and you can hit that button to write your config to the guitar. It is now ready.