Analog Synthesizer

Analog Synthesizer

It started when I discovered the CEM3340 VCO chips. This design has 10 of them, the oscillator circuit is based on the Prophet 5 dual oscillator with hard sync.

The oscillators go through a 4066 analog switch and then an op amp buffer before going to the CEM3372 signal processor.

This is the most expensive chip but it does everything else for me, the VCM stage to mix the 2 oscillators, then the VCF and final VCA.
All controlled by a 0 to 5 volt CV. Perfect for a microcontroller with DACs.

An overview of the analog synthesizer

– 5 Voice polyphonic.
– 10x CEM3340 VCOs (2 per voice).
– CEM3372 signal processor (VCM/VCF/VCA).
– Microcontroller ATMega644.
– 10x Envelope generators (5x Amplifier, 5x Filter).
– MIDI In/Out.
– LFO.

Processor Board

Driving the synth is an ATMega644 microcontroller programmed via the Arduino platform. The key scanner is also using the same chip. This is a very versatile chip giving me plenty of I/O, 2 UARTS, SPI and i2c.

The 2 UARTS are used for the MIDI I/O and to communicate with the key scanner.
I could have put the key scanner on the main board. I found it easier to offload this to another MCU as they are inexpensive and would make programming easier. For the I/O shortfall I use good old 595 shift registers.

The DACs are MCP4922 and MCP4902 dual 12bit and 8 bit respectively. These use the SPI bus and are easy to drive with the MCU.
The voice DACs are 12 bit and are driven from 0 to 8 volts via an op amp buffer/amplifier, and are individual to each voice, as are the gate outputs.
The other CVs are all wired in parallel to each voice so all parameters set are the same.

Potentiometers on the front panel are multiplexed using a 4051 analog switch. Then they are fed into 2 analog channels on the MCU (16 pots on 2 multiplexers). This data is fed into a byte array so it can control the DACs and also be saved onto an EEPROM.
This is a 24LC256 i2c serial EEPROM made by Microchip which holds 32 KBytes. Each patch takes 16 bytes of data so I can save a lot of patches.

Considering this is an analog synthesizer, the voice cards are where the analog bit ends. There’s lots of little microcontrollers doing various jobs, the envelope generators from Electric Druid are basically PIC chips and the LFO is too.

CV Mixer

CEM3372 parameters for the analog synthesizer are controlled from 0 to 5 volt CVs.
I was faced with a problem of having 3 CV voltages for the filter cutoff frequency. One from the cutoff knob itself, then the envelope generator and finally the LFO.
I couldn’t use an op amp summing amplifier as I wanted to stop at 5 volts and ‘carry on’ from where I left off. E.g the filter cutoff knob may be set to 1.4v, the envelope generator would lets say go from 0 to 2v, so this needed putting on top of the fixed voltage.
The solution was an ATTiny84 that read the analog values, added them together and saturated at 255 (5 volts) even if the voltage went over. a 16KHz PWM output filtered provided a smooth control voltage.

Envelope Generators

I used 10 envelope generators from Electric Druid, programmed PIC chips instead of the CEM/AS3310 analog ones which I have used for my second synth project.

The ADSR controls for the amplifier (and the filter) are all in parallel, they are set to the same value. The gate trigger comes from the CPU board and then the output is fed to the individual voice board. This is how the polyphonic synth works, all parameters are the same but the voices are triggered with different notes.

You can get away without needing an envelope for the filter, but you do lose a lot of possibilities by not having one, if budget is a problem then plan for adding on in the future.


The key bed on this synth was an eBay purchase and is actually out of a Roland JX-3P. It has no velocity, which is fine because most in the 80s didn’t and this is based on an 80s synth. Plus it would be more work to implement, I ignore the value sent via MIDI too.

As mentioned above my keyboard scanner has been offloaded to another ATMega644 microcontroller. This also does the front panel buttons and LEDs. It was perfect for the keyboard because it has 2 full 8 bit ports, one for the scan and one for the return.

A serial link goes to the LED display and back to the main board. Sending key presses as proper MIDI commands to simply be merged with any incoming MIDI and send out to the DACs. The front panel deals with the patch/MIDI Channel and octave selection and just sends it back over a couple of bytes.

In return the main board can send serial data back to control the LEDs.