Summary of 12-NOTE POLYPHONY ON AN ARDUINO SYNTH
This article details [Kevin]'s project to build a 12-note polyphonic synthesizer using an Arduino Uno. Despite the ATmega328 chip's limitations, he achieved polyphony by utilizing timer interrupts and 12 counters to generate square waves on digital I/O pins, which are then mixed via resistors. The project was later expanded to include MIDI support and a tactile button keyboard, serving as an educational entry point into music electronics.
Parts used in the Arduino Polyphonic Synthesizer:
- Arduino Uno
- ATmega328 microcontroller
- Timer interrupt system
- 12 counters
- Digital IO pins
- Resistor arrangement
- MIDI interface
- Tactile button keyboard
When synthesizers first hit the scene back in the mid-20th century, many were monophonic instruments, capable of producing just one pitch at a time. This was a major limitation, and over time polyphonic synthesizers began to flood into the scene, greatly expanding performance possibilities. [Kevin] decided to build his own polyphonic synthesizer, but far from taking the easy route, he built it around the Arduino Uno – not a platform particularly well known for its musical abilities!
[Kevin]’s build manages 12-note polyphony, an impressive feat for the ATmega328 at the heart of the Arduino Uno. It’s done by running an interrupt on a timer at a steady rate, and implementing 12 counters, one per note. When a counter overflows, a digital IO pin is flipped. This outputs a square wave at a certain pitch on the IO pin, producing the given note. The outputs of 12 digital IO pins are mixed together with a simple resistor arrangement, producing a basic square wave synth. Tuning isn’t perfect, but [Kevin] notes a few ways it could be improved down the line.
[Kevin] has added features along the way, expanding the simple synth to work over several octaves via MIDI, while also building a small tactile button keyboard, too. It’s a project that serves as a great gateway into basic synthesis and music electronics, and we’re sure [Kevin] learned a lot along the way. We’ve seen other microcontroller synths before too, like this tiny device that fits inside a MIDI plug. Video after the break.
Source: 12-NOTE POLYPHONY ON AN ARDUINO SYNTH
- How did Kevin achieve 12-note polyphony on an Arduino Uno?
By running a timer interrupt at a steady rate and implementing 12 counters where each counter overflow flips a digital IO pin. - What type of wave does the synthesizer produce?
The device produces a basic square wave by mixing outputs from 12 digital IO pins. - Can this synthesizer work over several octaves?
Yes, features were added to allow it to work over several octaves via MIDI. - Does the synthesizer have a built-in keyboard?
Yes, a small tactile button keyboard was built for the project. - Is the tuning of this synthesizer perfect?
No, the tuning is not perfect, though improvements can be made down the line. - What makes this project a good gateway into synthesis?
It serves as a great introduction to basic synthesis and music electronics using a microcontroller. - What component is at the heart of this Arduino synth?
The ATmega328 microcontroller is the core component managing the polyphony. - How are the 12 notes outputted?
A square wave at a certain pitch is produced on the IO pin when its specific counter overflows.