Throwback Thursday! Synthesizer code from 2008! ported to run on the Daisy Seed

STM32CubeIDE Synthesizer code ported to run on Daisy Seed board.

This is a port of a 6-Voice polyphonic VA Synthesizer I wrote back in Summer of 2008.
It runs fine on the Daisy Seed board, but still need to get USB-MIDI to work, and output thru the Audio Codec chip instead of thru the STM32H750’s 12-bit DACs.

If you like using STM32CubeIDE, and prefer the extended functionality of the ST-Link debugger, it is a lot of fun to step thru the code and use “Live Expressions” to watch variables move in real-time.

Here are the specifications:

  • 6 voice polyphonic.
  • Dual oscillator per voice.
  • VCA per voice.
  • VCF (4-pole Resonant low-pass) per voice.
  • Separate ADSR’s for VCA and VCF
  • MIDI Editable parameters.
  • Waveform select for both oscillators; Saw, Square (with pw/pwm).
  • Oscillator (1/2) mix.
  • Oscillator 2 De-tune.
  • Scale for Oscillator 2.
  • LFO for Pitch Modulation Wheel.
  • LFO for Pulse Width Modulation on each oscillator.
  • LFO for VCF Modulation.
  • Keyboard follow for VCF and ENV.
  • Keyboard velocity routable to VCA and/or VCF.
  • VCF envelope level.
  • Stereo simulation effect.

Thank you so much for sharing, nettech15!

It’s amazing that all the functions are built from scratch too!

1 Like

I also added a simple one-track ScratchPad Sequencer to the code.


The big hurdle is porting code for the Daisy WM audio codec over to STM32CubeIDE.

Thanks for keeping us posted with updates :slight_smile:
And we would love to see a video document or demo when you get a chance!

This is perfect! Thank you so much for putting together this detailed demo.
The synth sounds amazing!

1 Like

Finally, the “NucleoSynth” is now using Daisy’s built-in audio codec, as well as USB-MIDI from libDaisy. No more 12-bit internal DACs to sap the processing power and require DC blocking capacitors. My original HAL implementation of USB-MIDI was very unreliable, but this change makes operation much more stable.

We can now say goodbye to the STM32CubeIDE and still have the ability to run old HAL code right alongside (actually in this case, directly on top of) the Daisy Libraries using VSCode IDE and Live Watch in the debugger.

This opens up new modification possibilities; 64 mb SDRAM, 16 mb QSPI Patch storage, multi-effects, multi-timbral, multi-channel. All the nice features available thru the Daisy Libraries, but the ability to break away and make your own original synth engine in HAL or LL.

The synth engine is more accurate (increased resolution by four) and the ADSR’s allow for a sharper attack envelope for VCA/VCF.

I removed the STM32CubeIDE project now because this new creation makes the old code obsolete.