These projects are a step up from the beginner projects and may involve soldering or more complicated programming.
Be sure to browse the beginner projects too or if you feel more adventurous, some of the advanced projects!
If you are new to this site or the Arduino platform, have a scan over the Getting Started page.
Please note: Everything on this site is provided “as is” with no explicit correctness or fitness for purpose implied or promised. Barring typos and mistakes in the writing up, by fluke or otherwise, I think they worked for me – that is the most I can promise you.
Warning! Be particularly wary about plugging any of these things into your expensive computers or musical equipment! Do so at your own risk! And make sure you double check everything first… an old, second-hand or hand-me-down music keyboard or computer is best for experimenting.
Kevin
Microcontroller Tone Projects
- Arduino Nano 12-Note Keyboard
- A stripboard design for a 12-button keyboard powered by an Arduino Nano.
- Arduino Multi MIDI Tone Module – Part 2
- Using several Arduinos each with a speaker as a simple polyphonic MIDI tone module.
- Arduino Tone Polyphony – Part 2 – Part 3
- Full note polyphony using an Arduino. Part 1 has 12 notes over MIDI. Part 2 has 12 notes played from local IO. Part 3 extends MIDI support to four octaves with 12-note polyphony.
- Pi Pico PIO Poly Tone Keyboard – Pi Pico PIO Poly Tone MIDI Keyboard
- Using the unique PIO system on the Raspberry Pi Pico for eight-tone polyphony. The second project drives it from MIDI.
- Pi Pico PIO Poly Tone MIDI “Pack”
- Building a tone-output “pack” for the Raspberry Pi Pico for eight-tone polyphony driven over MIDI.
- Arduino Four-tone Multi-tones
- Using all four timers on an ATmega32U4 Pro Micro board to give four-tone polyphony.
- An Even Tempered Pico
- Experimenting with different tuning temperaments with a Raspberry Pi Pico.
MIDI Control and Processing Projects
- Arduino Nano MIDI Keyboard
- Using the Nano stripboard button keyboard as a MIDI controller.
- Arduino LDR Pianola
- Using two light dependent resistors as a simple pianola to play two notes via MIDI.
- Arduino Piezo MIDI Controller
- How to use piezo sensors to create a simple MIDI drum controller.
- Arduino MIDI 7 Segment Controller
- A program change controller from two buttons and driving a 7-segment LED display directly from an Arduino.
- MIDI, CircuitPython, CPX and Pi Pico
- First experiments with MIDI using CircuitPython on the Circuit Playground Express and Raspberry Pi Pico.
- Pi Pico MIDI Matrix Decode – Part 2 – Part 3 – Part 4
- Using a Raspberry Pi Pico as a music keyboard MIDI controller.
- Arduino MT-32 Program Changer
- Using two potentiometers and an Arduino as a MT-32 voice (“patch” or “program”) selector.
- Raspberry Pi Pico MIDI Channel Router
- Using a Raspberry Pi Pico as a 1-in, 8-out MIDI channel splitter/router.
- Pico MIDI Keypad Mini Tenori-On
- A mini “Tenori-On” style MIDI controller from a Raspberry Pi Pico and a RGB keypad.
- Pico MIDI (H)Arp
- Using a Raspberry Pi Pico and the Pico Wireless module to derive MIDI signals from ambient Wi-Fi networks.
- Arduino Multi-Slider MIDI Controller – Part 2 – Part 3
- Using eight slider/fader pots as a MIDI controller with an Arduino Nano. Part 2 shows how to do the same with a multiplexer and Part 3 expands it to 16 pots.
- Arduino LDR MIDI Piano
- Using eight light dependent resistors and a multiplexer with an Arduino as an 8-note MIDI controller.
- Raspberry Pi Pico MIDI Channel Router
- Using a Raspberry Pi Pico as an eight-way MIDI channel router.
- Arduino Multi MIDI Merge – Part 2
- Building on all previous merge projects to combined hardware and software serial MIDI, and USB device and host MIDI, for a range of different Arduino boards. Part 2 shows how to provide slightly more intelligent merging for NoteOn/Off messages.
- Raspberry Pi Pico MIDI Channel Merger
- Using a Raspberry Pi Pico as an eight-way MIDI channel merger.
- Arduino MIDI Multi MUX Controller
- Using an Arduino with several multiplexers to handle 32 potentiometers as a MIDI controller.
- Arduino MIDI Button Voice Select – Pi Pico MIDI Button Voice Select
- Using several banks of buttons to provide voice and bank selections for an external synthesizer via MIDI. There is a version for the Arduino and the Raspberry Pi Pico.
- Raspberry Pi Pico SysEx “Librarian”
- Using a Pico and an off-the-shelf display to select and send “SysEx” files over serial MIDI.
- Arduino Touchscreen X-Y MIDI Controller – Part 2
- Using a cheap touchscreen display shield for an Arduino as a 2-dimensional (X-Y) MIDI controller.
- Arduino MIDI Rotary Encoder Controller – Part 2
- Using one of my Arduino MIDI Proto Shield PCBs to build a rotary encoder/7-segment display MIDI program changer.
- Raspberry Pi Pico MIDI Channel Muter
- Using a Raspberry Pi Pico and a Pimoroni RGB Keypad expander as a 16-way MIDI channel mute.
- Raspberry Pi Pico MIDI Note Balancer
- Using a Raspberry Pi Pico to “load balance” MIDI data from a polyphonic source across a number of monophonic sound generators.
- XIAO SAMD21, Arduino and MIDI – Part 2 – Part 4 – Part 5 – Part 6 – Part 7
- Connecting up three MIDI interfaces to a XIAO for some simple routing and merging. In Part 4 I add USB device MIDI; part 5 looks at USB MIDI host; and part 6 builds MIDI controllers using the XIAO expander module. Part 7 adds in I2C based IO modules.
- Arduino MIDI Multi Pot Controller
- A USB or serial MIDI multi-pot controller for Arduino.
- Arduino PCF8574 MIDI Controller
- How to use a PCF8574 I2C digital IO expander with an Arduino as a MIDI controller.
- Arduino PSS-680 Synth Editor – Part 2
- Using an Arduino to control the synthesis parameters of a Yamaha PSS-680 keyboard.
- Duppa I2C MIDI Controller – Part 2 – Part 3 – Part 4
- Building a MIDI controller out of an I2C LED ring and different options of potentiometers and rotary encoders.
Sequencer Projects
- Arduino MIDI Mux Step Sequencer – Part 2
- Using an eight-port multiplexer to provide eight potentiometers to control a simple MIDI step sequencer, then upgrading it to a sixteen-port version with sixteen pots.
- LOLShield MIDI Step Sequencer – Part 2
- Playing Conway’s Game of Life on a LOLShield and using it as an input to a MIDI step sequencer.
- Pi Pico Keypad MIDI Step Sequencer
- Building a step sequencer out of a Raspberry Pi Pico, RGB Keypad and MIDI interface.
- Pi Pico PIO Poly Tone Step Sequencer – Part 2
- Using the RGB Keypad as a step sequencer for the Pico’s tone generation, with the addition (in part 2) of a potentiometer and button for control.
- Multi-Mode MIDI Step Sequencer
- Using a Pro Mega 2560 as an eight step MIDI sequencer with a range of modes of operation.
- Arduino Mozzi Sample Drum Sequencer
- Creating a drum sequencer using Mozzi samples.
- Arduino Phased Step Sequencer
- Experimenting with the phased timing of “tracks” of an Arduino 8-step sequencer using my 16-pot MIDI slider controller.
- Arduino MIDI Rotary Encoder Step Sequencer
- Using a rotary encoder to control a multi-step, step sequencer.
- Arduino MIDI Rotary Encoder Multi-Track Step Sequencer
- Using NeoPixels and a rotary encoder to control a multi-track step sequencer.
- Arduino MIDI LED Step Sequencer with MCP3008
- An Arduino multi-analog input method step sequencer with programmable LEDs.
- Pi Day MIDI Sequencer
- Using the digits of Pi and the time it takes to calculate them to generate a MIDI sequence.
- Arduino USB MIDI Mux Step Sequencer
- Using an Arduino Uno reprogrammed into “USB MIDI” mode as a 16-potentiometer step sequencer.
- Arduino Slider Phased Rhythms
- Playing with phasing of drum tracks using 8 slider potentiometers.
- Arduino MIDI Multi MUX Step Sequencer
- Using an Arduino with several multiplexers to handle 32 potentiometers as a MIDI step sequencer.
- Arduino Euclidean Gate Sequencer – Part 2 – Part 3 – Part 4
- Theory, implementation, interfacing and full application of an Arduino Uno Euclidean Rhythm sequencer.
- XIAO USB Device to Serial MIDI Converter
- A MIDI USB device to serial converter using a XIAO SAMD21.
Touch Music Projects
- Arduino MPR121 MIDI Touch Piano
- Using four MPR121 breakout boards to provide a 48-note MIDI touch keyboard.
- Raspberry Pi Pico Capacitive Touch
- Directly using the GPIO of a Raspberry Pi Pico for a capacitive touch MIDI controller.
Percussion Projects
- Arduino Reich Relay
- Using five relays with an Arduino to play an actual piece of contemporary percussion music.
- Arduino MIDI Relay Drumkit
- Building a MIDI drum module from a collection of relays that responds to MIDI rhythm commands on channel 10, following the General MIDI standard for drumkits.
- Arduino MIDI Relay Servo Drumkit
- Adding “cymbals” by way of servo motors to the relay drumkit project. Once again, using MIDI channel 10 with General MIDI drum mappings.
- Arduino VS1003 Drum Machine
- Using the VS1003 with a 4×4 switch matrix as a simple drum machine.
- Arduino Mux Slider Phased Relays
- Using potentiometers (in this case sliders) to control the phase of ticking relays.
MIDI Interface Projects
- USBMIDI to MIDI Shield
- Using the design from previous projects to build a USBMIDI shield for an Arduino Uno out of a mini USB Host Shield and an Arduino Pro Mini.
- Raspberry Pi Pico Reversible MIDI Out
- Building a 3V compatible MIDI out for the Raspberry Pi Pico.
- Universal Microcontroller MIDI Module
- A stand-alone module for MIDI In/Out for either 3.3V or 5V microcontrollers.
- MIDI IN for the Raspberry Pi Pico
- A receive only (MIDI IN) interface for the Raspberry Pi Pico.
- Arduino and USB MIDI
- A summary of USB MIDI host and device interface projects.
MIDI Monitoring Projects
- Simple MIDI Monitor – part 2
- Building a stand-alone MIDI receive (in) circuit or using a MIDI shield and flashing the on-board LED of an Arduino whenever a note on message is received.
- Arduino MIDI Channel Monitor – Part 2
- Using a simple LED board and an Arduino Nano as a MIDI channel indicator.
- Wemos MIDI LED Matrix
- Lighting up LEDs in an off-the-shelf, 8×8 LED matrix in response to MIDI note on messages, using a Wemos D1 Mini.
- TFT MIDI Display
- Using a cheap 1.8″ colour display as a MIDI note monitor.
- TFT MIDI Display – Part 2
- Using the cheap 1.8″ display to graphically show notes being played over MIDI.
- TFT MIDI Display – Part 3
- A “Close Encounters of the Third Kind” inspired MIDI display using the cheap 1.8″ colour display.
- Arduino MIDI Analyser
- Using an Arduino’s digital input port and serial monitor as a simple MIDI “logic analyser”.
- Pico Dual-core MIDI Visualisations
- Using two off-the-shelf modules with a Raspberry Pi Pico for MIDI visualisations.
- Simple MIDI Serial Monitor – Part 3
- A “MIDI data dumper” that prints MIDI messages to the serial port, so requires an Arduino that isn’t using the default Serial link for MIDI. Part 3 uses an Arduino MIDI Proto Shield to build a Software Serial MIDI interface.
- XIAO SAMD21, Arduino and MIDI
- First steps with the XIAO SAMD21 in Arduino showing some example MIDI monitoring projects in action.
- ESP32 Simple MIDI Monitor
- Using an ESP32 with at least two serial ports as a simple MIDI monitor.
Synthesizer Module Projects
- Arduino MIDI VS1003 Synth
- Using an off-the-shelf MP3/MIDI/synthesizer module based on the VS1003 chip.
- Arduino MIDI VS1003 Shield – Part 2
- Building a simple shield for the VS1003 MP3/Synth module.
- Raspberry Pi, Clumsy MIDI and MT32-Pi – Part 2
- Building a DIY MT-32 synth module emulator from a Raspberry Pi.
- Zynthian and Clumsy MIDI
- Building a Zynthian software synthesizer from a Raspberry Pi and a Clumsy MIDI interface.
- Zynthian Revisited
- Adding a touchscreen and rotary encoders as an interface to a Zynthian on a Raspberry Pi.
- Arduino VS1053 General MIDI Synth – Part 2 – Part 3
- Building a “program changer” shield for a VS1053 GM synth. Part 2 produces a solderless breadboard version and part 3 (advanced) introduces a shift register to drive the display and provides an application for the Arduino MIDI Proto Shield PCB.
- Arduino OPL FM Synth – Part 2 – Arduino OPL FM Drum Machine
- Driving a Yamaha YM2413 OPL FM synthesis chip over MIDI via an Arduino Uno.
- Raspberry Pi Pico Synth_Dexed – Revisited
- Bulding a DX7 emulator from a Raspberry Pi Pico.
Digital to Analog Conversion Projects
- MCP4725 Digital to Analog Converter – Part 2
- Using an off-the-shelf MCP4725 based digital to analog converter to get a cleaner output signal.
- MCP4725 and Mozzi – Part 2
- A simpler way to get the MCP4725 working with the Mozzi synthesis library.
- MCP4725 Sample Player
- Creating a simple sample player with an Arduino Uno and a MCP4725 digital to analogue converter.
- MCP4725 MIDI Sample Player
- Triggering a stored sample via a MCP4725 digital to analogue converter, from MIDI.
- JQ6500 MP3 Player Module
- Playing MP3s from an off-the-shelf MP3 player module from an Arduino.
- JQ6500 MIDI MP3 Player Module
- Playing MP3s from an MP3 player module over MIDI via an Arduino.
Mozzi Synthesis Projects
- Arduino PWM MIDI Synthesis with Mozzi
- Using an off-the-shelf audio synthesis for hardware-supported music output on the Arduino.
- Arduino FM MIDI Synthesis with Mozzi – Part 2
- We return to the Mozzi library to implement a hardware-supported MIDI FM synthesis module with an Arduino.
- Arduino Mozzi String Synth
- Although based on the six-potentiometer additive synthesis advanced project, this allows you to preset the synthesis parameters, change waveforms and provides a starting point that sounds very “synth stringy”.
- Mozzi Output Circuit – Part 2
- How to build a simple Mozzi output filter circuit for use with an Arduino Uno or Nano. If you know how to solder, this is a beginner project.
- MozziByte Output Board
- Getting MIDI input running on the off-the-shelf MozziByte board for use with an Arduino Pro Micro.
- Arduino Light Mozzi Generator
- Trying out a range of Mozzi examples with light dependent resistors.
- Trinket FM Synthesis with Mozzi
- First experiments with Mozzi using the Adafruit Trinket M0, two potentiometers and some FM synthesis.
- Arduino Mozzi Sample Drum Machine
- Using the Mozzi Sample options to create a simple four-voice drum machine.
- Arduino Analog Keypad Mozzi Synth
- Using analog keypads rather than potentiometers to control a Mozzi FM synth.
- Arduino Mozzi FM Synthesis with MCP3008
- A remake of the FM Mozzi synthesizer using SPI/MCP3008 driven potentiometers.
- XIAO SAMD21, Arduino and MIDI – Part 3
- Running my Mozzi FM synthesis on the XIAO SAMD21.
- ESP32 and Mozzi
- Running Mozzi on the ESP32 WROOM module.
Digital Synthesis Projects
- AD9833 MIDI Signal Generator – Part 2
- Controlling two AD9833 signal generators via MIDI for some simple additive synthesis.
- Auduino Wavetable Granular Synthesis
- Creating a version of the Auduino granular synth that uses a wavetable as the “grain”.
- ML Synth Tools XIAO SAMD Synth
- Using the ML_SynthTools toolkit with the XIAO mini synth example application.
- Arduino Direct Digital (Additive) Synthesis
- PWM, DAC or R2R audio output from additive direct digital synthesis.
- ESP32 and PWM – Part 2 – Part 3
- Looking at how to produce PWM signals on the ESP32. Part 2 expands to several channels and Part 3 adds analog controls.
- ESP32 DAC Envelope Generator – Part 2
- Looking at using the built-in DAC of the ESP32 for envelope generation. Part 2 explores some hardware options for a VCA circuit that is compatible with the generated control signal.
Misc Hardware Projects
- Simple Synth IO Shield
- A relatively simple to build (if you are ok with soldering) shield containing links to break out the Arduino analog pins for use with other synthesizer projects.
- PC USB to Arduino Serial MIDI – Part 2
- Using an Arduino Leonardo-compatible device to provide a PC USB MIDI interface for other Arduino projects.
- 556 Timer Light Theremin
- Building an LDR-based “light Theremin” from a circuit based on the “Atari Punk Console”.
- Simple Potentiometer Breakout
- A simple breakout board containing four potentiometers, compatible with the Simple Synth IO Shield above.
- Arduino Top Octave Generator – Counter Experiments
- Experimenting with a 74HC393 binary counter and a 555/556 timer chip for audio frequencies.
- Vintage Phone MIDI Controller
- Using an old button-phone keypad as a MIDI controller using a Raspberry Pi Pico.
- Vintage Phone USB MIDI Controller
- A version of the above project but using the phone as a USB MIDI controller using a Raspberry Pi Pico.
- Toy Keyboard Matrix Decode with the Pi Pico
- Using a Pi Pico as the decoder for a discarded toy keyboard to turn it into a basic MIDI controller.
- Toy Keyboard USB Matrix Decode with the Pi Pico – Part 2
- A version of the above project using the keyboard as a USB MIDI Controller using a Raspberry Pi Pico. Part 2 also adds serial (UART) MIDI too.
- Raspberry Pi Pico MIDI Pedal Keyboard
- Using a Pi Pico as the decoder for an old organ pedal board.
- Arduino Guess the Frequency Game
- Using my Nano Audio Experimenter PCB to create a “guess the frequency” game.
- “Baby8” CV Step Sequencer
- Experimenting with cascading 4017 decade counters showing how the common “Baby 8” sequencer works.
- Cheap Mini Amplifiers
- Discussion of a range of cheap amplifier boards for use with other projects.
- Waveshare Zero, Pimoroni Tiny, and Neopixels
- Getting started with a range of Waveshare Zero format mini dev boards.
- Remotely Analysing a Keyboard Matrix
- Thinking through how to figure out a keyboard matrix from some photos and similar, but not exact, schematics.
- ESP32-A1S Audio Kit
- Some “notes to self” about using this ESP32-A1S audio development board.
Single Board Computers
- “Bare Metal” Raspberry Pi MiniDexed DX7
- Setting up a Raspberry Pi as a DX7 emulator using MiniDexed.
- A DX7 USB Dongle – PCB Design and Build.
- How to build MiniDexed into a “USB dongle” style configuration using a Raspberry Pi Zero.
- AIY Voice HAT and MiniDexed.
- How to use the original Google/RPi AIY Voice HAT with a Raspberry Pi for use with MiniDexed.