ADSR circuits based on the 7555 timer IC have a long history, their main appeal being simplicity. However, they have issues. I breadboarded one version, but it just wasn’t good enough for my modular system in the making. So I set out to fix the bugs.
The design is based on:
One of the most obvious problems with the previous versions is that the sustain level can’t be adjusted on the fly while the envelope is in the sustain phase (while the the note is playing). So I replaced the usual diode in the release/sustain path with a bidirectional MOSFET switch. M3 and M5 FETs are turned on (by M4) when the gate voltage is high and 7555 discharge pin is low. The switch connects the decay resistor directly to sustain voltage, so it can be adjusted up and down and there is no capacitor leakage, making sustain level rock-stable.
Note: Don’t make R6 less than 5k, or max sustain level will be higher than the peak attack voltage (+8V with +12V Vcc). I considered using a trim pot to set max, finally settled on 5.1k.
Kassutronics Precision ADSR uses a precision rectifier to solve the problem caused by the forward voltage of the diode in the release path, preventing discharge to zero. But an offset of about 23mV remains (because the gate voltage, if switched by a transistor, never reaches zero due to transistor resistance).
So I modified the gate/trigger driver part that I pulled from the René Schmitz circuit, using a MOSFET high-low side switch for the gate voltage. This makes the gate drop all the way to zero, and also to switch to +12V without a resistance in the path. This is is good for the release/sustain MOSFET switch, too.
The MOSFETs I used are really ancient, but I couldn’t find any newer ones that weren’t surface-mount. 2N7000 and and BS250 can be replaced with any other n-channel and p-channel MOSFETs that can handle about 200mA and +/-20V GS. And they are sensitive, I’ve burned more than I care to admit while building the prototype. Next time I’ll solder sockets for them. I’ve added back-to-back Zener protection to the bidirectional switch after I blew one FET on the breadboard, but that can probably be omitted.
I’ve also added a trigger input (a.k.a retrigger). This will start the attack/decay cycle while the gate is still high (when a key is pressed while the previous is still down, a.k.a legato). Using gate only is ok with sequencers, but live keyboard playing without retrigger is a frustrating experience.
There is some added complexity here, but it’s still a two-chip generator 😉 And it’s earned its place in my rack.