Close
0%
0%

Pi Synth

A Raspberry Pi PICO powered Synth using CD74HC4067 Multiplexer

Similar projects worth following
101 views
This is Pi Synth, a DIY sound sequencer synth built completely from scratch. This version uses a Raspberry Pi Pico as the main microcontroller, paired with a CD74HC4067 multiplexer IC that connects to 16 buttons used as the primary input controls for the synth.

The project was developed in two phases. The first phase was a temporary breadboard setup, where the entire synth circuit was assembled using three interconnected breadboards. This allowed the core functionality of the synthesizer to be prototyped and tested quickly.

The second phase was a more permanent PCB-based version. For this stage, a previously designed PCB breadboard was used, and the entire circuit was rebuilt on it to create a cleaner and more durable setup compared to the temporary breadboard prototype.

This project mainly serves as a demonstration platform for an upcoming, more advanced synthesizer project. The future version will include dedicated buttons, potentiometers, and a display. Silent mechanical switches will also be used so the instrument operates quietly, since the push buttons used in the current PCB version produce audible clicks when pressed.

Overall, the current Pi Synth setup functions as a demo board that will primarily be used for experimenting with and refining the code for the upcoming synthesizer. This Article covers the complete build process, including both the breadboard prototype and the more permanent PCB breadboard version.

CD74HC4067 MULTIPLEXER

In our project we used the CD74HC4067 Multiplexer IC, which allows many input signals to be read using only a few microcontroller pins. This IC acts like an electronic rotary switch: it connects one of sixteen input channels to a single output pin at a time, depending on the control signals provided.

The CD74HC4067 has 16 signal channels (C0–C15) and one common pin (SIG). Four select pins (S0–S3) determine which channel is currently connected to the common pin. By sending a binary value to these four select lines, the microcontroller can quickly choose which input channel to read. For example, when the select lines represent binary 0000, channel C0 is connected; when they represent 0001, channel C1 is connected, and so on up to C15.

In our Synth project, the multiplexer is used to expand the number of buttons that the microcontroller can read. Instead of dedicating a separate GPIO pin for each key, all buttons are connected to the multiplexer channels. The microcontroller cycles through the channels rapidly by changing the select pins and reading the shared SIG pin. This scanning happens fast enough that it appears as if all buttons are being read simultaneously.

Using the CD74HC4067 greatly reduces the number of required GPIO pins, making it possible to implement a 16-button keyboard and control inputs while using only five microcontroller pins (four select pins and one signal pin). This makes the circuit simpler, more scalable, and ideal for compact projects like this DIY synthesizer.

BREADBOARD SETUP

Using the provided wiring diagram, we prepared a basic breadboard setup consisting of a Pico connected to a CD74HC4067 module. We paired the S0 pin of the multiplexer with GPIO20, S1 with GPIO19, S2 with GPIO18, S3 with GPIO17, and the SIGNAL pin with GPIO16.

Sixteen buttons were connected to the sixteen channels of the multiplexer IC, and they are all connected to GND. When a button is pressed, the corresponding channel is pulled down, which is registered as a button press. The remaining buttons were paired with the remaining GPIO pins of the Pico.

For audio output, we are using a PAM8403 audio amplifier module connected to a 5W 8Ω speaker. The amplifier input is connected to GPIO21 of the Pico.

We used a total of three breadboards stacked together to create a larger breadboard surface. On this setup, we placed all the buttons, the audio module, the multiplexer, and the main microcontroller and wired everything together using single-core copper wire.

CODE

This was the main code we used in our project and it's a simple one.

#include <math.h>
// ================= MUX =================
#define S0 20
#define S1 19
#define S2 18
#define S3 17
#define SIG 16
// ================= AUDIO =================
#define AUDIO_PIN...
Read more »

FRAME.stl

Standard Tesselated Geometry - 3.12 MB - 03/12/2026 at 11:45

Download

sch_page-0001.jpg

JPEG Image - 208.77 kB - 03/12/2026 at 11:45

Preview

  • 1
    SWITCH BOARD ASSEMBLY

    For our project, we prepared two identical switchboards using two PCB breadboards.

    • On each PCB, we installed 12×12 mm push buttons, placing 12 buttons on each board, with six on the top row and six on the bottom row.
    • After placing the push buttons, we flipped the board over and soldered the leads of the push buttons.
  • 2
    MAIN BOARD

    We prepared Mainboard that consisted of a Raspberry Pi PICO added to our PCB breadboard that already had a type C port soldered on board. We added a type C Port VCC with VBUS of PICO, GND to GND.

    We added the CD74HC4067 module and connected its VCC with PICO's 3V3 pin and GND with GND of PICO.

    S0 of Multiplexer is connected with GPIO20 of the PICO, S1 is connected with GPIO19, S2 is connected with GPIO18, S3 is connected to GPIO17 and the SIGNAL pin is connected with GPIO16.

  • 3
    AUDIO AMPLIFIER SETUP

    For audio, we are using a PAM8403 audio amplifier board, where the right channel is used for inputting audio from GPIO21 of the Raspberry Pi Pico. An 8-ohm 5W speaker is paired with the amplifier for sound output.

    • To make the connections, we placed the audio module on our PCB breadboard beside the Raspberry Pi Pico.
    • The 5V pin of the audio module is connected to the VBUS pin of the Pico, and GND is connected to GND.
    • The R-IN pin of the amplifier is connected to GPIO21 of the Pico.

    We also added a longer wire from the output of the audio amplifier to the speaker to complete the audio connection.

View all 9 instructions

Enjoy this project?

Share

Discussions

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates