Digital audio synthesizer (subtractive)
Embedded subtractive synthesizer on STM32F746 Discovery with USB MIDI input, wavetable-style oscillators, ADSR envelope, and real-time filtering through the onboard WM8994 codec.
Academic project developed with a classmate (ENIB).
- STM32F746
- C
- USB MIDI
- CMSIS-DSP
- WM8994
- ADSR
- IIR/SVF
- Python
Architecture
Built a real-time audio path on the STM32F746 Discovery: USB MIDI host for keyboard note/CC events, oscillator generation, state-variable filtering with LFO modulation, ADSR amplitude shaping, and stereo output through the WM8994 codec at 44.1 kHz.
Signal processing
Implemented sine, sawtooth, and square oscillators and explored FIR/IIR designs alongside a resonant state-variable filter. Supporting work covered bilinear transforms, CMSIS-DSP filter routines, and Fourier-based waveform construction for subtractive synthesis.
Verification
Used Python and Jupyter notebooks to generate wavetables and inspect waveforms offline, then validated behaviour on the Discovery board with live MIDI keyboard control and audio output.