This page details various techniques I’ve used on this blog, with a list of some of the projects where you can find out more. It doesn’t list all projects using the techniques, but refers to the project write-up that either gets you started with that technique or where it is described in the most detail.
If you are after a more complete/consistent education in electronic music, there are some key resources on the Getting Started page.
Don’t forget you can browse the tag cloud on the right to zoom in on anything that looks interesting.
Synthesis Techniques
- Creating polyphony similar to Arduino’s tone() function – Arduino Tone Polyphony.
- Granular synthesis – Auduino Granular Synthesis.
- Direct digital synthesis from a wavetable – Arduino R2R Digital Audio – Part 3.
- Top octave generation – Arduino Top Octave Generator.
- PWM for audio – Arduino PWM Sound Output.
- Using a DAC, PWM or R2R for direct digital synthesis – Arduino Direct Digital (Additive) Synthesis.
- The Mozzi Synthesis Library is used in many projects, so many that it has a whole category of its own!
- The entire Mozzi category
- Getting started with Mozzi – Arduino PWM MIDI Synthesis with Mozzi.
- FM synthesis – Arduino FM MIDI Synthesis with Mozzi.
- Additive synthesis – Arduino Mozzi Additive Synthesis.
- A simple hardware output circuit – Mozzi Output Circuit.
- Mozzi sample playing – Arduino Mozzi Sample Drum Machine.
Specific Synthesizer Modules and Hardware
- Using a VS1053 or VS1003 MP3/MIDI synthesizer module – Arduino MIDI VS1003 or VS1053 Synth.
- Introduction to the MT32-Pi – Raspberry Pi, Clumsy MIDI and MT32-Pi.
- Zynthian – Zynthian and Clumsy MIDI.
- MiniDexed:
Sequencers and Rhythm Machines
- Basic MIDI step sequencer – Arduino MIDI Step Sequencer
- Multi-potentiometer MIDI step sequencer – Arduino MIDI Mux Step Sequencer
- Keypad step sequencer – Pi Pico Keypad MIDI Step Sequencer
- Multi-mode MIDI step sequencer – Multi-Mode MIDI Step Sequencer
- MIDI drum sequencer – Arduino Mozzi Sample Drum Sequencer
- Rotary encoder MIDI step sequencer – Arduino MIDI Rotary Encoder Multi-Track Step Sequencer
Hardware and Microcontroller Techniques
- ATmega timers:
- Auduino Granular Synthesis – Part 2
- Arduino Top Octave Generator
- Arduino PWM Sound Output
- Configuring the PWM modes of timers – Arduino PWM Sound Output.
- Potentiometers and Analog Inputs
- Using multiple potentiometers – Arduino MIDI Multi Pot Controller
- Using light dependent resistors instead of potentiometers – Arduino Light Tone Generator.
- Balancing IO scanning with control functions – Arduino Multi-pot Mozzi FM Synthesis.
- Using an analog multiplexer – Arduino MIDI Mux Step Sequencer.
- SPI MCP3008 analog to digital converter – Arduino Mozzi FM Synthesis with MCP3008
- Digital Inputs and Switches
- Music keyboard key decoding – Keyboard Matrix Decode.
- Using capacitive touch sensors directly with an Arduino – Arduino Touch Piano.
- Or using a MPR121 breakout board – Arduino MPR121 Touch Piano.
- Piezo elements as sensors – Arduino Piezo MIDI Controller.
- Decoding digital switches from a single analog input port – Single Pin MIDI Channel Selector.
- Switch “debouncing” – Multi-Mode MIDI Step Sequencer – CDR Format – Part 2.
- Displays and Visualisation
- Driving a 7-segment display directly from an Arduino – Arduino MIDI 7 Segment Controller.
- Charlie-plexing LEDs – LOLShield MIDI Waterfall Display
- Programmable LEDs or “Neopixels” – Arduino MIDI Rotary Encoder Step Sequencer – Part 3
- Audio Output
- A resistor ladder digital to analog converter – Arduino R2R Digital Audio.
- PWM audio output filter – Arduino PWM Output Filter Circuit.
- Circular buffers to better schedule IO – Arduino OPL Bus Sniffer and Arduino MIDI Logic Analyser.
- Binary counters – Arduino Top Octave Generator – Counter Experiments.
- Using the I2C bus to interface to expansion modules – Arduino MPR121 Touch Piano.
- PCB design with KiCad – Arduino Uno Dual Merge MIDI “Shield” – Part 2
MIDI Interfaces
- A summary of MIDI – MIDI Connections Cheat Sheet
- The basics of MIDI OUT – Arduino Simple MIDI Controller.
- The basics of MIDI IN – Simple MIDI Monitor – part 2.
- Hardware and Software Serial MIDI – Arduino Serial MIDI Program and Control Messenger
- USB MIDI – Arduino and USB MIDI
- USB MIDI device – PC USB to Arduino Serial MIDI
- Host USB MIDI to Serial MIDI – Simple USB-MIDI to MIDI.
- DIY MIDI interfaces for 5V logic microcontrollers – Arduino MIDI Interfaces.
- DIY MIDI interfaces for 3.3V logic microcontrollers – DIY MIDI Interfaces.
- MIDI signals and protocol – Arduino MIDI Logic Analyser and Simple MIDI Serial Monitor.
- Multi-interface MIDI – Arduino Multi MIDI Merge
- Unusual (experimental) MIDI transports – Arduino I2C MIDI Interface and Arduino RF24 MIDI Interface
MIDI Techniques
- Sending Program and Control change messages – Arduino Serial MIDI Program and Control Messenger.
- Smoothing analog readings for mutli-pot control changes – Arduino MIDI Multi Pot Controller.
Arduino Programming
- The Arduino tone() function – Arduino Tone Generator.
- Direct Arduino PORT input/output – Arduino R2R Digital Audio.
- Issues mixing direct PORT I/O,, digitalWrite and multi-threading – Arduino MIDI Slider OLED R2R Waveform Generator.
- Using the TimerOne library for multi-threading – Arduino R2R Digital Audio – Part 2.
- Arduino random() function – Multi-Mode MIDI Step Sequencer – CDR Format – Part 2.
- Fixed point arithmetic – Arduino R2R Digital Audio – Part 3.
- Using the Arduino Serial Plotter – Arduino Piezo MIDI Controller.
- Disabling the built-in UART – Arduino VS1053 General MIDI Synth – Part 2.
Raspberry Pi Pico Programming
- Raspberry Pi Pico – using Micropython and using Circuitpython
- Raspberry Pi Pico PIO – Pi Pico PIO Poly Tone Keyboard.
- Multi-core Programming in Micropython – Pico Dual-core MIDI Visualisations.
- Raspberry Pi Pico PIO serial ports – Raspberry Pi Pico MIDI Channel Router.
- Tiny USB MIDI in the C/C++ SDK – Getting Started with the Raspberry Pi Pico C/C++ SDK and TinyUSB MIDI.
Raspberry Pi Programming
- “Bare Metal” Raspberry Pi programming – “Bare Metal” Raspberry Pi Synth
- Audio output on the Pi V1 and Pi Zero – Using PWM and using I2S with an external DAC