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