Symphonique V1.0
Now this was quite a fun project with a surprisingly good result, if I may boast a little :)
This is a fully analog DIY strings synthesizer, using digitally controlled 16 sawtooth oscillators, 2 low pass filters and 2 analog choruses. Everything is doubled for a fully stereo signal path which gives it a nice wide and open sound.
Youtube video: watch it here.
Currently it lives inside a new project called the ScienceOrgan, with some changes to it. A link to this new project will arrive here soon.
The Code
The firmware for this synth is probably as basic as you can get, since most of the magic happens in the analog realm.
I used an Arduino Mega so I had plenty of IO available, since it needed to drive 16 oscillators and a couple of PWM signals. In the module version I'm using an Atmega32, which is turning out to become my go-to MCU for these kind of projects.
First thing the MCU needs to do is scan the keyboard matrix or process the MIDI input, both topics that have been covered a lot by other people so I'm not going to go into those here. Plenty of tutorials on the web already :)
The MCU sends out 16 pulse signals. These pulses are generated by very basic wavetable oscillators. The tables themselves are very short and consist only of booleans since the signal only needs to be high or low. The reason for all this is a little... lesson in trickery, if you will:
By having the pulse signal programmed in a table I can create all sorts of pulse-patterns to trigger the analog sawtooth oscillators with. This way I can very easily create different tones without making things complex. Take a look at the schematic below and see if you can figure what kind of effect multiple pulses of various widths would have.
There's nothing much special going on otherwise, look at some Arduino DDS synthesis tutorials if you want to know how wavetable oscillators are implemented.
The 2 low-pass filters and VCA's are both controlled through PWM, driving an LED + LDR vactrol. See schematics below.
Envelope-wise it's all very basic, just attack and decay, since I wanted to keep this synth straight forward and easy to use.
Schematics
This is a basic 2-voice schematic of the string synth, excluding the chorus. The chorus comes after the VCF and before the VCA, but is optional. The analog oscillators are digitally controlled by pulses send from an Arduino or other MCU. These can be single narrow pulses for a standard sawtooth waveform, or various pulses of various widths to create more interesting sawtooth-ish waveforms.
In Symphonique there's a full stereo path throughout the entire synth, so below circuitry is doubled for everything.
The chorus is made with a fairly standard PT2399 circuit called "the Little Angel".
I did change some values to my own taste, but alas I haven't written down anything, so I'll have to reverse engineer some things.
That being said: I encourage you to experiment with the LFO speeds as this changes the effect quite a bit.