Polyphonic midi synthesizer
Jackie Lam and I created a simple polyphonic synthesizer module on a board with a PIC18F microcontroller and Xilinx Spartan 3 FPGA. While many hobbyist music generation projects only allow one simultaneous note to be played, using the modular nature of FPGA code we were able to easily achieve 8 notes of polyphony and could produce many more. We also implemented a basic attack/delay/sustain/release (ADSR) type filter for the note amplitude to provide a more interesting sound.
Overall the project was pretty straightforward, but one of the main challenges was making efficient use of the limited multipliers on the FPGA. Multipliers are used for scaling the amplitude of each of the notes, and careful switching of the multiplier inputs and outputs was required to reuse the same multiplier blocks for multiple note signals.
© 2015 by Ian Bullock
Contact: ian.bullock @yale.edu