More Experiments - Envelope Generators this time...

gstopp at fibermux.com gstopp at fibermux.com
Wed Nov 22 19:20:40 CET 1995


     Hi List,
     
     I've been working too much these days so I got the synth module urge 
     real bad again. Not quite knowing what to do next I was literally 
     staring off into space in a meeting this morning, thinking how this 
     was the kind of moment that totally non-work-related analog 
     brainstorms happen at - darned if one didn't happen!
     
     I recently built some AR envelope generators into my Moog (blank panel 
     space is a terrible thing to waste) and they're real sluggish. I know 
     exactly what I did wrong too. So I had this background task to modify 
     them to make them more snappy. All along I've also been pondering all 
     of the inaccuracies in typical envelope generator designs. There are a 
     few types:
     
     1. CEM/SSM chip ADSR
     2. ARP/Moog/etc. ADSR
     3. Electronotes AD/AR combined ADSR
     4. Electronotes Analog Switch ADSR
     
     Here's some quick comparisons, from a home-builder's point of view:
     
     1. CEM/SSM chip ADSR
     
     Pros: Easy to build, few parts, voltage controlled times 
     Cons: Hard to find, no way to tweak internal parameters
     
     2. ARP/Moog/etc. ADSR
     
     Pros: Discrete designs lend themselves to much tweakage 
     Cons: Too many parts for easy building
     
     3. Electronotes AD/AR combined ADSR
     
     Pros: Easy to build, simple design
     Cons: "Dead bands" around zero due to diode logic
     
     4. Electronotes Analog Switch ADSR
     
     Pros: Easy to build, simple design, CMOS logic 
     Cons: Never built one, don't know
     
     Anyway the thing I've been thinking about is how to design an envelope 
     generator that's real easy to build with lots of tweakability in the 
     design. By "tweakability" I mean having control over parameters such as:
     
     * Attack slope linearity - the traditional ADSR design has exponential 
     slopes (RC charge/discharge curves). It is possible to make the attack 
     slope more linear by making the charge voltage much higher than the 
     flip-flop reset threshold. This way the cap tries to charge up to +15 for 
     example, and the peak threshold is set to +5, so the exponential charging 
     curve gets cut off at 1/3 the way up, which results in a pretty linear 
     attack slope. The Moog 911 works like this.
     
     * Attack-Decay-Sustain handoff - this is a trim to the sustain level so 
     that it exactly matches the attack slope peak level. This is so you don't 
     get a "jump" in the envelope when attack finishes and sustain starts if 
     sustain is set to 100%.
     
     * Decay-Release complete discharge - one disadvantage to the 
     opposite-diode design is that the diodes become large resistors once the 
     envelope discharges down to near zero volts. If you use the envelope to 
     control VCO pitch, for example, this means that it will fall to close to 
     zero then drift flat for a good long time, instead of settling down to a 
     constant pitch. This can be fixed but only by making the design more 
     complex.
     
     * Gate input tolerance - the envelope generator needs to behave the same 
     reagrdless of the loading on the gate signal in the system. This really 
     only applies to modulars.
     
     * Time constant adjustment range - ideally the time constants should be 
     adjustable between zero and infinity seconds. Practicality steps in as 
     usual however and so our minimum times are more like 10-20 milliseconds 
     and the maximum times are more like 1-5 seconds (depending on the 
     machine).
     
     Things like that. Also I have noticed that there is a lot of subjective 
     talk about the envelope generators on various machines, how they sound 
     different from each other, and I wonder what is at the circuit level that 
     determines this. Best I can figure is the minimum times are different on 
     every machine.
     
     So here's where the brainstorm comes in. I was sitting around thinking 
     about the drawbacks of most designs. All designs use some kind of silicon 
     switch to charge and discharge the envelope cap throughout the various 
     phases of the envelope's cycle. These switches all have some finite 
     impedance which places restrictions on the time constant range - if you 
     want longer maximum times this means a bigger cap and/or higher resistance 
     pots. Pots become harder to get over 1 Meg. This means a bigger cap. This 
     means that your minimum times get longer too. As you get into the tens and 
     twenties of milliseconds your attack/decay/release times start to become 
     noticeably sluggish. Not that this is bad, but it should be adjustable and 
     not a design brickwall. Chip ADSR's use tranconductance amps internally. 
     Discrete designs use discrete NPN and PNP transistors. The EN designs 
     either use diodes or 4016/4066-type analog switches.
     
     So I was thinking that the best kind of switch would be one with zero 
     on-resistance, which of course is a relay. Now don't get all huffy on me 
     and say that relays are "old technology" or "crummy"; the modern micropower 
     DIP relay has some pretty darn good characteristics, like logic-level 
     switching and the ultimate in signal-passing characteristics (it's like a 
     damn wire!). It wouldn't be appropriate to use one to reset the cap in a 
     VCO, but for slow-speed work (like keyboard keypresses) it is ideal. In 
     fact the Moog 951 Modular Keyboard uses a DIP relay as the sample/hold 
     switch for the keyboard CV.
     
     So I go into the lab and whip up a simple AR envelope generator using 
     a DPDT relay. Gate to the coil, attack pot to V+ on the normally-open 
     contact, release pot to ground on the normally-closed contact, cap on 
     the common contact, op-amp buffer on the cap. Works great. Now I add a 
     CMOS flip-flop which gets set by the gate and reset by the output 
     envelope. This works great as well. As far as performance - due to the 
     ideal characteristics of the relay switch, the attack rises cleanly to 
     V+, and the decay falls cleanly to ground. The minimum attack time is 
     - get this - 16 microseconds! Should be real snappy. I've drawn up an 
     ADSR which uses two relays - one for attack/decay controlled by a 
     flip-flop, and the other for decay/release controlled by the gate. 
     Parts-wise this is the simplest design I've seen. The main drawback 
     would be the cost of the relays, which is around a couple bucks each.
     
     Anyway that's it for now, sorry it got so wordy, but hey I'm all 
     jazzed because my EG problems appear to be solved. I'll draw up some 
     schematics if anybody's interested.
     
     - Gene
     gstopp at fibermux.com
     
     




More information about the Synth-diy mailing list