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
  • LinkedIn
bottom of page