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!
- Voltage-controlled envelope generator PIC 16F684 ASM code
- Assembled HEX code from above file
- Detailed notes on the code
- Circuit Diagram
- VCADSR datasheet (includes circuit diagram and chip pinout)
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.