# Guitar Hero MIDI Controller

## Overview

https://www.youtube.com/watch?v=DK34fv-4Vvk&feature=youtu.be

You can turn an old Guitar Hero accessory into a USB MIDI controller for your synthesizer! Wii accessories use I2C to send all of their data, so we'll couple the Guitar Hero controller with a STEMMA QT Nunchuck Breakout and an Adafruit QT Py to read all the fret buttons, whammy bar, strum bar, and joystick data.

You'll be able to send MIDI notes, chords, octave changes, whammy bar pitch bends, and joystick CC messages to any software synth or a USB MIDI host-capable synthesizer.

## Parts
### Adafruit QT Py - SAMD21 Dev Board with STEMMA QT

[Adafruit QT Py - SAMD21 Dev Board with STEMMA QT](https://www.adafruit.com/product/4600)
What a cutie pie! Or is it... a QT Py? This diminutive dev board comes with our favorite lil chip, the SAMD21 (as made famous in our GEMMA M0 and Trinket M0 boards).

This time it comes with [our favorite connector - the STEMMA QT](http://adafruit.com/stemma), a chainable I2C...

In Stock
[Buy Now](https://www.adafruit.com/product/4600)
[Related Guides to the Product](https://learn.adafruit.com/products/4600/guides)
![Animation of Adafruit QT Py with onboard NeoPixel in a rainbow swirl.](https://cdn-shop.adafruit.com/product-videos/640x480/4600-07.jpg)

### Adafruit Wii Nunchuck Breakout Adapter

[Adafruit Wii Nunchuck Breakout Adapter](https://www.adafruit.com/product/4836)
Dig out that old Wii controller and use it as a sleek controller for your next robot if you like. The Adafruit Adafruit Wii Nunchuck Breakout Adapter fits snugly into the Wii connector and performs the level shifting and power regulation needed to use the controller with any microcontroller or...

Out of Stock
[Buy Now](https://www.adafruit.com/product/4836)
[Related Guides to the Product](https://learn.adafruit.com/products/4836/guides)
![Hand holding a Wiichuck controller pressing buttons. The controller is connected to the breakout wired to a Feather with OLED showing the streaming controller data](https://cdn-shop.adafruit.com/product-videos/640x480/4836-06.jpg)

### STEMMA QT / Qwiic JST SH 4-pin Cable - 100mm Long

[STEMMA QT / Qwiic JST SH 4-pin Cable - 100mm Long](https://www.adafruit.com/product/4210)
This 4-wire cable is a little over 100mm / 4" long and fitted with JST-SH female 4-pin connectors on both ends. Compared with the chunkier JST-PH these are 1mm pitch instead of 2mm, but still have a nice latching feel, while being easy to insert and remove.

<a...></a...>

Out of Stock
[Buy Now](https://www.adafruit.com/product/4210)
[Related Guides to the Product](https://learn.adafruit.com/products/4210/guides)
![Angled shot of STEMMA QT / Qwiic JST SH 4-pin Cable.](https://cdn-shop.adafruit.com/640x480/4210-00.jpg)

### USB C to USB C Cable - USB 3.1 Gen 4 with E-Mark - 1 meter long

[USB C to USB C Cable - USB 3.1 Gen 4 with E-Mark - 1 meter long](https://www.adafruit.com/product/4199)
As technology changes and adapts, so does Adafruit! Rather than the regular USB A, this cable has&nbsp; **USB C to USB C** &nbsp;plugs!

USB C is the latest industry-standard connector for transmitting data&nbsp;_and_&nbsp;power. Like Lightning and MagSafe cables, USB C...

Out of Stock
[Buy Now](https://www.adafruit.com/product/4199)
[Related Guides to the Product](https://learn.adafruit.com/products/4199/guides)
![USB C to USB C cable. USB 3.1 gen 4 with E-Mark. 1 meter long](https://cdn-shop.adafruit.com/640x480/4199-01.jpg)

### USB A to USB C Adapter

[USB A to USB C Adapter](https://www.adafruit.com/product/4175)
As technology changes and adapts, so does Adafruit, and speaking of _adapting_, this _ **adapter** _&nbsp;has a USB A plug and a USB C socket so your older computer or laptop can catch up to the latest USB Type C.

USB C is the latest industry-standard connector...

In Stock
[Buy Now](https://www.adafruit.com/product/4175)
[Related Guides to the Product](https://learn.adafruit.com/products/4175/guides)
![Angled shot of a shot of USB A to USB C Adapter. ](https://cdn-shop.adafruit.com/640x480/4175-07.jpg)

## Wii Guitar Hero Controller

You have one in your closet. If not, ~$30 on eBay, less at a thrift shop.

![hacks_wiiGibson.jpg](https://cdn-learn.adafruit.com/assets/assets/000/098/512/medium640/hacks_wiiGibson.jpg?1610155567)

## Optional
# Guitar Hero MIDI Controller

## USB MIDI Essentials

 **MIDI** is a venerable protocol (dating back to 1983) that is used to communicate between synthesizers, controllers, sequencers, sample players, computers, mobile devices, drum machines, and other electronic music making devices.

![](https://cdn-learn.adafruit.com/assets/assets/000/098/736/medium800/hacks_Untitled.jpg?1611073762)

## MIDI Messages

A simple and very common use case is to have a controller, such as a piano-style keyboard, send **Note On** and **Note Off** data to a music synthesizer (including software synths on your computer or mobile device).

Press a key and a message is sent telling the synth to play a specific musical note. Release the key and a message is sent to the synthesizer telling it to stop playing that note.

![](https://cdn-learn.adafruit.com/assets/assets/000/098/646/medium800/hacks_projects_midinoteonmessage.jpg?1610739703)

Getting a bit fancier than simple on/off messages, MIDI can also be used to send "continuous controller" **CC** messages, typically the result of turning a knob or pushing a slider on the keyboard controller. These can be used to sweep through the cuttoff frequency of a low pass filter, or modulate a tremolo, and many, many other parameters.

A similar scheme is also used to send pitch bend info -- often represented by a pitch bend wheel on the left side of a MIDI keyboard.

 **USB MIDI** uses the same message protocol as classic MIDI, but does so over a USB host/device transport.

This makes it very simple to plug MIDI devices/controllers into computers and iOS devices, which act as the MIDI host. This is great, because it means you can control software synthesizers using something nicer than a computer keyboard!

## Wii Guitar Hero Controller MIDI

On its own, the Wii Guitar Hero controller sends analog signals via I2C for all of its seven buttons, strum bar buttons, x/y joystick, and whammy bar. We'll use the Wii Nunchuck breakout adapter with the QT Py microcontroller to convert those I2C messages into MIDI notes, CC messages, and pitch bend from the whammy bar.

With the QT Py plugged into your computer or iOS device via the [USB-Lightning adapter](https://www.adafruit.com/product/3940), you'll be able to play any software synth with your Guitar Hero controller!

## Synthesizers

Nearly any software synth (or DAW (digital audio workstation) you find will allow you to use USB MIDI to control the notes, pitch bend, and CC input. Here are some good ones to try:

### **Linux / Windows / mac os &nbsp;**

#### free open source &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;

- [Helm](https://tytel.org/helm/) &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;
- [VCV Rack](https://vcvrack.com/)
- [Pure Data](https://puredata.info/)
- [Vital](https://vital.audio/)
- [Ardour](https://ardour.org/)

### **Chrome Web&nbsp;Browser&nbsp; &nbsp;**

- Viktor NV-1&nbsp;[https://nicroto.github.io/viktor/](https://nicroto.github.io/viktor/) &nbsp; &nbsp;
- Juno-106.js &nbsp;[http://juno-106.js.org/](http://juno-106.js.org/)

### **iOS&nbsp; &nbsp;**

#### free open source &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;

- [AudioKit Synth One](https://audiokitpro.com/synth/) (iPad only) &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;

#### free &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;

- [GarageBand](https://www.apple.com/ios/garageband/)
- [DRC Polyphonic&nbsp;Synth by Imaginado](https://www.imaginando.pt/products/drc) (iPhone and iPad) &nbsp; &nbsp; &nbsp;&nbsp; &nbsp;

# Guitar Hero MIDI Controller

## Hook Up the Controller

![](https://cdn-learn.adafruit.com/assets/assets/000/098/647/medium800/hacks_gh_-5540.jpg?1610747896)

Thanks to the Wii Accessory plug on the controller, we can make all of our connections without disassembling the guitar. The plug hooks up with the Wii Nunchuck breakout adapter very simply!

## Plug Things In to Other Things

Here's all we need to connect:

- Nunchuck adapter to QT Py with a STEMMA QT cable
- Wii controller Accessory Plug to Nunchuck adapter (be sure to follow the "Notch Up" directions
- QT Py to computer with USB cable

![hacks_gh_-5524.jpg](https://cdn-learn.adafruit.com/assets/assets/000/098/648/medium640/hacks_gh_-5524.jpg?1610748084)

![hacks_gh_-5525.jpg](https://cdn-learn.adafruit.com/assets/assets/000/098/650/medium640/hacks_gh_-5525.jpg?1610750098)

![hacks_gh_-5526.jpg](https://cdn-learn.adafruit.com/assets/assets/000/098/651/medium640/hacks_gh_-5526.jpg?1610750121)

![hacks_gh_-5527.jpg](https://cdn-learn.adafruit.com/assets/assets/000/098/652/medium640/hacks_gh_-5527.jpg?1610750129)

![](https://cdn-learn.adafruit.com/assets/assets/000/098/654/medium800/hacks_gh_-5528.jpg?1610750210)

Info: 

If you want to keep it super simple, this is all you need to do. Just push the parts into the empty Wiimote slot and you're done!

![](https://cdn-learn.adafruit.com/assets/assets/000/098/658/medium800/hacks_gh_-5529.jpg?1610750280)

## Fancy Mode

If you want to get a bit fancy with it, you can create a small notch in the access panel on the back of the guitar.

Warning: 

Open the access panel, then mark the door where you want to file out a notch for the USB cable.

Use a round file (or utility knife, small saw, and sandpaper, etc.) to create the notch.

Plug the USB cable into the QT Py and then close the access panel.

You're all set!

![hacks_gh_-5531.jpg](https://cdn-learn.adafruit.com/assets/assets/000/098/661/medium640/hacks_gh_-5531.jpg?1610750343)

![hacks_gh_-5530.jpg](https://cdn-learn.adafruit.com/assets/assets/000/098/662/medium640/hacks_gh_-5530.jpg?1610750351)

![hacks_gh_-5532.jpg](https://cdn-learn.adafruit.com/assets/assets/000/098/663/medium640/hacks_gh_-5532.jpg?1610750424)

![hacks_gh_-5533.jpg](https://cdn-learn.adafruit.com/assets/assets/000/098/664/medium640/hacks_gh_-5533.jpg?1610750432)

![hacks_gh_-5535.jpg](https://cdn-learn.adafruit.com/assets/assets/000/098/665/medium640/hacks_gh_-5535.jpg?1610750443)

![hacks_gh_-5536.jpg](https://cdn-learn.adafruit.com/assets/assets/000/098/666/medium640/hacks_gh_-5536.jpg?1610750453)

![](https://cdn-learn.adafruit.com/assets/assets/000/098/672/medium800/hacks_gh_-5544.jpg?1610750558)

# Guitar Hero MIDI Controller

## Code the Guitar Hero MIDI Controller

![](https://cdn-learn.adafruit.com/assets/assets/000/098/678/medium800/hacks_gh_-5541.jpg?1610753043)

In order to make it simple to get up and running with your Guitar Hero MIDI Controller **with**  **no programming required** , we've created a drag-and-drop firmware you can use.

If you're just getting started with your QT Py, there is lots more info [here in the main Learn Guide!](https://learn.adafruit.com/adafruit-qt-py)

## Download

First, download the firmware file linked in the button below and save it to your computer hard drive somewhere you'll be able to find it, such as your **Downloads** folder.

[Guitar_Hero_MIDI_QTPy.UF2](https://cdn-learn.adafruit.com/assets/assets/000/098/677/original/Guitar_Hero_MIDI_QTPy.UF2?1610753017)
Warning: 

## Install the Firmware

Plug your QT Py into your computer with a good quality, data capable **USB** cable. Life is too short to go through the pain of accidentally using a **power-only** USB cable, so please round up any you own, cut them in half, travel to a distant land, bury them, and dance on their grave.

## Bootloader Mode

Now, we'll put the QT Py into "bootloader" mode. In this mode it will appear as a USB drive on your computer and will be ready to receive a new .uf2 firmware file. Double-click the reset button on the top side of the board, next to the STEMMA QT connector port.

Once you have double-clicked the reset button, the indicator LED will turn green. You'll notice a new USB drive appear on your computer named **QTPY\_BOOT** , this is the bootloader USB storage built right into the QT Py. It is now ready to receive the firmware file.

## Drag and Drop

Now, drag the **Guitar\_Hero\_MIDI\_QTPy.UF2** &nbsp;file onto the **QTPY\_BOOT** drive. The file will copy over in a few seconds and then the QT Py will automatically restart itself (you'll see the **QTPY\_BOOT** drive disappear, don't worry, this is normal!). The status LED will turn off, indicating regular operation mode.

![](https://cdn-learn.adafruit.com/assets/assets/000/098/679/medium800/hacks_drag.jpg?1610753857)

You've updated the firmware and you're ready to play!

Info: 

![](https://cdn-learn.adafruit.com/assets/assets/000/098/680/medium800/hacks_mon.jpg?1610753980)

## Test MIDI Output

You can test to see that your QT Py is outputting MIDI signals properly by using a MIDI utility. These will report all activity coming from any MIDI controller plugged into your system. Here are some to try:

- [MIDI Monitor](https://www.snoize.com/MIDIMonitor/) for mac os
- [MIDI-OX](http://www.midiox.com/) for Windows
- [MIDI Wrench](https://itunes.apple.com/us/app/midi-wrench/id589243566) for iOS
- [MIDI Scope](https://play.google.com/store/apps/details?id=com.mobileer.example.midiscope) for Android
- [KMidimon](http://kmidimon.sourceforge.net/) for Linux
- [Web MIDI Monitor](https://www.midimonitor.com/#) for Chrome browser

## Play!

Here's how the controls are mapped:

![](https://cdn-learn.adafruit.com/assets/assets/000/098/685/medium800/hacks_midimap.jpg?1610755330)

https://www.youtube.com/watch?v=DK34fv-4Vvk&feature=youtu.be

## Customize It

If you'd like to modify or customize your code, you can download the Arduino code linked below and use it along with the Arduino IDE. Then, you'll flash your QT Py with the updated firmware using the Arduino IDE Upload button.

https://github.com/adafruit/Adafruit_Learning_System_Guides/blob/main/Guitar_Hero_MIDI/Guitar_Hero_MIDI.ino


## Featured Products

### Adafruit QT Py - SAMD21 Dev Board with STEMMA QT

[Adafruit QT Py - SAMD21 Dev Board with STEMMA QT](https://www.adafruit.com/product/4600)
What a cutie pie! Or is it... a QT Py? This diminutive dev board comes with our favorite lil chip, the SAMD21 (as made famous in our GEMMA M0 and Trinket M0 boards).

This time it comes with [our favorite connector - the STEMMA QT](http://adafruit.com/stemma), a chainable I2C...

In Stock
[Buy Now](https://www.adafruit.com/product/4600)
[Related Guides to the Product](https://learn.adafruit.com/products/4600/guides)
### Adafruit Wii Nunchuck Breakout Adapter

[Adafruit Wii Nunchuck Breakout Adapter](https://www.adafruit.com/product/4836)
Dig out that old Wii controller and use it as a sleek controller for your next robot if you like. The Adafruit Adafruit Wii Nunchuck Breakout Adapter fits snugly into the Wii connector and performs the level shifting and power regulation needed to use the controller with any microcontroller or...

Out of Stock
[Buy Now](https://www.adafruit.com/product/4836)
[Related Guides to the Product](https://learn.adafruit.com/products/4836/guides)
### iOS Lightning to USB OTG Cable

[iOS Lightning to USB OTG Cable](https://www.adafruit.com/product/3940)
Your iOS phone or tablet may not have a USB port on the bottom but that doesn't mean you can't use it to connect USB devices. Secretly known as a 'Camera Connector' or 'MIDI Connector' cable, this doohicky plugs into the bottom of your iOs device and gives you a USB A...

In Stock
[Buy Now](https://www.adafruit.com/product/3940)
[Related Guides to the Product](https://learn.adafruit.com/products/3940/guides)
### STEMMA QT / Qwiic JST SH 4-pin Cable - 100mm Long

[STEMMA QT / Qwiic JST SH 4-pin Cable - 100mm Long](https://www.adafruit.com/product/4210)
This 4-wire cable is a little over 100mm / 4" long and fitted with JST-SH female 4-pin connectors on both ends. Compared with the chunkier JST-PH these are 1mm pitch instead of 2mm, but still have a nice latching feel, while being easy to insert and remove.

<a...></a...>

Out of Stock
[Buy Now](https://www.adafruit.com/product/4210)
[Related Guides to the Product](https://learn.adafruit.com/products/4210/guides)
### USB C to USB C Cable - USB 3.1 Gen 4 with E-Mark - 1 meter long

[USB C to USB C Cable - USB 3.1 Gen 4 with E-Mark - 1 meter long](https://www.adafruit.com/product/4199)
As technology changes and adapts, so does Adafruit! Rather than the regular USB A, this cable has&nbsp; **USB C to USB C** &nbsp;plugs!

USB C is the latest industry-standard connector for transmitting data&nbsp;_and_&nbsp;power. Like Lightning and MagSafe cables, USB C...

Out of Stock
[Buy Now](https://www.adafruit.com/product/4199)
[Related Guides to the Product](https://learn.adafruit.com/products/4199/guides)
### USB A to USB C Adapter

[USB A to USB C Adapter](https://www.adafruit.com/product/4175)
As technology changes and adapts, so does Adafruit, and speaking of _adapting_, this _ **adapter** _&nbsp;has a USB A plug and a USB C socket so your older computer or laptop can catch up to the latest USB Type C.

USB C is the latest industry-standard connector...

In Stock
[Buy Now](https://www.adafruit.com/product/4175)
[Related Guides to the Product](https://learn.adafruit.com/products/4175/guides)

## Related Guides

- [Adafruit QT Py SAMD21](https://learn.adafruit.com/adafruit-qt-py.md)
- [Adafruit Wii Nunchuck Breakout Adapter](https://learn.adafruit.com/adafruit-wii-nunchuck-breakout-adapter.md)
- [Feather TFT STEMMA Case](https://learn.adafruit.com/feather-tft-stemma-case.md)
- [Native MP3 decoding on Arduino](https://learn.adafruit.com/native-mp3-decoding-on-arduino.md)
- [Android Smart Home Mirror](https://learn.adafruit.com/android-smart-home-mirror.md)
- [Adafruit APDS9960 breakout](https://learn.adafruit.com/adafruit-apds9960-breakout.md)
- [Bounce - an accelerometer game in Arduino for PyGamer and PyBadge](https://learn.adafruit.com/bounce-an-accelerometer-game-in-arduino-for-pygamer-and-pybadge.md)
- [Authoring Playground Books with Bluefruit for iOS ](https://learn.adafruit.com/create-a-swift-playgroundbook-with-bluetooth-le.md)
- [Adafruit TCS3430 / TCS34303 Ambient Tri-Stimulus Color Sensor](https://learn.adafruit.com/adafruit-tcs3430-tcs34303-ambient-tri-stimulus-color-sensor.md)
- [Contribute to the Adafruit Learning System with Git and GitHub](https://learn.adafruit.com/contribute-to-the-adafruit-learning-system-with-git-and-github.md)
- [Adafruit STEMMA Analog SPDT Switch](https://learn.adafruit.com/adafruit-stemma-analog-spdt-switch.md)
- [Adafruit Swirly Aluminum Mounting Grid for 0.1" Spaced PCBs](https://learn.adafruit.com/swirly-grid.md)
- [Setting up an Open Speech Recording Website](https://learn.adafruit.com/setting-up-an-open-speech-recording-website.md)
- [Overwatch Prop Gun: Lucio's Blaster Pt. 1](https://learn.adafruit.com/overwatch-lucio-gun-pt1.md)
- [Adafruit SEN54 or SEN55 Adapter Breakout](https://learn.adafruit.com/adafruit-sen54-or-sen55-adapter-breakout.md)
- [No-Code Offline Data Logger with WipperSnapper](https://learn.adafruit.com/no-code-offline-data-logging-with-wippersnapper.md)
- [ScoutMakes DRV5032 Hall Sensor](https://learn.adafruit.com/scoutmakes-drv5032-hall-sensor.md)
