NucleoSynth 6-Voice MIDI Virtual Analog Synthesizer

Document created by Christopher Pappas on Feb 1, 2017Last modified by Christopher Pappas on Feb 8, 2018
Version 79Show Document
  • View in full screen mode

Project info:

An expandable feature 6-voice virtual analog synthesizer built using just one STM32F7 Nucleo-144 board, one stereo audio jack, and a USB-Micro-B to USB-A adapter. Play directly thru USB via any keyboard equipped with a USB-MIDI port (Host). Play directly from your PC using any MIDI Sequencer software (Device). Daisy-chain multiple boards together for increased polyphony/multi-timbrality (Slave).



* 6 voices of polyphony.
* Dual oscillator per voice.
* VCA (with ADSR) per voice.
* VCF (4-pole lowpass with ADSR) per voice.

* Resonance
* Master tuning.
* Waveform select saw/saw, saw/square, or square/square.
* Oscillator mix.
* De-tune.
* Three separate LFOs for Modulation, PWM, and VCF.
* Scale for upper oscillators.
* PW/PWM on the square wave.
* Separate adjustable keyboard follow for ENV and VCF.
* Keyboard velocity routable to VCA and VCF.
* VCF envelope level.
* Editable parameters.
* Stereo simulation effect.

* Serial Interface allows daisy-chaining several boards together to increase polyphony or multi-timbrality


Hardware components :

1 - USB-Micro-B to USB-A adapter.

Software Tools :

Keil uVision 5 (Free Evaluation Version)


Source Files:

  • Nucleo Synth Host Version 0.8.1 Project
  • Nucleo Synth Slave Version 0.8.1 Project 
  • Nucleo Synth Device Version 0.8.1 Project 
  • Nucleo Synth USB MIDI Class folder
  • Nucleo Synth Sound Demo Wave file
  • Nucleo Synth ReadMe text file


Version Control:

Version 0.8.1: Added a SelfTest subroutine to play random triads. Does not requires an external MIDI USB connection.

* Version 0.8.0: Fixed a massive bug that caused the VCF to close completely, resulting in no sound!

* Version 0.7.9: Added a high-speed serial interface that allows daisy-chaining several Slave boards to a Host board for increased polyphony/multi-timbrality. Added a separate LFO for the VCF.

8 people found this helpful