top of page

Real-Time Embedded MIDI Synthesizer

Another Freshman Project

In addition to my main Freshman Project, I enrolled in another project class where we were tasked with programming a micro-controller to synthesize sound from MIDI commands.

Piano.png
Real-Time Embedded MIDI Synthesizer: Projects

Specs

  • Programmed the UART to accept MIDI data appropriately

  • Wavetable creation

  • Programming using fixed point math for all operations

  • Maintaining Phase (sample pointer) with integer and fractional parts

  • Data table lookup for pitch (key) to sampling increment conversion

  • Volume Scaling of sound with key velocity

  • Data table lookup and 16-bit data fetch

  • Synthesis via linear interpolation

  • Saturation arithmetic

  • Simple digital filter with ADSR envelope

  • Master volume control

Real-Time Embedded MIDI Synthesizer: About

Notes

Because floating-point arithmetic is computationally expensive, all real-time computation is done with integer types. Using Q-Format (fixed-point) arithmetic, operations on fractional data can be done as efficiently as with integers.

To achieve higher efficiency, lookup tables are initialized to avoid repetitive computation. Many of the elements are computed with float types, but are then converted to Q-Format to be placed in the tables.

Real-Time Embedded MIDI Synthesizer: About
bottom of page