# Raspberry Pi Pico and LED Arcade Button MIDI Controller

## Overview

https://youtu.be/WMKVC1su4Bw

## DIY MIDI Controller

Build your own CircuitPython powered MIDI controller! This "MIDI fighter"-like controller features 16 arcade buttons with built-in LEDs, an OLED screen and joystick. Play drums, synthesizers or anything MIDI related! All of the electronics are housed in a snap-fit 3D printed case.

![3d_printing_loop-thumb-hq.gif](https://cdn-learn.adafruit.com/assets/assets/000/100/403/medium640thumb/3d_printing_loop-thumb-hq.jpg?1614972587)

## Buttons and LEDs

The Raspberry Pi Pico has plenty of GPIO for connecting 4x4 buttons. The AW9525 GPIO expander / LED driver powers the LEDs and connects to the Raspberry Pi Pico over I2C.

The LEDs light up when the buttons are pressed and stay lit until released. Awesome!

![3d_printing_hero-1.jpg](https://cdn-learn.adafruit.com/assets/assets/000/100/542/medium640/3d_printing_hero-1.jpg?1615314494)

## Edit MIDI on the Fly

This MIDI controller's special sauce is the ability to change and save MIDI notes directly on the device. This allows quick MIDI notes remapping. Perfect for crafting your own kits and setups for performances.

![3d_printing_oled-demo-loop.gif](https://cdn-learn.adafruit.com/assets/assets/000/100/544/medium640thumb/3d_printing_oled-demo-loop.jpg?1615315887)

## Intuitive UI/UX

The OLED screen shows the 16 buttons as little circles with numbers. The numbers are the MIDI notes assigned to each button. Use the joystick to select a button and edit the MIDI note. In edit mode, the button will blink the LED, letting you know it's been activated. While in edit mode, the buttons can be pressed to compare MIDI notes.

![3d_printing_hero-oled-joystick.jpg](https://cdn-learn.adafruit.com/assets/assets/000/100/545/medium640/3d_printing_hero-oled-joystick.jpg?1615316558)

## Kickstand Handle

Lunchbox vibes? Yes! The handle is 3d printed, print-in-place, with no support material. Can you handle it? It also works great as a kickstand to prop up the case.

![3d_printing_hero-3.jpg](https://cdn-learn.adafruit.com/assets/assets/000/100/543/medium640/3d_printing_hero-3.jpg?1615314524)

![](https://cdn-learn.adafruit.com/assets/assets/000/100/553/medium800/3d_printing_hero-2.jpg?1615318590)

## Prerequisite Guides

Take a moment to walk through the following guides:

- [Raspberry Pi Pico RP2040](https://learn.adafruit.com/getting-started-with-raspberry-pi-pico-circuitpython/overview)
- [AW9523 GPIO Learn Guide](https://learn.adafruit.com/adafruit-aw9523-gpio-expander-and-led-driver)
- [1.5" OLED Display Guide](https://learn.adafruit.com/adafruit-grayscale-1-5-128x128-oled-display)

## Parts from Adafruit

List of parts required for this build.

- [Raspberry Pi Pico](https://www.adafruit.com/product/4864)
- [AW9523 GPIO Expander and LED Driver](https://www.adafruit.com/product/4886)
- [1.5" OLED Display](https://www.adafruit.com/product/4741)
- [5-way Navigation Switch](https://www.adafruit.com/product/504)
- [30mm Arcade Button with LED](https://www.adafruit.com/product/3491)

![3d_printing_parts.jpg](https://cdn-learn.adafruit.com/assets/assets/000/099/854/medium640/3d_printing_parts.jpg?1614606289)

Featured
### Raspberry Pi Pico RP2040

[Raspberry Pi Pico RP2040](https://www.adafruit.com/product/4864)
The Raspberry Pi foundation changed single-board computing [when they released the Raspberry Pi computer](https://www.raspberrypi.org/archives/723), now they're ready to do the same for microcontrollers with the release of the brand new **Raspberry Pi Pico**. This...

Out of Stock
[Buy Now](https://www.adafruit.com/product/4864)
[Related Guides to the Product](https://learn.adafruit.com/products/4864/guides)
![Angle shot of Raspberry Pi Pico RP2040](https://cdn-shop.adafruit.com/640x480/4864-00.jpg)

Featured
### Adafruit AW9523 GPIO Expander and LED Driver Breakout

[Adafruit AW9523 GPIO Expander and LED Driver Breakout](https://www.adafruit.com/product/4886)
Expand your project possibilities, with the **Adafruit AW9523 GPIO Expander and LED Driver Breakout** - a cute and powerful I2C expander with a lot of tricks up its sleeve.

GPIO expanders work like this: you have a board with some number of GPIO but not enough for your...

In Stock
[Buy Now](https://www.adafruit.com/product/4886)
[Related Guides to the Product](https://learn.adafruit.com/products/4886/guides)
![Video of a Adafruit AW9523 GPIO Expander and LED Driver Breakout connected to a LED changing colors. ](https://cdn-shop.adafruit.com/product-videos/640x480/4886-05.jpg)

Featured
### Adafruit Grayscale 1.5" 128x128 OLED Graphic Display

[Adafruit Grayscale 1.5" 128x128 OLED Graphic Display](https://www.adafruit.com/product/4741)
This OLED goes out to all the fans who want _more pixels_! Normally our 128x64 OLEDs are the biggest ones we've stocked that can use I2C. This one is a whopping 128x128 pixels and it even has an extra bonus - it can do grayscale pixels! Yep, you get the same crispness of a...

In Stock
[Buy Now](https://www.adafruit.com/product/4741)
[Related Guides to the Product](https://learn.adafruit.com/products/4741/guides)
![Monochrome OLED module wired to QT Py showing falling Adafruit logos](https://cdn-shop.adafruit.com/product-videos/640x480/4741-00.jpg)

Featured
### Arcade Button with LED - 30mm Translucent Clear

[Arcade Button with LED - 30mm Translucent Clear](https://www.adafruit.com/product/3491)
A button is a button, and a switch is a switch, but these translucent arcade buttons are in a class of their own. Particularly because they have&nbsp; **LEDs built right in!** &nbsp;That's right, you'll be button-mashing amidst a wash of beautiful light with these lil'...

In Stock
[Buy Now](https://www.adafruit.com/product/3491)
[Related Guides to the Product](https://learn.adafruit.com/products/3491/guides)
![Video of 30mm translucent clear LED arcade button flashing on and off.](https://cdn-shop.adafruit.com/product-videos/640x480/3491-03.jpg)

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

quantity: 2
[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...>

In 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)

### Thru-hole 5-way Navigation switch

[Thru-hole 5-way Navigation switch](https://www.adafruit.com/product/504)
This navigation switch is an intuitive way to add 5 button's worth of interfacing with a single component. Inside is 5 switches: left, right, up, down and 'select' (pressing down), all with a common ground pin. The package isn't exactly on a 0.1" grid, but we found that...

Out of Stock
[Buy Now](https://www.adafruit.com/product/504)
[Related Guides to the Product](https://learn.adafruit.com/products/504/guides)
![Angled Shot of the Thru-hole 5-way Navigation switch.](https://cdn-shop.adafruit.com/640x480/504-05.jpg)

### Black Rubber Joystick Nubbin Cap for Navigation Joystick

[Black Rubber Joystick Nubbin Cap for Navigation Joystick](https://www.adafruit.com/product/4697)
A new tiny squishy delight! This Black Rubber Joystick Nubbin Cap is the perfect add-on to any of your projects with a 5-way navigation joystick, like our&nbsp;[Adafruit Mini Color TFT with Joystick FeatherWing](https://www.adafruit.com/product/3321)&nbsp;or&nbsp;<a...></a...>

In Stock
[Buy Now](https://www.adafruit.com/product/4697)
[Related Guides to the Product](https://learn.adafruit.com/products/4697/guides)
![Black Rubber Joystick Nubbin Cap for 5-weay Navigation Joystick](https://cdn-shop.adafruit.com/640x480/4697-02.jpg)

### Panel Mount Extension USB Cable - Micro B Male to Micro B Female

[Panel Mount Extension USB Cable - Micro B Male to Micro B Female](https://www.adafruit.com/product/3258)
Check out this handy MicroUSB extension cable, which will make it easy for you to enclose a device that has a B&nbsp;type (micro USB host) port. Great if you need to extend the USB port for your Raspberry Pi, Arduino, Feather or really anything development board.  
  
This Micro-B...

In Stock
[Buy Now](https://www.adafruit.com/product/3258)
[Related Guides to the Product](https://learn.adafruit.com/products/3258/guides)
![12 inch long black, panel mount extension USB Cable - Micro B plug to Micro B socket](https://cdn-shop.adafruit.com/640x480/3258-02.jpg)

### Black Nylon Machine Screw and Stand-off Set – M2.5 Thread

[Black Nylon Machine Screw and Stand-off Set – M2.5 Thread](https://www.adafruit.com/product/3299)
Totaling 380 pieces, this **M2.5 Screw Set** &nbsp;is a must-have for your workstation.&nbsp;You'll have enough screws, nuts, and hex standoffs to fuel your maker tendencies&nbsp;for days on end! M2.5 size screws fit almost all of the Adafruit breakout/dev board mounting holes...

In Stock
[Buy Now](https://www.adafruit.com/product/3299)
[Related Guides to the Product](https://learn.adafruit.com/products/3299/guides)
![Black Nylon Screw and Stand-off Set with M2.5 Threads, kit box](https://cdn-shop.adafruit.com/640x480/3299-00.jpg)

### Silicone Cover Stranded-Core Ribbon Cable - 10 Wire 1 Meter Long

[Silicone Cover Stranded-Core Ribbon Cable - 10 Wire 1 Meter Long](https://www.adafruit.com/product/3890)
For those who are fans of our silicone-covered wires, but are always looking to _up their wiring game_. We now have **Silicone Cover Ribbon cables!** These may look _a lot_ like <a...></a...>

In Stock
[Buy Now](https://www.adafruit.com/product/3890)
[Related Guides to the Product](https://learn.adafruit.com/products/3890/guides)
![10 wire Silicone Cover Stranded-Core Ribbon Cable](https://cdn-shop.adafruit.com/640x480/3890-01.jpg)

### Part: M2 Hardware Kit
quantity: 1
Black Nylon M2 Hardware
[M2 Hardware Kit](https://www.amazon.com/gp/product/B07D78PFQL/)

## Hardware List

Screws, nuts and standoffs used in this build.

**Handle**

- 4x M3 x 10mm long screws

**USB Extension Cable**

- 2x M3 x 10mm long screws
- 2x M3 locknuts

**OLED**

- 4x M2.5 x 12mm long screws
- 4x M2.5 nuts

**5-way navigation PCB**

- 2x M3 x 4mm long screws

**PCB Mount**

- 4x M3 x 12mm long FF standoffs
- 4x M2.5 x 8mm long FF standoffs
- 4x M2 x 6mm long FF standoffs
- 8x M3 x 6mm long screws
- 8x M2.5 x 4mm long screws
- 8x M2 x 4mm long screws

## Author Credits

CAD by [Noe Ruiz](https://www.twitter.com/ecken) and Code by [Liz Clark](https://www.twitter.com/blitzcitydiy).

Inspired by MIDI Fighter by [DJTechTools](https://www.djtechtools.com)

https://www.youtube.com/watch?v=7P3A9_wPk_I

https://youtu.be/bhS6FO-59jY

- [Next Page](https://learn.adafruit.com/raspberry-pi-pico-led-arcade-button-midi-controller-fighter/installing-circuitpython.md)

## Guide Products

### Raspberry Pi Pico RP2040

[Raspberry Pi Pico RP2040](https://www.adafruit.com/product/4864)
The Raspberry Pi foundation changed single-board computing [when they released the Raspberry Pi computer](https://www.raspberrypi.org/archives/723), now they're ready to do the same for microcontrollers with the release of the brand new **Raspberry Pi Pico**. This...

Out of Stock
[Buy Now](https://www.adafruit.com/product/4864)
[Related Guides to the Product](https://learn.adafruit.com/products/4864/guides)
### Adafruit AW9523 GPIO Expander and LED Driver Breakout

[Adafruit AW9523 GPIO Expander and LED Driver Breakout](https://www.adafruit.com/product/4886)
Expand your project possibilities, with the **Adafruit AW9523 GPIO Expander and LED Driver Breakout** - a cute and powerful I2C expander with a lot of tricks up its sleeve.

GPIO expanders work like this: you have a board with some number of GPIO but not enough for your...

In Stock
[Buy Now](https://www.adafruit.com/product/4886)
[Related Guides to the Product](https://learn.adafruit.com/products/4886/guides)
### Adafruit Grayscale 1.5" 128x128 OLED Graphic Display

[Adafruit Grayscale 1.5" 128x128 OLED Graphic Display](https://www.adafruit.com/product/4741)
This OLED goes out to all the fans who want _more pixels_! Normally our 128x64 OLEDs are the biggest ones we've stocked that can use I2C. This one is a whopping 128x128 pixels and it even has an extra bonus - it can do grayscale pixels! Yep, you get the same crispness of a...

In Stock
[Buy Now](https://www.adafruit.com/product/4741)
[Related Guides to the Product](https://learn.adafruit.com/products/4741/guides)
### Arcade Button with LED - 30mm Translucent Clear

[Arcade Button with LED - 30mm Translucent Clear](https://www.adafruit.com/product/3491)
A button is a button, and a switch is a switch, but these translucent arcade buttons are in a class of their own. Particularly because they have&nbsp; **LEDs built right in!** &nbsp;That's right, you'll be button-mashing amidst a wash of beautiful light with these lil'...

In Stock
[Buy Now](https://www.adafruit.com/product/3491)
[Related Guides to the Product](https://learn.adafruit.com/products/3491/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...>

In Stock
[Buy Now](https://www.adafruit.com/product/4210)
[Related Guides to the Product](https://learn.adafruit.com/products/4210/guides)
### Thru-hole 5-way Navigation switch

[Thru-hole 5-way Navigation switch](https://www.adafruit.com/product/504)
This navigation switch is an intuitive way to add 5 button's worth of interfacing with a single component. Inside is 5 switches: left, right, up, down and 'select' (pressing down), all with a common ground pin. The package isn't exactly on a 0.1" grid, but we found that...

Out of Stock
[Buy Now](https://www.adafruit.com/product/504)
[Related Guides to the Product](https://learn.adafruit.com/products/504/guides)
### Black Rubber Joystick Nubbin Cap for Navigation Joystick

[Black Rubber Joystick Nubbin Cap for Navigation Joystick](https://www.adafruit.com/product/4697)
A new tiny squishy delight! This Black Rubber Joystick Nubbin Cap is the perfect add-on to any of your projects with a 5-way navigation joystick, like our&nbsp;[Adafruit Mini Color TFT with Joystick FeatherWing](https://www.adafruit.com/product/3321)&nbsp;or&nbsp;<a...></a...>

In Stock
[Buy Now](https://www.adafruit.com/product/4697)
[Related Guides to the Product](https://learn.adafruit.com/products/4697/guides)
### Panel Mount Extension USB Cable - Micro B Male to Micro B Female

[Panel Mount Extension USB Cable - Micro B Male to Micro B Female](https://www.adafruit.com/product/3258)
Check out this handy MicroUSB extension cable, which will make it easy for you to enclose a device that has a B&nbsp;type (micro USB host) port. Great if you need to extend the USB port for your Raspberry Pi, Arduino, Feather or really anything development board.  
  
This Micro-B...

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

## Related Guides

- [Adafruit Grayscale 1.5" 128x128 OLED Display](https://learn.adafruit.com/adafruit-grayscale-1-5-128x128-oled-display.md)
- [Adafruit AW9523 GPIO Expander and LED Driver](https://learn.adafruit.com/adafruit-aw9523-gpio-expander-and-led-driver.md)
- [Motorized Marble Machine](https://learn.adafruit.com/marble-run.md)
- [Square NeoPixel Display with Black LED Acrylic](https://learn.adafruit.com/sqaure-neopixel-display-with-black-led-acrylic.md)
- [DIY Quiz Show Controller System](https://learn.adafruit.com/quiz-show-controller-keyboard-bluetooth.md)
- [MIDI Solenoid Drum Kit](https://learn.adafruit.com/midi-solenoid-drum-kit.md)
- [CircuitPython MIDI to CV Skull](https://learn.adafruit.com/circuitpython-midi-to-cv-skull.md)
- [Adafruit nOOds Überguide](https://learn.adafruit.com/noods-uberguide.md)
- [MatrixPortal CircuitPython Animated Message Board](https://learn.adafruit.com/matrixportal-circuitpython-animated-message-board.md)
- [Light-Up Reactive Ukulele](https://learn.adafruit.com/light-up-reactive-ukulele.md)
- [CRICKIT WobblyBot](https://learn.adafruit.com/crickit-wobblybot.md)
- [Adafruit Feather RP2040 RFM95](https://learn.adafruit.com/feather-rp2040-rfm95.md)
- [PyBadge Thermal Camera Case](https://learn.adafruit.com/pybadge-thermal-camera-case.md)
- [Adafruit BrainCraft HAT - Easy Machine Learning for Raspberry Pi](https://learn.adafruit.com/adafruit-braincraft-hat-easy-machine-learning-for-raspberry-pi.md)
- [Holiday Tree with Feather RP2040 Scorpio](https://learn.adafruit.com/holiday-tree-with-scorpio.md)
- [Kitty Toe Bean Keypad with Color TFT](https://learn.adafruit.com/kitty-toe-bean-paw-keypad-color-tct.md)
- [RP2040 RunCPM Emulator with USB Keyboard & HDMI screen](https://learn.adafruit.com/rp2040-runcpm-emulator-with-usb-keyboard-hdmi-screen.md)
