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:
- two 1-Volt-per-octave voltage controlled oscillators (VCO) with triangle, PWM-able square, and sawtooth waveforms. Temperature compensation is optional but available.
- the option to use them as digital controlled oscillators (DCO)
- a voltage controlled filter (VCF)
- a voltage controlled amplifier (VCA)
- digital or analog envelope generators
- analog waveshaping and distortion circuits
- USB or MIDI interface based on a STM32 microcontroller
For the sake of simplicity, the following trade-offs are being made:
- exact component selection is traded for automatic or semiautomatic tuning where possible:
- no exact 1-volt-per-octave frequency behaviour: The VCO’s frequency response is not 100% perfect. While commercial synthesizers offer complex analog compensation circuitry, this project will measure the frequency deviation and compensate for it in software at the stage of the MIDI-to-Control-Voltage interface.
- no voltage controlled analog envelopes: These are complicated to build, and the difference to digital envelopes or LFOs is not noticeable.
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:
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
Source code
The schematics, PCB layouts and firmware source code are freely available on GitHub.