Annabel Lee
Duke University Undergraduate
Majors: Electrical Engineering, Theater Studies

FPGA-based Synthesizer

A class final: A polyphonic synthesizer that interfaces with MIDI instruments, all running on a custom soft-core FPGA. This one has it all: i2s! MIDI! WS2812 signaling protocol! Verilog!

Overview

This was a final project for ECE 350 - Digital Systems. After designing our own processors, we worked with a partner to “do something cool with them”. My partner Eric and I decided on a synthesizer, as we’re both musicians and and were finalists in a song making competition from our Signals and Systems class. Our original idea was to also create mechatronic puppets that would “sing” along to the synthesizer as it was played: this would also allow us to flex our DSP muscles and implement some sort of spectrum analyzer. However, the short 3-week period we were given to implement all of our ideas resulted in us dramatically tightening our scope.

In the end, we were still able to implement most of our goals. These included:

  • Memory-mapped I/O
  • MIDI input interface
  • I2S audio output
  • Waveform generation: Sawtooth, Square, Triangle, and Sine Waves
  • Pitch Bend
  • Polyphonic Synthesis
  • Spectrum Analyzer: FFT-inspired Discrete Cosine Transform
  • WS2812b LED interface (not successfully integrated)

Hardware

I really jumped at the oppurtunity to play with a lot of hardware for this project, as I am apt to do, and the final circuit looked something like this:

Demo

To see (and hear) it in action, you can watch our demo video below: