The build is based on the Arduino Uno, the humble mainstay of the Arduino line. It’s hooked up to an ILI9488 color touchscreen display, which acts as the primary user interface. Using a stylus, or presumably a finger, the user can draw directly on the screen to specify the desired waveform for the synth to produce. The Arduino reads the step-by-step amplitude values of the drawn waveform and uses them to synthesize audio according to MIDI messages received over its serial port. Audio output is via PWM, as is common in low-cost microcontroller projects.
Every semester at one of [Bruce Land]’s electronics labs at Cornell, students team up, and pitch a few ideas on what they’d like to build for the final project. Invariably, the students will pick what they think is cool. The only thing we know about [Ian], [Joval] and [Balazs] is that one of them is a synth head. How do we know this? They built a programmable, sequenced, wavetable synthesizer for their final project in ECE4760.
First things first — what’s a wavetable synthesizer? It’s not adding, subtracting, and modulating sine, triangle, and square waves. That, we assume, is the domain of the analog senior lab. A wavetable synth isn’t a deep application of a weird reverse FFT — that’s FM synthesis. Wavetable synthesis is simply playing a single waveform — one arbitrary wave — at different speeds. It was popular in the 80s and 90s, so it makes for a great application of modern microcontrollers.
The difficult part of the build was, of course, getting waveforms out of a microcontroller, mixing them, and modulating them. This is a lab course, so a few of the techniques learned earlier in the semester when playing with DTMF tones came in very useful. The microcontroller used in the project is a PIC32, and does all the arithmetic in 32-bit fixed point. Even though the final audio output is at 12-bit resolution, the difference between doing the math at 16-bit and 32-bit was obvious.
A synthesizer isn’t useful unless it has a user interface of some kind, and for this the guys turned to a small TFT display, a few pots, and a couple of buttons. This is a complete GUI to set all the parameters, waveforms, tempo, and notes played by the sequencer. From the video of the project (below), this thing sounds pretty good for a machine that generates bleeps and bloops.
If you’re an AVR coder, or interested in direct-digital synthesis or PWM audio output, you should have a look at his code (zip file). If you’d just like to use the chip to make some tunes, have a gander at the video below the break.
For all the wonder of dulcet tones coming from a century-old music box, we’ve got to admit that [Markus]’ wavetable synthesis build is still pretty impressive. Of course, the Internet cred gained by doing a demo of Still Alive helps too.
Wavetable synthesis stores a one cycle long waveform in RAM that can be played on a loop at varying frequencies. This technique has been around since the late 70s and can be found in a lot of the classic synths of the 80s and serves as the basis for Atari MOD music and the Game Boy chiptunes produced with Little Sound DJ
[Markus] found a pair of battery-powered laptop speakers and decided a music box would be a wonderful project. Inspired by [ChaN]’s ATtiny wavetable synthesizer, [Markus] decided to up the ante and use a PIC32 microcontroller to make the programming a little more digestable. The entire project (with an awesome dead bug soldering job) is nearly as large as the PIC itself.
[Markus] threw up the source code along with some Python scripts to convert waveforms and MIDI files into something the chip can understand. Before you check that out, be sure to look at the Still Alive demo.