back to menue

NucleoSynth - Audio Synthesizer based on STM32 Nucleo-F446

This is a DIY construction manual for a digital 10 voices polyphonic Audio Synthesizer
based on STM32 Nucleo-F446, which is plugged onto a specific PCB.

The instrument is controlled completely digital. The only analog controller is the LCD contrast pot. Internal digital data are transformed to an analog output signal using the internal DAC of the STM32F446 processor and finally amplified to headphone impedance with an audio amplifier IC.

To play the instrument and for configuration, communication is possible via USB and USART. MIDI and RS-232 modes are selectable with a dual DIP switch. Additionally a local Operator Panel is supported by hard- and firmware.

NucleoSynth in alu box
NucleoSynth simply built into aluminium box

A design intention was to keep the additional hardware technology as low as possible. For most people, making a PCB is the biggest barrier. For this reason a completely 2.54mm Veroboard compatible design is proposed here. It can be wired manually or manufactured as a one (or two) layer PCB too. Smallest PCB wire width is 0.8mm, smallest distance between wires etc. is 0.4mm, optimized for most simple PCB production technologies.

Most essential features of the NucleoSynth:

NucleoSynth fully assembled
NucleoSynth fully assembled with unmodified Nucleo-F446

For a first test or as "embedded instrument" without operator panel, the unmodified Nucleo board can be completed with a minimal hardware, which is supported by a special firmware version.
The keyboard is connected via legacy MIDI IN. Configuration is made with MIDI Control Change and Program Change messages, or more comfortably with ASCII text via the virtual USB COM port provided by the ST-LINK part of the Nucleo board.
The actual firmware 1.6 supports down- and upload of dumps and user waves via virtual ST-LINK COM port.

minimal hardware

A detailled Operation Manual is provided here (PDF file),
and >a detailled hardware DIY Construction Manual is provided here (PDF file).

Downloads:
The subsequently downloadable material is copyrighted (c)2019 by Wolfgang Schemmert.
Assembly and use of the device is permitted for free by everybody for any purpose ("freeware").
All information is based on best knowledge, but "as is" and without any warranty. Any responsibility is excluded.

PCB layout for the "base board" PCB
(1:1 TIF format, BOTTOM layer as well as component placement view "from component side", but TOP layer shown mirrored "from solder side" (as needed for PCB production))

Firmware "nucleosynth16.hex" for the NucleoSynth
(Version 1.6, 11 August 2019)
--- redesign of filter configuration and user panel
--- some bugfixes and improvements

Firmware "nucleosynth16-minhw.hex" for the NucleoSynth minimal hardware
(Version 1.6, 11 August 2019) Modified for minimal hardware: The F446 onboard USB is off, instead the F446 USART2 is activated for communication via the ST-LINK USB (virtual COM port). USART1 works as legacy MIDI IN. Else same features as above.
--- new feature for down- and upload of dump and user waves

Source code "nucleosynth16.zip"
(status 11 August 2019) This source code is provided as complete "EmBitz1.11" project (ZIP file, 2.493 kB).
Parts published by EmBitz are under license of EmBitz, parts published by STM are under license of STM, parts programmed by me are provided under GNU GPL3 license.)

Source code "nucleosynth16-ts.zip"
(status 11 August 2019) This source code is provided as complete "Atollic True Studio 9.3.0" project.(ZIP file, 2.319 kB).
Parts published by STM are under license of STM, parts programmed by me are provided under GNU GPL3 license.)

Alternative firmware:
The first filter in the filter cascade has a set of clones for every voice. This improves polyphonic play while frequency shift of this filter is modulated by key pitch.

Firmware "nucleosynth-xf16.hex" for the NucleoSynth
(Version 1.6, 11 August 2019)
--- redesign of filter configuration and user panel
--- some bugfixes and improvements

Firmware "nucleosynth-xf16-minhw.hex" for the NucleoSynth minimal hardware
(Version 1.6, 11 August 2019) Modified for minimal hardware: The F446 onboard USB is off, instead the F446 USART2 is activated for communication via the ST-LINK USB (virtual COM port). USART1 works as legacy MIDI IN. Else same features as above.
--- new feature for down- and upload of dump and user waves

Source code "nucleosynth-xf16.zip"
(status 11 August 2019) This source code is provided as complete "EmBitz1.11" project. (ZIP file, 2.783 kB).
Parts published by EmBitz are under license of EmBitz, parts published by STM are under license of STM, parts programmed by me are provided under GNU GPL3 license.)

Source code "nucleosynth-xf16-ts.zip"
(status 11 August 2019) This source code is provided as complete "Atollic True Studio 9.3.0" project.(ZIP file, 2.580 kB).
Parts published by STM are under license of STM, parts programmed by me are provided under GNU GPL3 license.

This project is programmed directly on register level, no external libraries (except "cmsis" and startup code), no drivers or HAL are used. So it may be helpful for other projects with STM32F446 or similar processors like F411, F405 -- especially concerning USB, USART communication, LCD based user panels, rotary encoders.

Some of my own help files:
"waves14bit.zip" archive contains source code for a Windows console app to design and calculate user waveforms based on simple mathematical models. Furthermore a set of example userwaves (MIDI SysEx conformant .syx files) is included, generated with this software.
(status 12 July 2019) It generates the corresponding SysEx (.syx) files for direct upload to NucleoSynth. Furthermore, C-Code compatible source code snips of waveform data are generated. Developed with good old Dev-C++ 9.9.9.2, other compilers may require changes.

"Dump2C.zip" archived Windows console app of "Dump2C.exe"
(status 29 July 2019) The packed file dump2c.eee must be renamed to dump2c.exe before use.
With this simple program dumped sound sets are transferred to C-Code compatile source code snips for integration of user own factory presets into the source code of NucleoSynth. Updated to fit with firmware rev1.5++


back to menue


* State of information August 2019.
* Right of technical modifications reserved. Provided 'as is' - without any warranty. Any responsibility is excluded.
* This description is for information only. No product specification or useability is assured in juridical sense.
* Trademarks and product names cited in this text are property of their respective owners.