These are the more advanced projects on the site, they involve complex programming ideas, fiddly electronics, some fine tweaking, or in some cases are just a little obscure!
Be sure to browse the beginner and intermediate projects first.
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 Tone Polyphony – Part 4 – Part 5
- Building full 12-note polyphony and a standalone switch keyboard interface into a shield for use with an Arduino Uno.
- Arduino Nano Multi-tone or PWM PCB – Part 2
- Design for a PCB carrier for four Arduino Nanos supporting either PWM or tone() speaker outputs.
- Arduino Tones – A New, New Hope
- Using a custom PCB to support four Arduino Nanos, with three tone/speakers per Nano.
MIDI Control and Processing Projects
- Arduino MIDI 7 Segment Controller – Part 2
- Building a stand-alone MIDI program and (optional) control change message controller from an Arduino Nano, buttons and an LED display with (optional) potentiometers.
- Arduino Touchscreen MIDI Controller – Part 2
- Using a cheap touchscreen display for an Arduino as a MIDI controller for notes. In part 2, it is used as a set of “virtual sliders” for MIDI control change messages.
- Arduino Touchscreen Mini MIDI Tenori-On – Part 2
- Making a Tenori-On style instrument from an Arduino and a cheap touchscreen.
- Raspberry Pi Pico Multi MIDI Router – Part 2 – Part 3 – Part 4 – Part 5
- Using a Raspberry Pi Pico as a six-IN, six-OUT MIDI router, with a python-configurable routing system. Part 2 shows a diy protoboard PCB version and Part 3 adds optional USB MIDI device and host. Part 4 describes the design for a custom PCB and part 5 provides the build guide.
- Arduino Uno Dual Merge MIDI “Shield” – Part 2 – Part 3
- A DIY two-IN, one-OUT, MIDI “shield” for an Arduino Uno. In part 2 I describe the process of designing a custom pcb for the shield, and in part 3, the process of building it.
- Arduino Touchscreen X-Y MIDI Controller
- Using a cheap touchscreen display for an Arduino as a 2-dimensional (X-Y) MIDI controller.
- Raspberry Pi Pico Multi MIDI Router – Revisited
- Another look at using a Raspberry Pi Pico as a MIDI router, this time providing a simple UI via an OLED display and rotary encoder.
- Raspberry Pi Pico MIDI Splitter – Part 2
- This design allows for a single MIDI IN to be split out using a Raspberry Pi Pico to up to 8 (optionally 9) MIDI OUT ports.
- Raspberry Pi Pico MIDI Splitter (TTL) – Part 2
- A version of the above that supports eight 5V level (TTL) serial MIDI outs rather then genuine MIDI ports.
- Getting Started with the Raspberry Pi Pico C/C++ SDK and TinyUSB MIDI
- Building a Tiny USB MIDI C/C++ application for the Raspberry Pi pico.
- Trinket M0 USB MIDI Interface for the Shruthi Synth
- Adding a USB MIDI interface to a Shruthi synth using a Trinket M0 acting as a USB host.
- XIAO MIDI Synth Board PCB – Part 2
- MIDI and potentiometer IO board for the Seeed Studio XIAO series of microcontrollers.
- XIAO SAMD21, Arduino and MIDI – Part 8
- Summary of XIAO based PCBs for use in MIDI applications.
- MIDI Matrix Patch Bay – Part 2 – Part 3
- Design and build guides for a hardware switching MIDI patch bay.
- Raspberry Pi 400 Cyberdeck MIDI Player
- Using a RPi 400 and Adafruit “cyberdeck” add-on as a MIDI player.
- Raspberry Pi Pico MIDI Touch Keyboard PCB Design and Build
- Pico-based capacitive touch PCB, one-octave MIDI controller.
- Arduino Drum Trigger to MIDI – Shield PCB and Build Guide
- Drum trigger to MIDI interface for an Arduino Uno.
- Forbidden Planet “Krell” Display – MIDI Notes – Part 2 – MIDI CC Controller – PCB Design – Build
- Several MIDI control projects using my “Krell” display module.
- Minimalist Lo-Fi Minimalism
- Algorithmically performing an extract from a Philip Glass opera.
- Atari 2600 Controller Shield PCB Revisited Part 2 – Part 3 – Arduino MIDI Atari Paddles – Arduino Atari MIDI Keypad – Atari Synth Cart Controller
- A range of posts leading to MIDI applications for my Atari 2600 controller interface for an Arduino Uno.
Sequencer Projects
- Multi-Mode MIDI Step Sequencer – CDR Format
- “CDR Panel” format version of an eight-step multi-mode MIDI step sequencer.
- “Baby8” CV Step Sequencer – Part 2 – Part 3 – Part 4
- A Baby8 style step sequencer PCB design, build and usage notes that is compatible with my ESP32 Educational Synth Thing.
- Arduino Clock Generator Shield PCB – Build Guide
- Design for an Arduino Uno shield to support 6-channel clock/GATE generation.
Touch Music Projects
- Arduino Touch Piano – Part 2
- Building a 12-note chromatic, one-octave touch-sensitive keyboard.
- Arduino MIDI Touch Piano
- Using the touch-sensitive keyboard to generate MIDI note messages.
- Touch Keyboard PCB – Part 2
- A PCB design to provide the footprint for a “touch” music keyboard.
- Arduino Touch Music – Revisited
- Revisiting the above projects with the Touch Keyboard PCB.
- Raspberry Pi Pico MIDI Touch Keyboard PCB Design – Build
- A touch keyboard based on a Raspberry Pi Pico.
- Pico Touch Board PCB Design – Build – Audio
- A touch MIDI controller based on the Raspberry Pi Pico.
Percussion Projects
- Arduino Drum Trigger to MIDI Shield PCB – Build Guide
- Design of an Arduino Uno shield for taking drum trigger inputs and generated MIDI events.
MIDI Interface Projects
- Mini USB-MIDI to MIDI
- Building a bespoke USB-MIDI to MIDI converter in a neat, small unit from an Arduino Pro Mini and a mini USB Host Shield.
- MIDI In-Out Half-Shield
- DIY proto-board MIDI In and Out shield that is just 6 pins wide on an Arduino Uno.
- Raspberry Pi Pico MIDI “pack” Interface
- A MIDI In/Out “pack” for the Raspberry Pi Pico.
- Arduino I2C MIDI Interface – part 2 – part 3 – part 4
- A series of experiments with MIDI over the I2C bus.
- Raspberry Pi Pico I2C MIDI Interface – part 2 – part 3 – part 4
- A further set of experiments with MIDI over I2C using a Raspberry Pi Pico.
- Arduino RF24 MIDI Interface – part 2
- A set of experiments with MIDI using nRF24L01 radio modules.
- Arduino Nano MIDI IN “Shield”
- DIY proto-board “shield” type MIDI IN module for an Arduino Nano.
- Raspberry Pi Pico MIDI Module PCB – Part 2
- A PCB design for a Raspberry Pi Pico MIDI interface.
- 3V3 MIDI Module PCB – Part 2
- The design for a custom PCB version of 3V3 compatible MIDI IN and OUT circuits.
- Raspberry Pi Pico MIDI Proto Expander – Part 2
- A Raspberry Pi Pico MIDI interface with an additional expansion area for additional modules.
- Arduino MIDI Proto Shield – Part 2
- A PCB design for an Arduino shield with a MIDI IN/OUT interface and a built-in prototyping area.
- Raspberry Pi Pico Dual MIDI Carrier – Part 2
- A bespoke PCB for adding a Raspberry Pi Pico to a specific dual-MIDI interface that was made for me.
- Arduino Stackable TRS MIDI Interface
- Using my Arduino MIDI Proto Shield to build a stackable MIDI interface using TRS sockets.
- XIAO MIDI Proto PCB – Part 2
- A MIDI interface with prototyping area for the Seeed Studio XIAO series.
- Raspberry Pi Zero MIDI PCB – Part 2
- A MIDI interface for the Raspberry Pi Zero.
- Pico MIDI “Pack” PCB Design and Build
- A PCB version of my Pico MIDI “pack” style interface for the Pico.
- Korg Volca Modular MIDI to CV PCB Design and Build
- A ATtiny85 based MIDI to CV converter with a Korg Volca Modular compatible CV/Gate output.
- Arduino Pro Mini MIDI USB HOST PCB Design and Build
- USB Host MIDI to serial MIDI converter based on an Arduino Pro Mini or an Adafruit Trinket M0.
- Nano MIDI Proto PCB – Build
- MIDI interface and prototyping board for the Arduino Nano.
- Waveshare Zero MIDI Proto PCB – Build
- MIDI interface and prototyping board for Waveshare Zero format microcontrollers (ESP32, RP2040, etc).
- Using a Cheap 5V MIDI Interface at 3V3
- How to convert an Arduino MIDI Shield for 3V3 operation.
- Arduino Pro Mini MIDI USB CV PCB Design, Build and in use
- USB MIDI to Serial MIDI and CV/GATE converter based on an Arduino Pro Mini and USB Host shield.
MIDI Monitoring Projects
- LOLShield MIDI Waterfall Display
- Using “lots of LEDs” in a shield as a waterfall display for MIDI notes.
- OLED MIDI Display – Part 2
- Using two cheap OLED displays as a MIDI monitor (with limited results).
- LOLShield MIDI Lighting Effects
- Using the “lots of LEDs” shield for simple animations triggered from MIDI notes.
Digital to Analog Conversion Projects
- MCP4725 Digital to Analog Converter – Part 3
- Using a more bespoke library with the MCP4725 digital to analog converter for better performance.
- MCP4725 and Mozzi
- Using a MCP4725 digital to analog converter with Mozzi. Just about.
- JQ6500 MIDI MP3 Player Module – Part 2
- Building a shield for the JQ6500 MP3 Player Module and driving it over MIDI.
- Arduino PWM Sound Output
- A detailed discussion about using PWM on an ATmega328/Arduino Uno for audio output.
- Arduino Audio Experimenter Shield PCB
- Design for an Arduino Uno shield to support experiments in audio with PWM, R2R, and MCP4725 DAC output options.
Synthesizer Module Projects
- MT32 Clumsy MIDI Program Changer and Filter
- Building an add-on board for my MT32-Pi and Clumsy MIDI synth “module”.
- MT32 Clumsy MIDI Simple MIDI Filter
- An alternative add-on board for my MT32-Pi and Clumsy MIDI synth “module” with a simpler, “hard-coded” interface, but better performance for MIDI filtering.
- Zynthian Revisited – Part 2 – Part 3 – Part 4
- Building a custom IO board for a Zynthian synth.
- MiniDexed Raspberry Pi IO Board – Part 2 – Part 3 – V2 Design – V2 Build
- Two PCB designs for a Raspberry Pi add-on module to support MiniDexed.
- Arduino OPL FM Synth – Part 2
- Experiments with a Yamaha YM2413 OPL FM Synth chip.
- MiniDexed TX816 – Parts 1 to 7
- Details of a design for a Raspberry Pi Pico based TX816 style IO interface for MiniDexed.
- MiniDexed Raspberry Pi V1 IO Board – Part 2
- A PCB design for a Raspberry Pi V1 add-on module to support MiniDexed.
- RPi 400 MIDI and Audio PCB Design – Part 2
- A PCB design for a Raspberry Pi 400 add-on module to support MIDI, audio and optionally MiniDexed.
- Raspberry Pi Pico Synth_Dexed? – Part 2, Part 3, Part 4
- Details of my experiments building the Synth_Dexed, DX7 emulation, library for the Raspberry Pi Pico.
Mozzi Synthesis Projects
- Arduino Multi-pot Mozzi FM Synthesis
- Using six potentiometers to control the FM synthesis parameters of a Mozzi-based Arduino MIDI synthesizer module.
- Arduino Mozzi Additive Synthesis
- Using the six potentiometers again to control the additive synthesis of a Mozzi-based Arduino MIDI synthesizer.
- Arduino Multi Mozzi String Synth – Part 2
- A four-note “polyphonic” (if you squint) version of the MIDI Mozzi String synth.
- Arduino Light Mozzi Generator – Part 2
- A simple “light controlled” Mozzi example with some great sound effects.
- Trinket USB MIDI Multi-Pot Mozzi Synthesis – Part 2 – Part 3
- A USB MIDI host for a Trinket M0 based Mozzi synth. Part 2 starts to add polyphony and part 3 provides some optimisations to improve the MIDI and note handling.
- SAMD USB MIDI Multi-Pot Mozzi Synthesis
- Porting Mozzi to SAMD51 based microcontroller boards such as the ItsyBitsy M4.
- Arduino Mozzi Experimenter Shield PCB and Arduino Nano Mozzi Experimenter Shield PCB
- Designs for experimenter shields for use with Mozzi. There is one in Arduino Uno shield form factor and one designed for use with an Arduino Nano.
- Arduino Nano Multi-pot FM and String Synthesis
- Using the Nano Multi-PWM carrier board for multi-Mozzi synthesis applications.
- ESP32 WROOM Mozzi Experimenter PCB Design and Build
- Prototyping board with DAC output, MIDI and 8 potentiometers for use with an ESP32 DevKit.
Digital Synthesis Projects
- Arduino R2R Digital Audio – Part 2
- This starts to use the Arduino for direct digital synthesis (DDS), using an R2R resistor ladder as the digital to analogue converter.
- Arduino R2R Digital Audio – Part 3
- This creates a simple wavetable synthesizer using the R2R shield built for the previous two projects.
- Arduino MIDI R2R Digital Audio – Part 2
- Taking the R2R shield from an earlier project and adding MIDI. Part 2 adds some envelope processing to shape the audio for better results.
- Auduino Granular Synthesis – Part 2
- A detailed analysis of the Auduino code for granular synthesis.
- AD9833 Poly Signal Generator – Part 2
- Using six AD9833 signal generators on a custom shield with an Arduino Uno.
- AD9833 MIDI Poly Signal Generator
- Adding MIDI and four different modes of polyphony to my six-AD9833 signal generator shield.
- Arduino Slider PWM Waveform Generator – (and with MIDI)
- Using 16 slider potentiometers to “draw” a waveform to be played out using PWM.
- Arduino MIDI Slider R2R Waveform Generator – Adding a display
- Using 16 slider potentiometers to “draw” a waveform to be played out using an R2R resistor ladder.
- Arduino Twitter Follower R2R Tones
- Generating Arduino tones from Twitter follower data.
- Arduino Touchscreen PWM Sound Output
- Using a touchscreen to draw- a waveform for output via PWM.
- Arduino Touchscreen Auduino
- A touchscreen version of the Auduino synthesizer.
- Auduino Slider Waveform Granular Synthesis
- Linking Auduino with wavetable generation from 16 slider potentiometers.
- Nano Audio Experimenter Sheild PCB
- Audio experimenter shield for an Arduino Nano that includes MIDI, SSD1306 display, MCP4725 DAC, audio output and pots.
Misc Hardware Projects
- Simple Passive Audio Mixer
- A “quick and dirty” passive, “six channel” mixer, with lots of limitations, no controls, and limited audio quality! But it is useful for me as you’ll see in later projects.
- Keyboard Matrix Decode – Keyboard MIDI Matrix Decode
- Decoding the music keyboard from an old otherwise “junk” keyboard.
- Single Pin MIDI Channel Selector – Part 2
- A small add-on board for an Arduino Uno to provide a MIDI channel selector using 4 “DIP switches” connected to a single IO pin.
- Toy Keyboard Tone Piano – Part 2 – Part 3 – Part 4 – Part 5
- Replacing the insides of a toy music keyboard with an Arduino. Part 2 runs the “Oskitone Scout” code to turn it into a mini-synth. Part 3 uses more sophisticated decoding of the keyboard to gain more IO pins back and adds a volume control. Part 4 adds a simple pitch bend function and part 5 embeds an Arduino in the keyboard.
- Vintage Rotary Phone MIDI Controller – Part 2 – Part 3 – Part 4 – Part 5 – Part 6 – Part 7
- A series exploring how to interface an Arduino to a vintage rotary phone for musical purposes. The first part looks at the hardware; part 2 looks at software to read the pulses; part 3 is a simple MIDI note generator; part 4 is a MIDI program changer; part 5 is a simple random note MIDI sequencer; part 6 builds it all into an old ADSL filter box; part 7 adds a “mode” switch.
- Yet Another Toy Keyboard USB MIDI Controller – Part 2
- Another project taking apart and adding MIDI to a toy keyboard. Part 2 adds PWM audio output, serial MIDI and additional controls.
- Arduino MIDI Telephone Ringer – Part 2 – Part 3
- Using an Arduino, H-Bridge motor driver and a boost converter to make a vintage telephone ring. Part 2 extends it to two phones and part 3 puts it all into a compact box.
- Arduino MIDI Telephone Ringer Revisited
- Taking another look at driving old telephones over MIDI using an Arduino. This time using a KS0835F SLIC module.
- Pico, Nano, Micro Keyboard Matrix PCB – Part 2
- A breakout board for a Raspberry Pi Pico, Arduino Nano, or Sparkfun Pro Micro to make keyboard matrices.
- Tactile Button Keyboard PCB – Part 2
- A music tactile button keyboard supporting either a direct matrix connection, on-board Arduino nano, or 74HC138.
- Arduino OPL Bus Sniffer – Part 2
- Using an Arduino to sniff commands to a YM2413 OPL chip.
- MIDI Matrix Patch Bay – Part 2 – Part 3
- Design and build guides for a hardware switching MIDI patch bay.
- Atari Punk Console PCB – Part 2
- A simplified version of the classic electronic noise-making machine.
- Simple Square Wave Oscillator PCB Design – Part 2
- A 555 timer based simple oscillator.
- 3.3V Serial MIDI THRU
- A variation of the MIDI patch bay used to provide a 3V3 level compatible, serial MIDI THRU.
- Arduino Guess the Frequency Game
- Using my Nano audio experimenters PCB for a frequency guessing game.
- Diagnosing and attempting to fix a Yamaha DX100 – Part 2
- Detailing my diagnostic process for attempting to fix a vintage DX100 synthesizer.
- Building my Oskitone Poly555
- Details of my build process for the Oskitone Poly555 that I’ve built.
- Arduino EEPROM Reader PCB Design – Part 2
- Design and build guide for my Arduino Uno EEPROM reader shield.
- Educational DIY Synth Thing – Part 2 – PCB Design – PCB Build then parts 3 to 7.
- Design for an educational synth thing based on an ESP32.
- Educational DIY Synth Thing meets Korg Volca Modular
- Notes on how to link up a Korg Volca Modular to my ESP32 Educational Synth Thing.
- Proto Pedal PCB Design – Build Guide – Usage Notes
- Prototyping board and circuitry for guitar pedals.
- Atari 2600 Controller Shield PCB Design – Build Guide – Revisited
- A simple breakout for adding Atari 2600 controllers to an Arduino Uno.
- Arduino Pro Mini USB Host Proto PCB Design – Build Guide
- A prototyping board for an Arduino Pro Mini with USB Host shield.
- ESP32 S3 DevKit Experimenter PCB Design – Build Guide
- A prototyping board for ESP32-S3 DevKitC with MIDI, PWM and potentiometers.
- Z80 and AY-3-8910 and Arduino and AY-3-8910 – Part 2 – Part 3 – Part 4 – Part 5
- Driving a AY-3-8910 programmable sound generator from an Arduino Nano.
- SP0256A-AL2 Speech Synthesis and Arduino and SP0256A-AL2 – Part 2 – Part 3 – Part 4 – Part 5
- Driving a SP0256A-AL2 Speech Synthesizer chip with an Arduino.
- Arduino with Multiple Displays – Part 2 – Part 3 – PCB Design – Build – Expander Board
- Using an Arduino and then Waveshare Zero format board to driver multiple, small SPI TFT colour displays.
- Simple PWM Filter PCB Design – Build
- Simple low-pass filter breakout board for PWM audio signals.
- AY-3-8910 Experimenter PCB Design – Build
- Using an Arduino Nano to drive up to four vintage AY-3-8910 sound chips.
- Arduino SP0256A-AL2 Shield Design – Build
- An Uno shield format board for the SP0256A-AL2 speech synth chip.
- Arduino AY-3-8910 Shield Design – Build
- An Uno shield format board for the AY-3-8910 sound chip.
- Mini Listening Post
- A series of experiments attempting to create some of the building blocks that might support a future mini version of the Listening Post artwork.
Analog, Modular, EuroRack
- EuroRack 6HP MCU Experimenter Module – Build Guide – Usage Notes
- A prototyping board for EuroRack designs using either an Arduino Nano or a Raspberry Pi Pico.
- EuroRack 6HP MCU Pots and Jacks PCB – Build Guide
- A pots and jacks breakout board for use with the above.
- EuroRack 6HP Arduino Mozzi Module
- An example module using the above boards. This supports using an Arduino Nano with Mozzi. Sample applications include:
- EuroRack 6HP Daisy Seed MCU PCB Design – Build Guide
- A version of the MCU board for the above designed for use with a DaisySeed.
- MiniDexed EuroRack PCB Design – Build Guide
- A prototype MiniDexed in 8HP EuroRack format.
- Forbidden Planet “Krell” Display EuroRack Module
- A version of my “Krell” display in EuroRack format.
Single Board Computers
- “Bare Metal” Raspberry Pi Synth – Part 2 – Part 3
- Exploring how to build “bare metal” music applications for the Raspberry Pi. Part 2 adds some IO; part 3 uses an off-the-shelf analog IO board.
- Raspberry Pi v1 Model B Synth Board – Part 2 – Part 3
- A DIY potentiometer and MIDI board for a Raspberry Pi v1 Model B (the original one!).
- Raspberry Pi Zero PWM Audio Interface and Raspberry Pi I2S Audio Interface.
- Two different ways to get audio output from a Pi Zero or Pi V1 Model B, one using PWM and the second using an external I2S digital to analog converter.
- “Bare Metal” Raspberry Pi MiniDexed DX7 – Part 2
- Building a DIY “HAT” for a Raspberry Pi DX7 emulator using MiniDexed.
- XIAO Pi USB MIDI Device PCB – Part 2
- A USB MIDI Device “co-processor” board for the Raspberry Pi based on the Seeed Studio XIAO SAMD21.
- RPi Dual MiniDexed PCB – Part 2
- A IO board for linking two Raspberry Pis together for a dual MiniDexed unit.
- 16 Tone Generator MiniDexed
- A summary of the various experiments to create 16 DX7 tone generators on Raspberry Pis.
- RPi Zero MiniDexed IO Board PCB Design – Part 2
- A IO board for MiniDexed for use with a Raspberry Pi Zero.
- RPi 5 Quad Stereo Sound with PCM5102A – PCB Design – PCB Build
- Using four PCM5102 modules for quad stereo sound with a RPi 5.