Modular analog synthesizer

Modular analog synthesizer

This project aims to create an easy-to-learn, low-cost modular analog synthesizer. It is based around well-available components like LM324 or TL084 op-amps. The firmware is written in the Rust programming language. Its main purpose is not to create a competitive musical instrument, but to learn more about electronics and Rust.

The goal is a semimodular synthesizer which is compatible to existing other systems, where possible. It has the following features:

For the sake of simplicity, the following trade-offs are being made:

First iteration

The first iteration only existed on a breadboard. It was a huge mess of wires, powered by two 9V batteries.

This setup worked surprisingly fine, but was musically unusable due to the bad contacts of the breadboard: For example, the pitch was fluctuating half an octave by just accidentially touching the power supply wire.

Therefore, iteration two uses the same schematics, but on professionally manufactured PCBs.

Second iteration

After verifying that the breadboarded setup works fine-ish, I created PCB several designs:

The VCO development board mk I.
An alternative version of the VCO made by SpitfireX.
The voice supplement board containing VCA and VCF.
The main control board with the supply voltage generation and a STM32 blue pill board controlling the utility DACs.

This works really fine, however the VCF suffers from a strong hum/hiss that seems to consist of the USB polling frequency (1 kHz) and the SPI bus transaction rate (not the clock frequency! All DACs are updated 1000x per second).

Current state

I have a working synthesizer with 2 VCOs, a filter and a VCA. It has enough MIDI support to be played, but suffers from noise and hum. This is yet to be debugged.

Schematics

Voltage controlled oscillator mk I

Voice board

Main board

Source code

The schematics, PCB layouts and firmware source code are freely available on GitHub.