Posted by & filed under Envelope Generators, Projects, Synth DIY.

A CEM 3312 / SSM 2056 clone using cheap PIC microprocessors

This page describes a cheap clone of the CEM 3312 and SSM 2056 voltage-controlled envelope generator chips. Both of these chips include voltage control of A, D, S and R, but both include other inputs too.

The CEM 3312 chip has a input which controls the final envelope output level. This is very handy as a voltage-controlled “envelope depth” when feeding the envelope to a filter, for instance.

The SSM 2056 chip includes a TIME input which shortens the overall time of the A, D and R stages of the envelope. Although this was partly intended as a trim for polyphonic systems, the datasheet for this device suggests that this could be fed the keyboard control voltage in a synthesizer to mimic the way natural percussion instruments typically become less resonant as the pitch gets higher.

I managed to include both of these inputs on my VCADSR. At 0V the TIME CV has no effect, and at 5V the envelope is quickened considerably.

Full details are in the datasheet below, but the envelope times range from 1mS through to 10Secs, in 4 even decades, and all control voltages run from 0-5V.

Finally, there is a digital input which selects either a ‘traditional’ exponential envelope shape, or a early-digital-era linear envelope. After this, I had to stop because I ran out of IO pins on the PIC!

Typical ADSR output

Typical ADSR output

Pinout Diagram

VCADSR pinout

More details

Update: Current Version 7B

I’ve reworked the PWM filter to use a two-stage 4th order Bessel filter. This improves the performance and reduces digital noise on the output. I hadn’t studied filters much before, and the existing design I chose to use originally was a Chebyshev filter which has a steeper rolloff, but not such good high frequency performance. For this application, the rolloff isn’t so important, but high frequency performance definitely is.

Other changes since the previous version 7 include a TRIGGER input, so that the envelope now has both GATE and TRIGGER. It can easily be wired for GATE-only operation if TRIGGER is not required, so nothing is lost.

I also altered the TIME_CV so that it is now unipolar and only shortens the envelope. It runs from 0-5V. This is more like the original SSM2056.

    Related Products

  • VCADSR Envelope Generator 7B

    The VCADSR 7B is a fully voltage-controlled ADSR envelope generator chip. In addition to 0-5V CV control of Attack, Decay, Sustain, and Release, it also includes CV control of output level and includes an overall Time CV for modulation of the envelope time. Download Electric Druid VCADSR 7B Datasheet The datasheet includes example circuit diagrams, example waveforms, and the chip pinout diagram. There are further details on the VCADSR 7B project page.  ...

    More Info Buy Now

5 Responses to “Voltage Controlled ADSR Envelope Generator (VC ADSR 7B)”

  1. Tim

    Hi Tom,

    Just a question on the two-stage 4th order Bessel filte 1khz bessel filter . If i want to fed it with 12v instead of 15v which resistors should change?
    I would like to use the envelope in a 12v system.



    • Tom Wiltshire

      For a +/-12V supply instead of a +/-15V, you can use the circuit as-is. The op-amps won’t mind. The only sensitive part is the PIC, and its supply comes via voltage regulator anyway. So no problem – go for it!

      Running a +5V supply is a completely different kettle of fish. For a start, it’s a change from a bipolar supply to a unipolar one, so for audio signals, you’ve got a lot of biasing to do. At least for the envelope, we don’t have to worry about that immediately, although you probably will have to when you feed the envelope to a VCA.
      One problem to deal with is that the PIC’s output runs from very close to 0V to very close to 5V. When the op-amps are on much larger supplies, this is no problem, but if the op-amp is on the same 5V supply, the PICs input will make the op-amp clip at the power rails. You might be able to avoid this with a specific low voltage rail-to-rail output op-amp. Microchip make various – makes sense, since many people need something that works well with a PIC.

      Microchip Op-amps

      An alternative solution is to use a passive filter. There’s an example on Page 6 of the LoopEnv datasheet.


  2. juan carlos rey (whoandcar)

    Hi, thanks for such a brilliant project.
    I am plannig to use it to directly “chop” the wave analog voltage and then insert the result in the Bessel filter, saving the VCA.
    As my sinth goes only to C6 (2093 Hz) I think that the sampling rate is high enough.
    Your opinion?

    • Tom Wiltshire

      Interesting idea! If you’re going that route, you’ll have to tweak the filter’s cutoff, which was set around 1KHz, IIRC. The other point to make is that (unless your synth only plays sine waves) although the highest note might be 2093Hz, the harmonics of whatever waveform you’re playing probably go much higher. 10KHz would only be the 5th harmonic of such a note. In such a case, a sample rate of 19.5KHz is getting pretty borderline.
      So, I think you need to experiment with the filter to get the right balance between VCA smoothing and high frequency loss. It’s worth a try to see what happens.


Leave a Reply

Your email address will not be published. Required fields are marked *