# Guitar Synth with CircuitPython SynthIO

## Overview

![](https://cdn-learn.adafruit.com/assets/assets/000/124/630/medium800/3d_printing_hero-upright.jpg?1695152958)

https://youtu.be/g9egsD9QTgM

Build a musical Synth Guitar with Adafruit's RP2040 PropMaker Feather and CircuitPython!

This instrument uses CircuitPython SynthIO to generate musical notes that can be modulated using rotary encoders and the PropMaker Feather's on-board accelerometer.

Use NeoKey 'Cherry MX'-compatible key switches and a guitar-hero-like strum-bar to play notes.

The RP2040 PropMaker Feather features high-quality I2S audio output. You can switch between the on-board speaker or TRRS audio jack.

The NeoPixel change colors depending on the NeoKey that is pressed.&nbsp;

Info: 

https://www.youtube.com/watch?v=2sDd0aJ0k80

## Prerequisite Guides

For more information on the RP2040 PropMaker Feather and using the SynthIO module in CircuitPython, check out these guides.

- [RP2040 PropMaker Documentation](https://learn.adafruit.com/adafruit-rp2040-prop-maker-feather)
- [Audio Synthesis with SynthIO](https://learn.adafruit.com/audio-synthesis-with-circuitpython-synthio/)

## Parts
Featured
### Adafruit RP2040 Prop-Maker Feather with I2S Audio Amplifier

[Adafruit RP2040 Prop-Maker Feather with I2S Audio Amplifier](https://www.adafruit.com/product/5768)
The Adafruit Feather series gives you lots of options for a small, portable, rechargeable microcontroller board. By picking a feather and stacking on a FeatherWing you can create advanced projects quickly. One popular combo is our [Feather M4](https://www.adafruit.com/product/3857)...

In Stock
[Buy Now](https://www.adafruit.com/product/5768)
[Related Guides to the Product](https://learn.adafruit.com/products/5768/guides)
![Video of a white hand pressing a button to briefly turn an LED strip into white lights. Also wired up to the microcontroller are a servo motor and a speaker.](https://cdn-shop.adafruit.com/product-videos/640x480/5768-09.jpg)

Featured
### Mono Enclosed Speaker with Plain Wires - 3W 4 Ohm

[Mono Enclosed Speaker with Plain Wires - 3W 4 Ohm](https://www.adafruit.com/product/4445)
Listen up! This single&nbsp; 2.8" x 1.2" speaker&nbsp;is&nbsp;the perfect addition to any audio project where you need 4 ohm impedance and 3W or less of power. We particularly like these speakers as they are small and enclosed for good audio volume and quality. This speaker _does..._

Out of Stock
[Buy Now](https://www.adafruit.com/product/4445)
[Related Guides to the Product](https://learn.adafruit.com/products/4445/guides)
![Enclosed Speaker with wires](https://cdn-shop.adafruit.com/640x480/4445-01.jpg)

Featured
### NeoPixel Stick - 8 x 5050 RGB LED with Integrated Drivers

[NeoPixel Stick - 8 x 5050 RGB LED with Integrated Drivers](https://www.adafruit.com/product/1426)
Make your own little LED strip arrangement with this stick of NeoPixel LEDs. We crammed 8 of the tiny 5050 (5mm x 5mm) smart RGB LEDs onto a PCB with mounting holes and a chainable design. Use only one microcontroller pin to control as many as you can chain together! Each LED is addressable as...

In Stock
[Buy Now](https://www.adafruit.com/product/1426)
[Related Guides to the Product](https://learn.adafruit.com/products/1426/guides)
![NeoPixel Stick with 8 x 5050 RGB LED ](https://cdn-shop.adafruit.com/640x480/1426-05.jpg)

Featured
### Adafruit TRRS Jack Breakout Board

[Adafruit TRRS Jack Breakout Board](https://www.adafruit.com/product/5764)
Tip-Ring-Ring-Sleeve style audio cables are often used for situations where you want stereo audio and then an extra contact for a microphone input. [For example, headsets for cell phones](https://www.adafruit.com/product/3959). Also called TRRS jacks for short, they're also...

In Stock
[Buy Now](https://www.adafruit.com/product/5764)
[Related Guides to the Product](https://learn.adafruit.com/products/5764/guides)
![angled shot of TRRS jack breakout board.](https://cdn-shop.adafruit.com/640x480/5764-00.jpg)

### NeoKey 1x4 QT I2C - Four Mechanical Key Switches with NeoPixels

quantity: 2
[NeoKey 1x4 QT I2C - Four Mechanical Key Switches with NeoPixels](https://www.adafruit.com/product/4980)
The only thing better than a nice mechanical key is, perhaps, FOUR mechanical keys&nbsp;that also can glow any color of the rainbow - and that's what the&nbsp; **Adafruit NeoKey 1x4 QT I2C Breakout** &nbsp;will let you do! This longgg 3" x 0.8" PCB fits...

Out of Stock
[Buy Now](https://www.adafruit.com/product/4980)
[Related Guides to the Product](https://learn.adafruit.com/products/4980/guides)
![Top view video of a fully assembled NeoKey 1x4 QT I2C with switches and smoke gray keycaps powered by a QT Py on a breadboard. A hand reaches down to press the keys, which emit rainbow colors. ](https://cdn-shop.adafruit.com/product-videos/640x480/4980-05.jpg)

### Adafruit I2C Stemma QT Rotary Encoder Breakout with NeoPixel

quantity: 3
[Adafruit I2C Stemma QT Rotary Encoder Breakout with NeoPixel](https://www.adafruit.com/product/4991)
Rotary encoders are soooo much fun! Twist em this way, then twist them that way. Unlike potentiometers, they go all the way around and often have little detents for tactile feedback. But, if you've ever tried to add encoders to your project you know that they're a real challenge to...

In Stock
[Buy Now](https://www.adafruit.com/product/4991)
[Related Guides to the Product](https://learn.adafruit.com/products/4991/guides)
![Top view video of a hand turning the rotary encoder knobs on three PCBs. The NeoPixel LEDs on each PCB change color. The OLED display changes its readout data with each twisty-turn.](https://cdn-shop.adafruit.com/product-videos/640x480/4991-08.jpg)

### Mini Panel Mount SPDT Toggle Switch

[Mini Panel Mount SPDT Toggle Switch](https://www.adafruit.com/product/3221)
This or that, one or the other, perhaps or perhaps not! So hard to make decisions these days without feeling like you're just going back and forth constantly. Deciding whether or not to use this mini toggle switch? That's the easiest decision you'll make all day!

This...

Out of Stock
[Buy Now](https://www.adafruit.com/product/3221)
[Related Guides to the Product](https://learn.adafruit.com/products/3221/guides)
![Angled shot of blue, mini, SPDT toggle switch.](https://cdn-shop.adafruit.com/640x480/3221-01.jpg)

### Mini Panel Mount DPDT Toggle Switch

[Mini Panel Mount DPDT Toggle Switch](https://www.adafruit.com/product/3220)
This or that, one or the other, perhaps or perhaps not! So hard to make decisions these days without feeling like you're just going back and forth constantly. Deciding whether or not to use this mini toggle switch? That's the easiest decision you'll make all day!

This...

In Stock
[Buy Now](https://www.adafruit.com/product/3220)
[Related Guides to the Product](https://learn.adafruit.com/products/3220/guides)
![Angled shot of blue, mini, SPDT toggle switch.](https://cdn-shop.adafruit.com/640x480/3220-01.jpg)

### Micro Switch w/Lever - 2 Terminal

quantity: 2
[Micro Switch w/Lever - 2 Terminal](https://www.adafruit.com/product/818)
Micro-switches are often found in arcade buttons and joysticks but they're also really handy in any kind of mechatronics project or when you need a basic sensor. They are always 'tactile' (clicky feeling), and 'momentary' (the switch closes when pressed, then snaps open...

In Stock
[Buy Now](https://www.adafruit.com/product/818)
[Related Guides to the Product](https://learn.adafruit.com/products/818/guides)
![2-Terminal Micro Switch with lever](https://cdn-shop.adafruit.com/640x480/818-06.jpg)

### Rugged Metal On/Off Switch with Blue LED Ring

[Rugged Metal On/Off Switch with Blue LED Ring](https://www.adafruit.com/product/915)
These chrome-plated metal buttons are rugged and look real good while doing it! Simply drill a 16mm hole into any material up to 1/2" thick and you can fit these in place, there's even a rubber gasket to keep water out of the enclosure. On the front of the button is a flat metal...

Out of Stock
[Buy Now](https://www.adafruit.com/product/915)
[Related Guides to the Product](https://learn.adafruit.com/products/915/guides)
![Angled shot of a Rugged Metal On/Off Switch with Blue LED Ring.](https://cdn-shop.adafruit.com/640x480/915-00.jpg)

### 3 x AA Battery Holder with 2.1mm Plug

[3 x AA Battery Holder with 2.1mm Plug](https://www.adafruit.com/product/3842)
Here's another addition to our growing family of&nbsp;[AA battery holders](https://www.adafruit.com/category/563).&nbsp;A&nbsp;holder for three (3) AA batteries! It's got&nbsp;an 8" long power cable with a 2.1mm DC jack at the end, and, oh yes, it's in classy...

In Stock
[Buy Now](https://www.adafruit.com/product/3842)
[Related Guides to the Product](https://learn.adafruit.com/products/3842/guides)
![Angled shot of 3 x AA battery holder with 2.1mm plug. There are three AA batteries in the holder.](https://cdn-shop.adafruit.com/640x480/3842-01.jpg)

### Alkaline AA batteries (LR6) - 3 pack

[Alkaline AA batteries (LR6) - 3 pack](https://www.adafruit.com/product/3521)
Battery power for your portable project! These batteries are good quality at a good price, and work fantastic with any of the kits or projects in the shop that use AAs. This is a pack of **3 AA batteries**.  
  
These batteries are Alkaline (MnO2) chemistry, with a voltage...

In Stock
[Buy Now](https://www.adafruit.com/product/3521)
[Related Guides to the Product](https://learn.adafruit.com/products/3521/guides)
![Angled shot of 3 AA batteries.](https://cdn-shop.adafruit.com/640x480/3521-00.jpg)

## Cables and Such
### STEMMA QT / Qwiic JST SH 4-Pin Cable - 400mm long

[STEMMA QT / Qwiic JST SH 4-Pin Cable - 400mm long](https://www.adafruit.com/product/5385)
This 4-wire cable is a little over 400mm / 15.7" 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/5385)
[Related Guides to the Product](https://learn.adafruit.com/products/5385/guides)
![Angled shot of 400mm long STEMMA QT cable.](https://cdn-shop.adafruit.com/640x480/5385-01.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...>

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)

### STEMMA QT / Qwiic JST SH 4-Pin Cable - 50mm Long

quantity: 4
[STEMMA QT / Qwiic JST SH 4-Pin Cable - 50mm Long](https://www.adafruit.com/product/4399)
This 4-wire cable is&nbsp;50mm / 1.9" 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/4399)
[Related Guides to the Product](https://learn.adafruit.com/products/4399/guides)
![Angled of of JST SH 4-Pin Cable.](https://cdn-shop.adafruit.com/640x480/4399-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)

### 1.25mm Pitch 2-pin Cable Matching Pair - 40cm long

[1.25mm Pitch 2-pin Cable Matching Pair - 40cm long](https://www.adafruit.com/product/4720)
When 0.1" is too big, and JST PH's too chunky, these ultra-slim 1.25mm connectors are a reliable alternative. These are only 1.25mm pitch, but have a nice clicky connection.

These cables are&nbsp;nice and long, 40cm in fact. They've&nbsp;got both small form factor and are a...

In Stock
[Buy Now](https://www.adafruit.com/product/4720)
[Related Guides to the Product](https://learn.adafruit.com/products/4720/guides)
![1.25mm Pitch 2-pin Cable Matching Pair](https://cdn-shop.adafruit.com/640x480/4720-04.jpg)

### JST PH 2-Pin Cable – Male Header 200mm

[JST PH 2-Pin Cable – Male Header 200mm](https://www.adafruit.com/product/3814)
For a really long time we assumed that the JST PH didn't have a free-hanging male header version. But then we found this **JST-PH 2-pin Male Cable,** and we were like,&nbsp;_this is perfect!_ It's not a genuine JST connector, but it's 100%...

Out of Stock
[Buy Now](https://www.adafruit.com/product/3814)
[Related Guides to the Product](https://learn.adafruit.com/products/3814/guides)
![Top view shot of JST PH 2-Pin Cable - Male Header - 200mm.](https://cdn-shop.adafruit.com/640x480/3814-02.jpg)

### JST PH 2-Pin Cable - Female Connector 100mm

quantity: 2
[JST PH 2-Pin Cable - Female Connector 100mm](https://www.adafruit.com/product/261)
Red and black tinned wires with a 2-pin JST PH connector on the end. 4" / 100mm long. Matches up nicely with our Lipoly chargers!

[We have the socket 'mating' version of this cable](https://www.adafruit.com/product/3814) over here, <a...></a...>

In Stock
[Buy Now](https://www.adafruit.com/product/261)
[Related Guides to the Product](https://learn.adafruit.com/products/261/guides)
![Top view shot of a red and black JST PH 2-Pin Cable to Female Connector - 100mm.](https://cdn-shop.adafruit.com/640x480/261-01.jpg)

### 1.25mm Pitch 3-pin Cable Matching Pair - 40cm long

[1.25mm Pitch 3-pin Cable Matching Pair - 40cm long](https://www.adafruit.com/product/4721)
When 0.1" is too big, and JST PH's too chunky, these ultra-slim 1.25mm connectors are a reliable alternative. These are only 1.25mm pitch, but have a nice clicky connection.

These cables are&nbsp;nice and long, 40cm in fact. They've&nbsp;got both small form factor and are a...

In Stock
[Buy Now](https://www.adafruit.com/product/4721)
[Related Guides to the Product](https://learn.adafruit.com/products/4721/guides)
![1.25mm Pitch 3-pin Cable Matching Pair](https://cdn-shop.adafruit.com/640x480/4721-02.jpg)

### Clear Adhesive Squares - 6 pack

[Clear Adhesive Squares - 6 pack](https://www.adafruit.com/product/4813)
 **UGlu Dashes** &nbsp;are perfect for a variety of small projects. These adhesive squares provide a stronger bond to most surfaces and are cleaner and easier to remove&nbsp;without the wait, mess, or hassle.

Adheres to a wide variety of surfaces, including, but not limited...

In Stock
[Buy Now](https://www.adafruit.com/product/4813)
[Related Guides to the Product](https://learn.adafruit.com/products/4813/guides)
![ 6 pack of Clear Adhesive Squares](https://cdn-shop.adafruit.com/640x480/4813-01.jpg)

## Hardware

- 4x M3 x 16mm button head screws
- 30x M3 x 10mm button head screws
- 2x M3 x 6mm button head screws
- 2x M2.5 x 6mm button head screws
- 8x M2.5 x 8mm button head screws
- 4x M2 x 8mm button head screws
- 30x M3 hex nuts

# Guitar Synth with CircuitPython SynthIO

## Circuit Diagram

The diagram below provides a general visual reference for wiring of the components once you get to the **Assembly** page. This diagram was created using the software package [Fritzing](http://fritzing.org/download/).

## Adafruit Library for Fritzing

Adafruit uses the Adafruit's Fritzing parts library to create circuit diagrams for projects. You can download the library or just grab individual parts. Get the library and parts from [GitHub - Adafruit Fritzing Parts](https://github.com/adafruit/Fritzing-Library/tree/master/parts).

![](https://cdn-learn.adafruit.com/assets/assets/000/124/631/medium800/3d_printing_circuit-diagram.jpg?1695155100)

## Wired Connections

The RP2040 PropMaker Feather is powered by a 3x AA battery pack.

- The NeoPixel stick is connected to pins on the screw block terminal.
- The speaker is connected to the DPDT toggle switch.
- The TRRS breakout is connected to the DPDT toggle switch.
- The SPST toggle is connected to D12 on Feather
- The strum switches are connected to the screw block terminal.
- The on/off switch is connected to EN pin on Feather.
- The rotary encoders and neokeys are chained together with stemma QT cables.

# Guitar Synth with CircuitPython SynthIO

## CAD Files

## 3D Printed Parts

STL files for 3D printing are oriented to print "as-is" on FDM style machines. Parts are designed to 3D print without any support material using PLA filament. Original design source may be downloaded using the links below.

![3d_printing_3D-Parts.jpg](https://cdn-learn.adafruit.com/assets/assets/000/124/290/medium640/3d_printing_3D-Parts.jpg?1694465622)

[Download STLs.zip](https://cdn-learn.adafruit.com/assets/assets/000/124/627/original/STLs.zip?1695152114)
[Download CAD source](https://cdn-learn.adafruit.com/assets/assets/000/124/629/original/CAD_Source.zip?1695152236)
## 3D Printed Parts List

- Battery Cover.stl
- Bottom Body.stl
- Top Body.stl
- Head Top.stl
- Head Bottom.stl
- Neck Cover.stl
- Neck Case.stl
- 2x Strum-Hinge-Pin.stl
- 2x Strum-Hinge.stl
- Strum-Switch-Mount-B.stl
- Strum-Switch-Mount-A.stl
- Strum-Plate.stl
- Strum-Pick.stl
- Feather Mount.stl
- Pixel Mount.stl
- Button Washer.stl
- Audio Overlay.stl
- Strum Overlay.stl
- Body Overlay.stl

## Build Volume

The parts require a 3D printer with a minimum build volume.

- 228mm (X) x 184mm (Y) x 21mm (Z)

![3d_printing_cura-slice.jpg](https://cdn-learn.adafruit.com/assets/assets/000/124/281/medium640/3d_printing_cura-slice.jpg?1694462109)

## CAD Assembly

The strum mechanism is secured to the bottom half of the guitar. The on/off button, rotary encoders and toggle switches are panel mounted to the top half of the guitar. The neck is secured to the top half of the guitar. The head stock is secured to the neck. The neck and head stock covers snap fit. The speaker is secured to the head stock cover. The key switches are press fitted into the neck cover.&nbsp;

![3d_printing_CAD.gif](https://cdn-learn.adafruit.com/assets/assets/000/124/626/medium640thumb/3d_printing_CAD.jpg?1695151426)

# Guitar Synth with CircuitPython SynthIO

## CircuitPython

[CircuitPython](https://github.com/adafruit/circuitpython) is a derivative of [MicroPython](https://micropython.org) designed to simplify experimentation and education on low-cost microcontrollers. It makes it easier than ever to get prototyping by requiring no upfront desktop software downloads. Simply copy and edit files on the **CIRCUITPY** drive to iterate.

## CircuitPython Quickstart

Follow this step-by-step to quickly get CircuitPython running on your board.

[Download the latest version of CircuitPython for this board via circuitpython.org](https://circuitpython.org/board/adafruit_feather_rp2040_prop_maker/)
 **Click the link above to download the latest CircuitPython UF2 file.**

Save it wherever is convenient for you.

![install_circuitpython_on_rp2040_RP2040_UF2_downloaded.jpg](https://cdn-learn.adafruit.com/assets/assets/000/101/655/medium640/install_circuitpython_on_rp2040_RP2040_UF2_downloaded.jpg?1618943202)

![](https://cdn-learn.adafruit.com/assets/assets/000/121/865/medium800/adafruit_products_boot_reset.jpg?1686710555)

To enter the bootloader, hold down the **BOOT/**** BOOTSEL button**(highlighted in red above), and while continuing to hold it (don't let go!), press and release the**reset button**(highlighted in red or blue above).&nbsp;**Continue to hold the BOOT/BOOTSEL button until the RPI-RP2 drive appears!**

If the drive does not appear, release all the buttons, and then repeat the process above.

You can also start with your board unplugged from USB, press and hold the BOOTSEL button (highlighted in red above), continue to hold it while plugging it into USB, and wait for the drive to appear before releasing the button.

A lot of people end up using charge-only USB cables and it is very frustrating! **Make sure you have a USB cable you know is good for data sync.**

You will see a new disk drive appear called **RPI-RP2**.

&nbsp;

Drag the **adafruit\_circuitpython\_etc.uf2** file to **RPI-RP2.**

![install_circuitpython_on_rp2040_RP2040_bootloader_drive.jpg](https://cdn-learn.adafruit.com/assets/assets/000/101/656/medium640/install_circuitpython_on_rp2040_RP2040_bootloader_drive.jpg?1618943666)

![install_circuitpython_on_rp2040_RP2040_drag_UF2.jpg](https://cdn-learn.adafruit.com/assets/assets/000/101/657/medium640/install_circuitpython_on_rp2040_RP2040_drag_UF2.jpg?1618943674)

The **RPI-RP2** drive will disappear and a new disk drive called **CIRCUITPY** will appear.

That's it, you're done! :)

![install_circuitpython_on_rp2040_RP2040_CIRCUITPY.jpg](https://cdn-learn.adafruit.com/assets/assets/000/101/658/medium640/install_circuitpython_on_rp2040_RP2040_CIRCUITPY.jpg?1618943864)

## Safe Mode

You want to edit your **code.py** or modify the files on your **CIRCUITPY** drive, but find that you can't. Perhaps your board has gotten into a state where **CIRCUITPY** is read-only. You may have turned off the **CIRCUITPY** drive altogether. Whatever the reason, safe mode can help.

Safe mode in CircuitPython does not run any user code on startup, and disables auto-reload. This means a few things. First, safe mode _bypasses any code in_ **boot.py** (where you can set **CIRCUITPY** read-only or turn it off completely). Second, _it does not run the code in_ **code.py**. And finally, _it does not automatically soft-reload when data is written to the_ **CIRCUITPY** _drive_.

Therefore, whatever you may have done to put your board in a non-interactive state, safe mode gives you the opportunity to correct it without losing all of the data on the **CIRCUITPY** drive.

### Entering Safe Mode
To enter safe mode when using CircuitPython, plug in your board or hit reset (highlighted in red above). Immediately after the board starts up or resets, it waits 1000ms. On some boards, the onboard status LED (highlighted in green above) will blink yellow during that time. If you press reset during that 1000ms, the board will start up in safe mode. It can be difficult to react to the yellow LED, so you may want to think of it simply as a slow double click of the reset button. (Remember, a fast double click of reset enters the bootloader.)

### In Safe Mode

If you successfully enter safe mode on CircuitPython, the LED will intermittently blink yellow three times.

If you connect to the serial console, you'll find the following message.

```terminal
Auto-reload is off.
Running in safe mode! Not running saved code.

CircuitPython is in safe mode because you pressed the reset button during boot. Press again to exit safe mode.

Press any key to enter the REPL. Use CTRL-D to reload.
```

You can now edit the contents of the **CIRCUITPY** drive. Remember, _your code will not run until you press the reset button, or unplug and plug in your board, to get out of safe mode._

## Flash Resetting UF2

If your board ever gets into a really _weird_ state and CIRCUITPY doesn't show up as a disk drive after installing CircuitPython, try loading this 'nuke' UF2 to RPI-RP2. which will do a 'deep clean' on your Flash Memory. **You will lose all the files on the board** , but at least you'll be able to revive it! After loading this UF2, follow the steps above to re-install CircuitPython.

[Download flash erasing "nuke" UF2](https://cdn-learn.adafruit.com/assets/assets/000/145/511/original/nuke_universal.uf2?1786537992)
# Guitar Synth with CircuitPython SynthIO

## Code the Guitar

Once you've finished setting up your RP2040 Prop-Maker Feather with CircuitPython, you can access the code and necessary libraries by downloading the Project Bundle.

To do this, click on the **Download Project Bundle** button in the window below. It will download to your computer as a zipped folder.

https://github.com/adafruit/Adafruit_Learning_System_Guides/blob/main/Synth_Guitar/code.py

## Upload the Code and Libraries to the RP2040 Prop-Maker Feather

After downloading the Project Bundle, plug your RP2040 Prop-Maker Feather into the computer's USB port with a known good USB data+power cable. You should see a new flash drive appear in the computer's File Explorer or Finder (depending on your operating system) called **CIRCUITPY**. Unzip the folder and copy the following items to the RP2040 Prop-Maker Feather's **CIRCUITPY** drive.

- **lib** folder
- **code.py**

Your RP2040 Prop-Maker Feather **CIRCUITPY** drive should look like this after copying the **lib** folder and the **code.py** file.

![CIRCUITPY](https://adafruit.github.io/Adafruit_Learning_System_Guides/Synth_Guitar.png )

## How the CircuitPython Code Works

The code begins by instantiating the onboard accelerometer, three seesaw rotary encoders and both 1x4 NeoKeys over I2C. The rotary encoders are using their interrupt pins.

```python
i2c = busio.I2C(board.SCL, board.SDA, frequency=800000)

int1 = digitalio.DigitalInOut(board.ACCELEROMETER_INTERRUPT)
lis3dh = adafruit_lis3dh.LIS3DH_I2C(i2c, int1=int1)
lis3dh.range = adafruit_lis3dh.RANGE_2_G

ss_enc0 = Seesaw(i2c, addr=0x36)
ss_enc0.pin_mode(24, ss_enc0.INPUT_PULLUP)
button0 = DigitalIO(ss_enc0, 24)
button0_state = False
enc0 = IncrementalEncoder(ss_enc0)
ss_enc0.set_GPIO_interrupts(1 << 24, True)
ss_enc0.enable_encoder_interrupt(encoder=0)

ss_enc1 = Seesaw(i2c, addr=0x37)
ss_enc1.pin_mode(24, ss_enc1.INPUT_PULLUP)
button1 = DigitalIO(ss_enc1, 24)
button1_state = False
enc1 = IncrementalEncoder(ss_enc1)
ss_enc1.set_GPIO_interrupts(1 << 24, True)
ss_enc1.enable_encoder_interrupt(encoder=0)

ss_enc2 = Seesaw(i2c, addr=0x38)
ss_enc2.pin_mode(24, ss_enc2.INPUT_PULLUP)
button2 = DigitalIO(ss_enc2, 24)
button2_state = False
enc2 = IncrementalEncoder(ss_enc2)
ss_enc2.set_GPIO_interrupts(1 << 24, True)
ss_enc2.enable_encoder_interrupt(encoder=0)

neokey0 = Seesaw(i2c, addr=0x30)
neokey1 = Seesaw(i2c, addr=0x31)
```

## Keys and Pixels

The individual keys and NeoPixels on the NeoKey breakouts are created.

```python
keys = []
for k in range(4, 8):
    key0 = DigitalIO(neokey0, k)
    key0.direction = digitalio.Direction.INPUT
    key0.pull = digitalio.Pull.UP
    keys.append(key0)
for k in range(4, 8):
    key1 = DigitalIO(neokey1, k)
    key1.direction = digitalio.Direction.INPUT
    key1.pull = digitalio.Pull.UP
    keys.append(key1)

key_pix0 = SS_NeoPixel(neokey0, 3, 4, auto_write = True)
key_pix0.brightness = 1
key_pix1 = SS_NeoPixel(neokey1, 3, 4, auto_write = True)
key_pix1.brightness = 1

key_pixels = [key_pix0[0], key_pix0[1], key_pix0[2], key_pix0[3],
              key_pix1[0], key_pix1[1], key_pix1[2], key_pix1[3]]

key_states = [False, False, False, False, False, False, False, False]
key_colors = [0xFF0000, 0xFF5500, 0xFFFF00, 0x00FF00, 0x00FFFF, 0x0000FF, 0x5500FF, 0xFF00FF]
for c in range(4):
    key_pix0[c] = key_colors[c]
    key_pix1[c] = key_colors[c + 4]
```

## synthio

This guitar uses `synthio` to make music. Audio is output via the onboard I2S amp on the Feather. The note frequencies are passed as MIDI note numbers so that its mathematically easy to increase or decrease octaves in the loop.

```python
audio = audiobusio.I2SOut(board.I2S_BIT_CLOCK, board.I2S_WORD_SELECT, board.I2S_DATA)
SAMPLE_RATE = 22050
SAMPLE_SIZE = 512
VOLUME = 32000

square = np.concatenate((np.ones(SAMPLE_SIZE//2, dtype=np.int16)*VOLUME,np.ones(SAMPLE_SIZE//2,
                         dtype=np.int16)*-VOLUME))
sine = np.array(np.sin(np.linspace(0, 2*np.pi, SAMPLE_SIZE, endpoint=False)) * VOLUME,
                       dtype=np.int16)

amp_env = synthio.Envelope(attack_time=0.01,
                                sustain_level=0.5,
                                release_time=0.1)

lfo_tremo = synthio.LFO(waveform=sine, rate=5)

synth = synthio.Synthesizer(sample_rate=SAMPLE_RATE)

synth_notes = []

octave = 12
mult = 2
octave_range = 6
tones = [36, 40, 43, 47, 50, 53, 57, 60]
diatonic = 0
t = [0, 0, 0, 0, 0, 0, 0, 0]
current_freq = []
for s in range(8):
    t[s] = tones[s] + (octave * mult)
    print(t[s])
    note = synthio.Note(frequency=synthio.midi_to_hz(t[s]),
                        envelope=amp_env, waveform=square,
                        amplitude = lfo_tremo)
    synth_notes.append(note)
    current_freq.append(synth_notes[s].frequency)

lfo_frequency = 2000
lfo_resonance = 1.5
lpf = synth.low_pass_filter(lfo_frequency, lfo_resonance)
hpf = synth.high_pass_filter(lfo_frequency, lfo_resonance)
```

The audio output is passed thru a `Mixer` object, allowing for volume control through software.

```python
synth_volume = 0.3
last_pos0 = synth_volume
last_pos1 = 0
last_pos2 = 0

mixer = audiomixer.Mixer(voice_count=1, sample_rate=SAMPLE_RATE, channel_count=1,
                         bits_per_sample=16, samples_signed=True, buffer_size=2048)
audio.play(mixer)
mixer.voice[0].play(synth)
mixer.voice[0].level = synth_volume
```

## The Loop

In the loop, the interrupt pins and strummer pin are scanned for any new events. Encoder 0 controls the volume of the synth. If you press the encoder switch it will mute the synth.

```python
if interrupt_event:
        int_number = interrupt_event.key_number
        if int_number == 0 and interrupt_event.pressed:
            pos0 = -enc0.position
            if pos0 != last_pos0:
                if pos0 > last_pos0:
                    synth_volume = synth_volume + 0.1
                else:
                    synth_volume = synth_volume - 0.1
                synth_volume = normalize(synth_volume, 0.0, 1.0)
                print(synth_volume)
                mixer.voice[0].level = synth_volume
                last_pos0 = pos0
            if not button0.value and not button0_state:
                button0_state = True
                if mixer.voice[0].level > 0:
                    mixer.voice[0].level = 0
                else:
                    mixer.voice[0].level = synth_volume
            if button0.value and button0_state:
                button0_state = False
```

Encoder 1 controls the LFO rate. If you press the encoder button it enables or disables the LFO.

```python
elif int_number == 1 and interrupt_event.pressed:
            pos1 = -enc1.position
            if pos1 != last_pos1:
                if pos1 > last_pos1:
                    lfo_tremo.rate = lfo_tremo.rate + 0.5
                else:
                    lfo_tremo.rate = lfo_tremo.rate - 0.5
                lfo_tremo.rate = normalize(lfo_tremo.rate, 1.0, 20.0)
                print(lfo_tremo.rate)
                last_pos1 = pos1
            if tremolo:
                if not button1.value and not button1_state:
                    button1_state = True
                    tremolo = False
                    for i in range(8):
                        synth_notes[i].amplitude = 1.0
                if button1.value and button1_state:
                    button1_state = False
            else:
                if not button1.value and not button1_state:
                    button1_state = True
                    tremolo = True
                    for i in range(8):
                        lfo_tremo.rate = 5.0
                        synth_notes[i].amplitude = lfo_tremo
                if button1.value and button1_state:
                    button1_state = False
```

Encoder 2 controls the note frequencies. Turning the encoder increases or decreases the octave range of the guitar. Pressing the encoder button switches between triad or diatonic mode.

```python
elif int_number == 2 and interrupt_event.pressed:
            pos2 = -enc2.position
            if pos2 != last_pos2:
                if pos2 > last_pos2:
                    mult = (mult + 1) % octave_range
                    print(mult)
                    for o in range(8):
                        t[o] = tones[o] + (octave * mult)
                        print(t[o])
                        synth_notes[o].frequency = synthio.midi_to_hz(t[o])
                        current_freq[o] = synth_notes[o].frequency
                else:
                    mult = (mult - 1) % octave_range
                    print(mult)
                    for o in range(8):
                        t[o] = tones[o] + (octave * mult)
                        print(t[o])
                        synth_notes[o].frequency = synthio.midi_to_hz(t[o])
                        current_freq[o] = synth_notes[o].frequency
                last_pos2 = pos2
            if not button2.value and not button2_state:
                button2_state = True
                diatonic = (diatonic + 1) % 2
                print(diatonic)
                if diatonic == 0:
                    new_tones = [36, 40, 43, 47, 50, 53, 57, 60]
                    for r in range(8):
                        tones[r] = new_tones[r]
                        print(tones[r])
                else:
                    new_tones = [36, 38, 40, 41, 43, 45, 47, 48]
                    for r in range(8):
                        tones[r] = new_tones[r]
                        print(tones[r])
                for x in range(8):
                    t[x] = tones[x] + (octave * mult)
                    print(t[x])
                    synth_notes[x].frequency = synthio.midi_to_hz(t[x])
                    current_freq[x] = synth_notes[x].frequency
            if button2.value and button2_state:
                button2_state = False
```

The final Keypad pin is for the strum bar. If strum mode is enabled, it plays the currently pressed synth note. After scanning, the GPIO interrupt flags are called for the three encoders. This resets the interrupt pins.

```python
elif int_number == 3 and interrupt_event.pressed:
            if strum:
                for i in range(0, 8):
                    if not keys[i].value:
                        pixels.fill(key_colors[i])
                        pixels.show()
                        synth.press(synth_notes[i])
        elif int_number == 3 and interrupt_event.released:
            if strum:
                synth.release_all()
        ss_enc0.get_GPIO_interrupt_flag()
        ss_enc1.get_GPIO_interrupt_flag()
        ss_enc2.get_GPIO_interrupt_flag()
```

## Filters

The accelerometer controls whether a high pass or low pass filter is applied to the synth. If the guitar is tilted up, a high pass filter is enabled. If the guitar is tilted down, a low pass filter is enabled. The filter frequency and resonance are affected by the readings from the accelerometer.&nbsp;

```python
if ticks_diff(ticks_ms(), accel_clock) >= accel_time:
        x, y, z = [
            value / adafruit_lis3dh.STANDARD_GRAVITY for value in lis3dh.acceleration
            ]
        if last_y != y:
            if abs(last_y - y) > 0.01:
                # print(f"x = {x:.3f} G, y = {y:.3f} G, z = {z:.3f} G")
                if y < -0.500:
                    mapped_freq = simpleio.map_range(y, -0.300, -1, 2000, 10000)
                    mapped_resonance = simpleio.map_range(y, -0.300, -1, 1.5, 8)
                    hpf = synth.high_pass_filter(mapped_freq, mapped_resonance)
                    for i in range(0, 8):
                        synth_notes[i].filter = hpf
                elif y > 0.200:
                    mapped_freq = simpleio.map_range(y, 0.200, 1, 2000, 100)
                    mapped_resonance = simpleio.map_range(y, 0.200, 1, 2, 0.5)
                    lpf = synth.low_pass_filter(mapped_freq, mapped_resonance)
                    for i in range(0, 8):
                        synth_notes[i].filter = lpf
                else:
                    for i in range(0, 8):
                        synth_notes[i].filter = None
            last_y = y
        accel_clock = ticks_add(accel_clock, accel_time)
```

## Keytar Mode

If `strum` mode is not enabled, then pressing the keys will play the synth.

```python
if not strum:
        for i in range(0, 8):
            if not keys[i].value and not key_states[i]:
                pixels.fill(key_colors[i])
                pixels.show()
                synth.press(synth_notes[i])
                key_states[i] = True
            if keys[i].value and key_states[i]:
                key_pixels[i] = key_colors[i]
                synth.release(synth_notes[i])
                key_states[i] = False
```

# Guitar Synth with CircuitPython SynthIO

## Wiring

## NeoKey I2C Address

One of the NeoKeys will need an I2C address.

Bridge the **A0 pads** on the NeoKey PCB using a blob of solder.

![3d_printing_neokey-A0-jumper.jpg](https://cdn-learn.adafruit.com/assets/assets/000/124/480/medium640/3d_printing_neokey-A0-jumper.jpg?1695125483)

## Daisy Chain NeoKeys

Use a short STEMMA QT cable to connect the two NeoKey PCBs together.

Connect a longer STEMMA QT cable to the NeoKey with the A0 I2C address.

![3d_printing_neokey-2-connect.jpg](https://cdn-learn.adafruit.com/assets/assets/000/124/481/medium640/3d_printing_neokey-2-connect.jpg?1695125515)

## NeoPixel Stick

Use the ribbon cable to create a 3-pin wire that is 8 inches / 20.3 cm in length.

![3d_printing_neopixel-cable.jpg](https://cdn-learn.adafruit.com/assets/assets/000/124/482/medium640/3d_printing_neopixel-cable.jpg?1695125578)

## Solder NeoPixel Stick Wires

Connect the three wires to the **GND** , **DIN** and **5VDC** pads on the NeoPixel stick.&nbsp;

![3d_printing_neopixel-wiring.jpg](https://cdn-learn.adafruit.com/assets/assets/000/124/483/medium640/3d_printing_neopixel-wiring.jpg?1695125596)

![3d_printing_neopixel-wired.jpg](https://cdn-learn.adafruit.com/assets/assets/000/124/485/medium640/3d_printing_neopixel-wired.jpg?1695125645)

## Rotary Encoder I2C Addresses

Two of the three rotary encoders will need to be assigned special I2C addresses by bridging the jumpers with a blob of solder.

- 1st Rotary Encoder no I2C Address
- 2nd Rotary Encoder **A1** I2C Address
- 3rd Rotary Encoder **A0** I2C Address

![3d_printing_rotary-I2C-address.jpg](https://cdn-learn.adafruit.com/assets/assets/000/124/486/medium640/3d_printing_rotary-I2C-address.jpg?1695125662)

## On/Off Button&nbsp;

Use the 2-pin JST PH and 2-pin PicoBlade socket cables and a short (1inch long) wire.

![3d_printing_button-cables.jpg](https://cdn-learn.adafruit.com/assets/assets/000/124/487/medium640/3d_printing_button-cables.jpg?1695125692)

## Soldering Ground Wire

Connect the short wire and black wire from the 2-pin PicoBlade socket cable to the cathode (– LED) terminal.

![3d_printing_button-ground-wiring.jpg](https://cdn-learn.adafruit.com/assets/assets/000/124/488/medium640/3d_printing_button-ground-wiring.jpg?1695125738)

## Soldering Common

Connect the short wire and black wire from the 2-pin JST PH socket cable to the common (C1) terminal.

![3d_printing_button-common-wired.jpg](https://cdn-learn.adafruit.com/assets/assets/000/124/489/medium640/3d_printing_button-common-wired.jpg?1695125768)

## Soldering LED Wire

Connect the red wire from the 2-pin PicoBlade socket cable to the anode (+ LED) terminal.

![3d_printing_button-LED-voltage.jpg](https://cdn-learn.adafruit.com/assets/assets/000/124/490/medium640/3d_printing_button-LED-voltage.jpg?1695125789)

## Soldering NC Pin

Connect the red wire from the 2-pin JST PH socket cable to the normal closed (NC1) terminal.

![3d_printing_button-NC-wired.jpg](https://cdn-learn.adafruit.com/assets/assets/000/124/491/medium640/3d_printing_button-NC-wired.jpg?1695125853)

## JST Cables for Feather

Use the 2-pin JST PH and 2-pin PicoBlade plug cables on the Feather.

![3d_printing_feather-JST-cables.jpg](https://cdn-learn.adafruit.com/assets/assets/000/124/492/medium640/3d_printing_feather-JST-cables.jpg?1695125900)

## Solder Ground

Connect the two black wires to the ground pin.

![3d_printing_feather-ground-wiring.jpg](https://cdn-learn.adafruit.com/assets/assets/000/124/493/medium640/3d_printing_feather-ground-wiring.jpg?1695125919)

## Solder 3V Pin on Feather

Connect the red wire from the PicoBlade cable to the 3V pin.

![3d_printing_feather-LED-3V.jpg](https://cdn-learn.adafruit.com/assets/assets/000/124/494/medium640/3d_printing_feather-LED-3V.jpg?1695125944)

## Solder EN Pin on Feather

Connect the red wire from the JST PH cable to the EN pin.

![3d_printing_feather-EN.jpg](https://cdn-learn.adafruit.com/assets/assets/000/124/495/medium640/3d_printing_feather-EN.jpg?1695125960)

## Connect On/Off Button to Feather

Plug in the corresponding cables together.

![3d_printing_feather-button-plug.jpg](https://cdn-learn.adafruit.com/assets/assets/000/124/496/medium640/3d_printing_feather-button-plug.jpg?1695125998)

## Solder JST plug to Battery Holder

Cut the stock 2.1mm barrel jack from the 3x AA battery holder.

Solder the 2-pin JST female cable to the power cable.&nbsp;

Ensure the polarity of the wires are correct.

![3d_printing_battery-JST-cable.jpg](https://cdn-learn.adafruit.com/assets/assets/000/124/497/medium640/3d_printing_battery-JST-cable.jpg?1695126055)

Danger: 

## Testing On/Off Button with Feather

Install AA batteries into the battery holder.

Plug the battery holder into the Feather.

Use the On/Off Button to power the Feather to test the circuit.

![3d_printing_feather-button-test.jpg](https://cdn-learn.adafruit.com/assets/assets/000/124/498/medium640/3d_printing_feather-button-test.jpg?1695126080)

## Wires for SPST Switch

Use the ribbon cable to create two wires.

- Short Wire 2.5in / 6.35 cm long
- Longer Wire 8in / 20.3 cm long

![3d_printing_switch-SDST-wires.jpg](https://cdn-learn.adafruit.com/assets/assets/000/124/499/medium640/3d_printing_switch-SDST-wires.jpg?1695126193)

## Solder Wires

Attach the short wire to one of the terminals (not the middle).

Attach the longer wire to the middle terminal.

![3d_printing_switch-SDST-wiring.jpg](https://cdn-learn.adafruit.com/assets/assets/000/124/500/medium640/3d_printing_switch-SDST-wiring.jpg?1695126238)

![3d_printing_switch-SDST-wired.jpg](https://cdn-learn.adafruit.com/assets/assets/000/124/501/medium640/3d_printing_switch-SDST-wired.jpg?1695126251)

## Wires for DPDT Switch

Use ribbon cable to create two sets of 2-pin wires that are 8 inches / 20.3 cm in length.

![3d_printing_switch-DPDT-wires.jpg](https://cdn-learn.adafruit.com/assets/assets/000/124/504/medium640/3d_printing_switch-DPDT-wires.jpg?1695126389)

## Soldering wires to DPDT Switch

Attach the first 2-pin cable to one of the terminals that isn't the middle.

Attach the second 2-pin cable to the middle terminal.

![3d_printing_switch-DPDT-wiring.jpg](https://cdn-learn.adafruit.com/assets/assets/000/124/502/medium640/3d_printing_switch-DPDT-wiring.jpg?1695126297)

![3d_printing_switch-DPDT-wired.jpg](https://cdn-learn.adafruit.com/assets/assets/000/124/503/medium640/3d_printing_switch-DPDT-wired.jpg?1695126311)

## Connect DPDT Switch to TRRS

The wires from the DPDT switch will be soldered to the pins on the TRRS breakout.

![3d_printing_TRRS-switch.jpg](https://cdn-learn.adafruit.com/assets/assets/000/124/505/medium640/3d_printing_TRRS-switch.jpg?1695126456)

## Solder Wires to TRRS

Attach one wire from the 2-pin cable to the **Left labeled pin**.

Attach one wire from the other 2-pin cable to the **Ring labeled pin**.

![3d_printing_TRSS-switch-wiring.jpg](https://cdn-learn.adafruit.com/assets/assets/000/124/506/medium640/3d_printing_TRSS-switch-wiring.jpg?1695126488)

## Solder Wires to Micro Switches

Use the ribbon cable to great four wires.

- 2x Long Wires 6.5 inches / 16.5 cm
- 2x Short Wires 2.5 inches / 6.35 cm

Use the short wires to share the COM and NO connections across the two switches.

Connect the longer wires to the switches COM and NO terminals.

Reference the photo for correct wiring.

![3d_printing_strum-switches-wired.jpg](https://cdn-learn.adafruit.com/assets/assets/000/124/507/medium640/3d_printing_strum-switches-wired.jpg?1695126534)

# Guitar Synth with CircuitPython SynthIO

## Assembly

## Hardware for Neck and Head

Use the following hardware to secure the neck case to the head case.

- 2x M3 x 10mm long screw
- 2x M3 hex nuts

Bring the parts together and line up the mounting holes. Hold the parts together while inserting the M3 screw through the mounting holes. Use hex nuts to secure the parts together.

![3d_printing_neck-head-parts.jpg](https://cdn-learn.adafruit.com/assets/assets/000/124/508/medium640/3d_printing_neck-head-parts.jpg?1695126563)

![3d_printing_neck-head-secure.jpg](https://cdn-learn.adafruit.com/assets/assets/000/124/510/medium640/3d_printing_neck-head-secure.jpg?1695126611)

## Hardware for Speaker

Use the following hardare to secure the speaker to the cover.

- 4x M3 x 10mm long screws
- 4x M3 hex nuts

Orient the speaker with the cover so the cable is in the proper location.

![3d_printing_head-cover-speaker.jpg](https://cdn-learn.adafruit.com/assets/assets/000/124/511/medium640/3d_printing_head-cover-speaker.jpg?1695126647)

## Secure Speaker

Place the speaker over the cover and line up the mounting holes.

Insert the M3 screws through the cover and speaker mounting holes. Use the speaker using the M3 hex nuts.

![3d_printing_speaker-secure.jpg](https://cdn-learn.adafruit.com/assets/assets/000/124/513/medium640/3d_printing_speaker-secure.jpg?1695126722)

![3d_printing_speaker-secured.jpg](https://cdn-learn.adafruit.com/assets/assets/000/124/514/medium640/3d_printing_speaker-secured.jpg?1695126731)

## Install Speaker Cover

Orient the speaker cover with the head case so the parts match.

Firmly press the speaker cover into the head case.

![3d_printing_head-neck-cover-speaker.jpg](https://cdn-learn.adafruit.com/assets/assets/000/124/517/medium640/3d_printing_head-neck-cover-speaker.jpg?1695127109)

![3d_printing_head-cover-speaker-install.jpg](https://cdn-learn.adafruit.com/assets/assets/000/124/540/medium640/3d_printing_head-cover-speaker-install.jpg?1695132288)

## Install NeoKeys to Neck

Orient the two NeoKey PCBS with the neck assembly.

Use the following hardware to secure the NeoKeys.

- 8x M2.5 x 8mm long screws

Place the speaker cable in between the built-in standoffs and exiting the end of the neck.&nbsp;

![3d_printing_neck-neokeys-preinstall.jpg](https://cdn-learn.adafruit.com/assets/assets/000/124/541/medium640/3d_printing_neck-neokeys-preinstall.jpg?1695132761)

## Secure NeoKeys

Place the two NeoKey PCBs into the built-in standoffs on the neck case.

Insert and fasten the M2.5 screws to secure the NeoKey PCBs.

&nbsp;

![3d_printing_neck-neokeys-install.jpg](https://cdn-learn.adafruit.com/assets/assets/000/124/543/medium640/3d_printing_neck-neokeys-install.jpg?1695132799)

![3d_printing_neck-neokeys-secure.jpg](https://cdn-learn.adafruit.com/assets/assets/000/124/544/medium640/3d_printing_neck-neokeys-secure.jpg?1695132809)

## Installed NeoKeys

Ensure the speaker cable and STEMMA QT cable are going through the notch on the end of the neck.

![3d_printing_neck-neokeys-secured.jpg](https://cdn-learn.adafruit.com/assets/assets/000/124/545/medium640/3d_printing_neck-neokeys-secured.jpg?1695132824)

## Top Body Overlays (Optional)

Attach the overlay panels to the top half of the guitar body using double-sided sticky tape or glue.

![3d_printing_top-body-overlays.jpg](https://cdn-learn.adafruit.com/assets/assets/000/124/548/medium640/3d_printing_top-body-overlays.jpg?1695132916)

## Install Neck to Body

Use the following hardware to secure the neck to the top half of the guitar body.

- 2x M3 x 10mm long screws
- 2x M3 hex nuts

![3d_printing_neck-body-screws.jpg](https://cdn-learn.adafruit.com/assets/assets/000/124/549/medium640/3d_printing_neck-body-screws.jpg?1695132940)

## Secure Neck to Body

Insert the M3 screws through the mounting tabs on the top half of the guitar body.

Use the M3 hex nuts to secure the neck to the body.

![3d_printing_neck-body-installing.jpg](https://cdn-learn.adafruit.com/assets/assets/000/124/550/medium640/3d_printing_neck-body-installing.jpg?1695132959)

![3d_printing_neck-body-secured.jpg](https://cdn-learn.adafruit.com/assets/assets/000/124/551/medium640/3d_printing_neck-body-secured.jpg?1695132979)

## Battery Cover

Orient the 3x AA battery holder with the battery cover.

Attach the 3x AA battery holder to the battery cover using the clear adhesive squares.

![3d_printing_battery-cover.jpg](https://cdn-learn.adafruit.com/assets/assets/000/124/552/medium640/3d_printing_battery-cover.jpg?1695133006)

![3d_printing_battery-cover-attached.jpg](https://cdn-learn.adafruit.com/assets/assets/000/124/553/medium640/3d_printing_battery-cover-attached.jpg?1695133021)

## Connect Speaker Wires to DPDT Switch

Solder the two wires from the speaker to the remaining terminals on the DPDT switch.

![3d_printing_switch-DPDT-speaker-wire.jpg](https://cdn-learn.adafruit.com/assets/assets/000/124/554/medium640/3d_printing_switch-DPDT-speaker-wire.jpg?1695133051)

![3d_printing_switch-speaker-soldering.jpg](https://cdn-learn.adafruit.com/assets/assets/000/124/555/medium640/3d_printing_switch-speaker-soldering.jpg?1695133073)

## Panel Mount DPDT Switch

Fit the DPDT switch through the corresponding mounting hole in the top half of the guitar body.

Use the included hex nut and washer to secure the switch.

![3d_printing_switch-DPDT-mount.jpg](https://cdn-learn.adafruit.com/assets/assets/000/124/556/medium640/3d_printing_switch-DPDT-mount.jpg?1695133101)

![3d_printing_switch-DPDT-secure.jpg](https://cdn-learn.adafruit.com/assets/assets/000/124/557/medium640/3d_printing_switch-DPDT-secure.jpg?1695133119)

## Connect Rotary Encoders

Orient the three rotary encoders in the correct order and connect them together using the short STEMMA QT cables.

Connect the STEMMA QT cable from the NeoKeys to the corresponding rotary encoder.

Connect the longer STEMMA QT cable to the corresponding rotary encoder.

![3d_printing_rotary-cables-connect.jpg](https://cdn-learn.adafruit.com/assets/assets/000/124/558/medium640/3d_printing_rotary-cables-connect.jpg?1695133144)

## Panel Mount Rotary Encoders

Insert the three rotary encoders to the corresponding mounting holes in the top half of the guitar body.

Use the included hex nuts to secure the rotary encoders.

![3d_printing_rotary-body-install.jpg](https://cdn-learn.adafruit.com/assets/assets/000/124/560/medium640/3d_printing_rotary-body-install.jpg?1695133299)

## Install SPST Switch

Get the SPST toggle switch ready to panel mount into the top half of the guitar body.

![3d_printing_switch-SPST-body.jpg](https://cdn-learn.adafruit.com/assets/assets/000/124/561/medium640/3d_printing_switch-SPST-body.jpg?1695133540)

## Secure SPST Switch

Use the included hex nut and washer to secure the SPST switch to the top half of the guitar body.

![3d_printing_switch-SPST-secured.jpg](https://cdn-learn.adafruit.com/assets/assets/000/124/562/medium640/3d_printing_switch-SPST-secured.jpg?1695133566)

## Connect SPST Switch Ground Wire

Solder the ground wire from the SPST switch to the ground pin on one of the rotary encoder PCBs.

![3d_printing_switch-SPST-ground.jpg](https://cdn-learn.adafruit.com/assets/assets/000/124/563/medium640/3d_printing_switch-SPST-ground.jpg?1695133588)

## Secure NeoPixel Stick

Place the NeoPixel stick onto the mount and line up the mounting holes.

Secure the 8x NeoPixel stick to the NeoPixel mount using two M2 x 8mm long screws.

![3d_printing_neopixel-mount-screws.jpg](https://cdn-learn.adafruit.com/assets/assets/000/124/546/medium640/3d_printing_neopixel-mount-screws.jpg?1695132856)

![3d_printing_neopixel-mount-install.jpg](https://cdn-learn.adafruit.com/assets/assets/000/124/547/medium640/3d_printing_neopixel-mount-install.jpg?1695132886)

## NeoPixel Mount Hardware

Use the following hardware to secure the NeoPixel mount to the bottom half of the guitar body.

- 2x M3 x 10mm long screws
- 2x M3 hex nuts

![3d_printing_neopixel-mount-body-screws.jpg](https://cdn-learn.adafruit.com/assets/assets/000/124/569/medium640/3d_printing_neopixel-mount-body-screws.jpg?1695133790)

## Secure NeoPixel Mount

Fasten the two M3 screws through the corresponding mounting holes on the bottom half of the guitar body.

Orient the mounting holes on the NeoPixel mount with the M3 screws.

Secure the mount using the hex nuts.

![3d_printing_neopixel-mount-screws-install.jpg](https://cdn-learn.adafruit.com/assets/assets/000/124/570/medium640/3d_printing_neopixel-mount-screws-install.jpg?1695133828)

![3d_printing_neopixel-mount-secured.jpg](https://cdn-learn.adafruit.com/assets/assets/000/124/571/medium640/3d_printing_neopixel-mount-secured.jpg?1695133839)

## Micro Switch Hardware

Use the following hardware to secure the micro switches to the switch mounts.

- 4x M3 x 16mm long screws
- 4x M3 hex nuts

![3d_printing_strum-switches-screws.jpg](https://cdn-learn.adafruit.com/assets/assets/000/124/564/medium640/3d_printing_strum-switches-screws.jpg?1695133626)

## Micro Switch Mounts

Place the micro switch onto the mount with the mounting holes lined up.

Use the hex nuts to secure the micro switch.

Repeat this process for the second micro switch.

![3d_printing_strum-switch-installing.jpg](https://cdn-learn.adafruit.com/assets/assets/000/124/565/medium640/3d_printing_strum-switch-installing.jpg?1695133664)

![3d_printing_strum-switch-nuts.jpg](https://cdn-learn.adafruit.com/assets/assets/000/124/566/medium640/3d_printing_strum-switch-nuts.jpg?1695133680)

## Assembled Micro Switch Mounts&nbsp;

Reference the photo for orienting the two micro switches.

![3d_printing_strum-switches-mounts.jpg](https://cdn-learn.adafruit.com/assets/assets/000/124/567/medium640/3d_printing_strum-switches-mounts.jpg?1695133710)

## Strum Hinge Hardware

Use the following hardware to secure the two hinges to the strum plate.

- 4x M3 x 10mm long screws
- 4x M3 hex nuts

![3d_printing_strum-screw-parts.jpg](https://cdn-learn.adafruit.com/assets/assets/000/124/620/medium640/3d_printing_strum-screw-parts.jpg?1695143341)

## Secure Hinges to Strum Plate

Insert an M3 screw through the countersunk standoffs and place the hinge over the screw. Use the hex nut to secure the hinge in place.

Repeat this process for the second hinge.

![3d_printing_strum-base-joint-nut-install.jpg](https://cdn-learn.adafruit.com/assets/assets/000/124/621/medium640/3d_printing_strum-base-joint-nut-install.jpg?1695143364)

![3d_printing_strum-base-joints-secured.jpg](https://cdn-learn.adafruit.com/assets/assets/000/124/622/medium640/3d_printing_strum-base-joints-secured.jpg?1695143384)

## Install Pegs to Strum Pick&nbsp;

Insert a peg through the side hole on the strum pick. Use a glue adhesive to permanently bond the peg.&nbsp;

Repeat this process for the second peg.

![3d_printing_strum-pick-hotglue.jpg](https://cdn-learn.adafruit.com/assets/assets/000/124/623/medium640/3d_printing_strum-pick-hotglue.jpg?1695144031)

![3d_printing_strum-pick-joints-nubs.jpg](https://cdn-learn.adafruit.com/assets/assets/000/124/624/medium640/3d_printing_strum-pick-joints-nubs.jpg?1695144041)

## Assembled Strum Plate

Allow the glue to dry before proceeding with the assembly.

![3d_printing_strum-plate-pick.jpg](https://cdn-learn.adafruit.com/assets/assets/000/124/568/medium640/3d_printing_strum-plate-pick.jpg?1695133743)

## Install Hardware for Strum Plate

Fasten the four M3 x 10mm through the mounting holes for the strum plate on the bottom half of the guitar body.

![3d_printing_strum-plate-screws-body-install.jpg](https://cdn-learn.adafruit.com/assets/assets/000/124/572/medium640/3d_printing_strum-plate-screws-body-install.jpg?1695133930)

## Installing Strum Plate

Place the strum plate assembly over the M3 screws so they are fitted through the mounting holes.

Place the two micro switch mounts over the strum plate so the M3 screws are fitted through the mounting holes.

![3d_printing_strum-plate-body-installing.jpg](https://cdn-learn.adafruit.com/assets/assets/000/124/573/medium640/3d_printing_strum-plate-body-installing.jpg?1695133974)

![3d_printing_strum-mounts-body-installing.jpg](https://cdn-learn.adafruit.com/assets/assets/000/124/574/medium640/3d_printing_strum-mounts-body-installing.jpg?1695133989)

## Install Strum Pick

Slightly flex the hinges apart so that the pegs of the strum pick can be fitted into the hinges.

![3d_printing_strum-pick-body-installing.jpg](https://cdn-learn.adafruit.com/assets/assets/000/124/575/medium640/3d_printing_strum-pick-body-installing.jpg?1695134003)

## Secure Strum Assembly

Insert and fasten the four M3 hex nuts onto the M3 screws to secure the strum assembly to the bottom half of the guitar body.

![3d_printing_strum-pick-body-secure.jpg](https://cdn-learn.adafruit.com/assets/assets/000/124/576/medium640/3d_printing_strum-pick-body-secure.jpg?1695134022)

## Disable LiPo Charge on Feather

Locate the LiPo charge trace on the back of the RP2040 PropMaker Feather.

Use a hobby knife to cut the trace to disable LiPo charging.

![3d_printing_feather-lipo-trace.jpg](https://cdn-learn.adafruit.com/assets/assets/000/124/632/medium640/3d_printing_feather-lipo-trace.jpg?1695155800)

## Feather Mount Setup

Use 2x M2.5 x 6mm long screws to secure the Feather PCB to the feather mount.

Place the Feather onto the mount. Insert and fasten the screws to secure the feather.

![3d_printing_feather-mount-screws.jpg](https://cdn-learn.adafruit.com/assets/assets/000/124/577/medium640/3d_printing_feather-mount-screws.jpg?1695134059)

![3d_printing_feather-mount-install.jpg](https://cdn-learn.adafruit.com/assets/assets/000/124/578/medium640/3d_printing_feather-mount-install.jpg?1695134068)

## On/Off Button Hardware

Get the on/off button, hex nut and 3D printed washer.

Fit the 3D printed washer onto the on/off button.

![3d_printing_button-nut-body.jpg](https://cdn-learn.adafruit.com/assets/assets/000/124/579/medium640/3d_printing_button-nut-body.jpg?1695134087)

![3d_printing_button-washer-install.jpg](https://cdn-learn.adafruit.com/assets/assets/000/124/580/medium640/3d_printing_button-washer-install.jpg?1695134103)

## Secure On/Off Button

Insert the On/Off button into the corresponding mounting holes onto the top half of the guitar body.

Use the hex nut to secure the On/Off button.

![3d_printing_button-body-mounted.jpg](https://cdn-learn.adafruit.com/assets/assets/000/124/581/medium640/3d_printing_button-body-mounted.jpg?1695134125)

![3d_printing_button-body-secured.jpg](https://cdn-learn.adafruit.com/assets/assets/000/124/582/medium640/3d_printing_button-body-secured.jpg?1695134132)

## Checkpoint

Take a moment to ensure the various components are tightly secured in the top half of the guitar body.

![3d_printing_button-body-installed.jpg](https://cdn-learn.adafruit.com/assets/assets/000/124/583/medium640/3d_printing_button-body-installed.jpg?1695134166)

## Secure Feather Mount

Use 2x M3 x 10mm long screws and hex nuts to secure the Feather mount.&nbsp;

Place the Feather mount onto bottom half of the guitar body with the mounting lined up.

Insert the M3 screws through the guitar body and Feather mount.

Fasten the M3 hex nuts to secure the Feather mount.

![3d_printing_feather-mount-body-screws.jpg](https://cdn-learn.adafruit.com/assets/assets/000/124/584/medium640/3d_printing_feather-mount-body-screws.jpg?1695134205)

![3d_printing_feather-mount-body-nuts.jpg](https://cdn-learn.adafruit.com/assets/assets/000/124/585/medium640/3d_printing_feather-mount-body-nuts.jpg?1695134228)

## Secured Feather Mount

Check the Feather mount has been properly secured to the bottom half of the guitar body.

![3d_printing_feather-mount-body-secured.jpg](https://cdn-learn.adafruit.com/assets/assets/000/124/586/medium640/3d_printing_feather-mount-body-secured.jpg?1695134250)

## Secure TRRS Breakout

Place the TRRS breakout over the corresponding mounting holes on the bottom half of the guitar body.

Insert and fasten 2x M2 x 6mm long screws to secure the TRRS breakout.

![3d_printing_TRRS-body-installing.jpg](https://cdn-learn.adafruit.com/assets/assets/000/124/587/medium640/3d_printing_TRRS-body-installing.jpg?1695134275)

![3d_printing_TRRS-body-secured.jpg](https://cdn-learn.adafruit.com/assets/assets/000/124/588/medium640/3d_printing_TRRS-body-secured.jpg?1695134281)

## Cable for Rotary Encoders

Use the 3-pin picoBlade cable and solder each wire to the interrupt pins (INT) on the three rotary encoder breakouts.&nbsp;

- **A1** Encoder to Yellow Wire
- **A0** Encoder to Black Wire
- 3rd Encoder to Red Wire&nbsp;

![3d_printing_rotary-3pin-cable.jpg](https://cdn-learn.adafruit.com/assets/assets/000/124/589/medium640/3d_printing_rotary-3pin-cable.jpg?1695134293)

![3d_printing_rotary-3pin-solder.jpg](https://cdn-learn.adafruit.com/assets/assets/000/124/590/medium640/3d_printing_rotary-3pin-solder.jpg?1695134332)

## Rotary Encoder Cable for Feather

Solder the wires from the matching 3-pin picoBlade cable to the D5, D6 and D9 pins on the Feather respectively.&nbsp;

- Red wire to D5
- Black wire to D6
- Yellow Wire to D9

![3d_printing_rotary-cable-feather-soldered.jpg](https://cdn-learn.adafruit.com/assets/assets/000/124/591/medium640/3d_printing_rotary-cable-feather-soldered.jpg?1695134439)

## Connect 3-pin PicoBlade cables together
![3d_printing_Rotary-feather-connect.jpg](https://cdn-learn.adafruit.com/assets/assets/000/124/592/medium640/3d_printing_Rotary-feather-connect.jpg?1695134476)

## Solder SPST Switch Signal Wire to Feather

Grab the signal wire from the SPST switch and solder it to pin D12 on the Feather.

![3d_printing_switch-D12-feather.jpg](https://cdn-learn.adafruit.com/assets/assets/000/124/593/medium640/3d_printing_switch-D12-feather.jpg?1695134492)

## Connect STEMMA QT to Feather

Grab the long STEMMA QT cable from the rotary encoder and plug it into the STEMMA QT port on the Feather.

![3d_printing_feather-stemma-plug.jpg](https://cdn-learn.adafruit.com/assets/assets/000/124/595/medium640/3d_printing_feather-stemma-plug.jpg?1695134553)

## Solder Micro Switch Ground Wire

Grab the ground wire from the two micro switches and solder it to one of the available ground pins on the rotary encoder breakout.

![3d_printing_strum-switch-ground-feather.jpg](https://cdn-learn.adafruit.com/assets/assets/000/124/597/medium640/3d_printing_strum-switch-ground-feather.jpg?1695134613)

## Connect cables from On/Off Button to Feather
![3d_printing_feather-button-plug-assembled.jpg](https://cdn-learn.adafruit.com/assets/assets/000/124/603/medium640/3d_printing_feather-button-plug-assembled.jpg?1695142760)

![3d_printing_feather-led-plug-assembled.jpg](https://cdn-learn.adafruit.com/assets/assets/000/124/604/medium640/3d_printing_feather-led-plug-assembled.jpg?1695142779)

## Connect Strum Switches To Feather

Grab the signal wire from the micro switches and insert it into the corresponding screw block terminal on the Feather.

Use a flat head screw driver to secure the wire.&nbsp;&nbsp;

![3d_printing_feather-strum-switches-screwblock.jpg](https://cdn-learn.adafruit.com/assets/assets/000/124/605/medium640/3d_printing_feather-strum-switches-screwblock.jpg?1695142859)

## Connect NeoPixel to Feather

Grab the cable from the NeoPixel stick and insert them into the corresponding terminals on the Feather.

Use a flat head screw driver to secure the wires.

![3d_printing_feather-neo-screwblock.jpg](https://cdn-learn.adafruit.com/assets/assets/000/124/606/medium640/3d_printing_feather-neo-screwblock.jpg?1695142885)

## Connect TRRS to Feather

Grab the remaining wires from the TRRS breakout and insert them into the corresponding terminals on the Feather.

use a flat head screw driver to secure the wires.

![3d_printing_feather-spk-screwblock.jpg](https://cdn-learn.adafruit.com/assets/assets/000/124/607/medium640/3d_printing_feather-spk-screwblock.jpg?1695142908)

## Install Battery Cover

Fit the battery cover into the corresponding opening on the bottom half of the guitar with the mounting tabs lined up with the mounting holes.

Use 2x M3 x 6mm long screws to secure the battery cover to the body of the guitar.

![3d_printing_battery-body-installing.jpg](https://cdn-learn.adafruit.com/assets/assets/000/124/608/medium640/3d_printing_battery-body-installing.jpg?1695142932)

![3d_printing_battery-body-secure.jpg](https://cdn-learn.adafruit.com/assets/assets/000/124/609/medium640/3d_printing_battery-body-secure.jpg?1695142951)

## Connect Battery to Feather

Plug in the 2-pin JST PH from the battery to the Feather.

![3d_printing_battery-feather-plug.jpg](https://cdn-learn.adafruit.com/assets/assets/000/124/610/medium640/3d_printing_battery-feather-plug.jpg?1695142986)

## Closing Body Halves

Carefully begin to close the two halves of the guitar.

Move and adjust the various cables so they aren't being pinched or kinked.

Ensure the wires are clear from the strum mechanism.

Test the strum pick to make sure it can be actuated.

![3d_printing_body-halves-closing.jpg](https://cdn-learn.adafruit.com/assets/assets/000/124/611/medium640/3d_printing_body-halves-closing.jpg?1695143005)

![3d_printing_body-halves-closed.jpg](https://cdn-learn.adafruit.com/assets/assets/000/124/612/medium640/3d_printing_body-halves-closed.jpg?1695143016)

## Secure Body Halves

Use 8x M3 x 10mm long screws to secure the two halfs of the guitar together.

Insert M3 screws through the countersunk standoffs on the bottom half of the guitar.

Fasten screws until they're tight.

![3d_printing_body-halves-secure.jpg](https://cdn-learn.adafruit.com/assets/assets/000/124/613/medium640/3d_printing_body-halves-secure.jpg?1695143037)

## Kailh Key Switches

Get the eight kailh key switches and neck cover.

![3d_printing_neokey-switches-cover.jpg](https://cdn-learn.adafruit.com/assets/assets/000/124/615/medium640/3d_printing_neokey-switches-cover.jpg?1695143071)

## Install Neck Cover

Orient the neck cover with the neck case and firmly press together to snap fit them closed.

![3d_printing_neck-cover-install.jpg](https://cdn-learn.adafruit.com/assets/assets/000/124/616/medium640/3d_printing_neck-cover-install.jpg?1695143112)

## Install Key Switches

Orient key switches so pins are matching the sockets on the NeoKey PCBs.

Carefully press fit each key switch into the neck cover.

Repeat installation process for each key switch.

![3d_printing_neokey-switches-install.jpg](https://cdn-learn.adafruit.com/assets/assets/000/124/617/medium640/3d_printing_neokey-switches-install.jpg?1695143130)

## Install Key Caps

Press fit the key caps onto the stems of the kailh key switches.

![3d_printing_keycaps-install.jpg](https://cdn-learn.adafruit.com/assets/assets/000/124/618/medium640/3d_printing_keycaps-install.jpg?1695143151)

## Final Build

Congratulations on your Synth Guitar build! Use the on/off button to it on power.

Use the strum mode toggle to switch between modes.

Use the audio mode toggle to switch between the speaker and TRRS jack.

Use the middle rotary encoder to change the rate of the LFO.

Use the 1st rotary encoder to change the octave of the notes.

Use the 3rd rotary encoder to adjust the volume.

![3d_printing_final-build.jpg](https://cdn-learn.adafruit.com/assets/assets/000/124/619/medium640/3d_printing_final-build.jpg?1695143187)

# Guitar Synth with CircuitPython SynthIO

## Use

![](https://cdn-learn.adafruit.com/assets/assets/000/124/653/medium800/3d_printing_usage.jpg?1695227234)

## Volume

Encoder 0 controls the volume of the synth. If you press the encoder switch it will mute the synth.

## LFO Rate (Tremolo)&nbsp;

Encoder 1 controls the LFO rate. If you press the encoder button it enables or disables the LFO.

## Note Octave

Encoder 2 controls the note frequencies. Turning the encoder increases or decreases the octave range of the guitar. Pressing the encoder button switches between triad or diatonic mode.

## Strum Mode

If strum mode is enabled, it plays the currently pressed synth note. If strum mode is not enabled, then pressing the NeoKey switches will play the synth.

## Audio Mode

If audio mode is enabled, the output will switch from the on-board speaker to the TRRS jack.

Info: 

## Filters

The accelerometer controls whether a high pass or low pass filter is applied to the synth. If the guitar is tilted up, a high pass filter is enabled. If the guitar is tilted down, a low pass filter is enabled. The filter frequency and resonance are affected by the readings from the accelerometer.&nbsp;


## Guide Products

### Adafruit RP2040 Prop-Maker Feather with I2S Audio Amplifier

[Adafruit RP2040 Prop-Maker Feather with I2S Audio Amplifier](https://www.adafruit.com/product/5768)
The Adafruit Feather series gives you lots of options for a small, portable, rechargeable microcontroller board. By picking a feather and stacking on a FeatherWing you can create advanced projects quickly. One popular combo is our [Feather M4](https://www.adafruit.com/product/3857)...

In Stock
[Buy Now](https://www.adafruit.com/product/5768)
[Related Guides to the Product](https://learn.adafruit.com/products/5768/guides)
### Kailh Mechanical Key Switches - Linear Red - 10 pack

[Kailh Mechanical Key Switches - Linear Red - 10 pack](https://www.adafruit.com/product/4952)
For crafting your very own custom keyboard, these **Kailh Red Linear mechanical key switches** are deeee-luxe! With smooth actuation and Cherry MX compatibility, they're lovely when you want a **smooth linear** keystroke:

- Type Linear
- Operating...

No Longer Stocked
[Buy Now](https://www.adafruit.com/product/4952)
[Related Guides to the Product](https://learn.adafruit.com/products/4952/guides)
### Clear DSA Keycaps for MX Compatible Switches - 10 pack

[Clear DSA Keycaps for MX Compatible Switches - 10 pack](https://www.adafruit.com/product/5013)
Get ready&nbsp;to clacky to your heart's content. Here is a 10 pack of clear transparent&nbsp;DSA keycaps for your next mechanical keyboard or&nbsp;[NeoKey](https://www.adafruit.com/?q=neokey&sort=BestMatch)&nbsp;project. Snap 'em onto any&nbsp; **Cherry MX or...**

No Longer Stocked
[Buy Now](https://www.adafruit.com/product/5013)
[Related Guides to the Product](https://learn.adafruit.com/products/5013/guides)
### Mono Enclosed Speaker with Plain Wires - 3W 4 Ohm

[Mono Enclosed Speaker with Plain Wires - 3W 4 Ohm](https://www.adafruit.com/product/4445)
Listen up! This single&nbsp; 2.8" x 1.2" speaker&nbsp;is&nbsp;the perfect addition to any audio project where you need 4 ohm impedance and 3W or less of power. We particularly like these speakers as they are small and enclosed for good audio volume and quality. This speaker _does..._

Out of Stock
[Buy Now](https://www.adafruit.com/product/4445)
[Related Guides to the Product](https://learn.adafruit.com/products/4445/guides)
### NeoPixel Stick - 8 x 5050 RGB LED with Integrated Drivers

[NeoPixel Stick - 8 x 5050 RGB LED with Integrated Drivers](https://www.adafruit.com/product/1426)
Make your own little LED strip arrangement with this stick of NeoPixel LEDs. We crammed 8 of the tiny 5050 (5mm x 5mm) smart RGB LEDs onto a PCB with mounting holes and a chainable design. Use only one microcontroller pin to control as many as you can chain together! Each LED is addressable as...

In Stock
[Buy Now](https://www.adafruit.com/product/1426)
[Related Guides to the Product](https://learn.adafruit.com/products/1426/guides)
### Adafruit TRRS Jack Breakout Board

[Adafruit TRRS Jack Breakout Board](https://www.adafruit.com/product/5764)
Tip-Ring-Ring-Sleeve style audio cables are often used for situations where you want stereo audio and then an extra contact for a microphone input. [For example, headsets for cell phones](https://www.adafruit.com/product/3959). Also called TRRS jacks for short, they're also...

In Stock
[Buy Now](https://www.adafruit.com/product/5764)
[Related Guides to the Product](https://learn.adafruit.com/products/5764/guides)
### NeoKey 1x4 QT I2C - Four Mechanical Key Switches with NeoPixels

[NeoKey 1x4 QT I2C - Four Mechanical Key Switches with NeoPixels](https://www.adafruit.com/product/4980)
The only thing better than a nice mechanical key is, perhaps, FOUR mechanical keys&nbsp;that also can glow any color of the rainbow - and that's what the&nbsp; **Adafruit NeoKey 1x4 QT I2C Breakout** &nbsp;will let you do! This longgg 3" x 0.8" PCB fits...

Out of Stock
[Buy Now](https://www.adafruit.com/product/4980)
[Related Guides to the Product](https://learn.adafruit.com/products/4980/guides)
### Adafruit I2C Stemma QT Rotary Encoder Breakout with NeoPixel

[Adafruit I2C Stemma QT Rotary Encoder Breakout with NeoPixel](https://www.adafruit.com/product/4991)
Rotary encoders are soooo much fun! Twist em this way, then twist them that way. Unlike potentiometers, they go all the way around and often have little detents for tactile feedback. But, if you've ever tried to add encoders to your project you know that they're a real challenge to...

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

## Related Guides

- [Adafruit I2C QT Rotary Encoder](https://learn.adafruit.com/adafruit-i2c-qt-rotary-encoder.md)
- [Adafruit NeoKey 1x4 QT I2C Breakout](https://learn.adafruit.com/neokey-1x4-qt-i2c.md)
- [Adafruit RP2040 Prop-Maker Feather](https://learn.adafruit.com/adafruit-rp2040-prop-maker-feather.md)
- [Adafruit TRRS Jack Breakout Board](https://learn.adafruit.com/trrs-jack-breakout.md)
- [Adafruit Metro ESP32-S3](https://learn.adafruit.com/adafruit-metro-esp32-s3.md)
- [NeoPixel Flame Torch](https://learn.adafruit.com/neopixel-flame-torch.md)
- [Light-Up Reactive Ukulele](https://learn.adafruit.com/light-up-reactive-ukulele.md)
- [Firework Ignitor](https://learn.adafruit.com/electric-ignitor.md)
- [Kitty Toe Bean Keypad with Color TFT](https://learn.adafruit.com/kitty-toe-bean-paw-keypad-color-tct.md)
- [Soundboard Speaker for Bikes & Scooters](https://learn.adafruit.com/soundboard-speaker-for-bikes-scooters.md)
- [Adafruit Feather RP2040 RFM95](https://learn.adafruit.com/feather-rp2040-rfm95.md)
- [Animatronic Hand](https://learn.adafruit.com/animatronic-hands.md)
- [LLM Agent Embodiment Kit](https://learn.adafruit.com/llm-agent-embodiment-kit.md)
- [Arcade Fightstick](https://learn.adafruit.com/arcade-fightstick.md)
- [Air Quality Monitor and Case](https://learn.adafruit.com/aqi-case.md)
- [Knobby Sequencer](https://learn.adafruit.com/knobby-sequencer.md)
- [The Scream: Interactive Screaming Painting](https://learn.adafruit.com/the-scream-munch-screaming-interactive-scream-painting.md)
- [Scrolling Countdown Timer](https://learn.adafruit.com/scrolling-countdown-timer.md)
- [Hello World of Robotics with Crickit](https://learn.adafruit.com/hello-world-of-robotics-with-crickit.md)
