Precision ADSR, enhanced

I took the Kassutronics Precision ADSR design I breadboarded, with modifications, and designed a PCB for it. This week I built one.

To refresh your memory, the Kassutronic design improves on the YuSynth ADSR (version 2) (and similar designs like René Schmitz’s Fastest Envelope In the West) by

  • Curing the very slow release once it gets below ~700 mV by using precision rectifiers (an op amp with a diode in the feedback).
  • Simplifying the indicator LED by driving it with the same op amp that gives the inverted output!

My modifications are:

  • Optional socket as well as footprints for the timing capacitors. You can socket them, solder them, or socket them now and solder them later.
  • Restoration of YuSynth’s two timing capacitors, switch selectable, for slower and faster time ranges (though not the two fixed resistors on the attack path).
  • Retriggering input, allowing multiple attack/decay peaks during the sustain (inspired by but simplified from Benjamin AM’s design).
  • Looping mode, in which an attack-decay envelope repeats itself automatically while the gate is on, or, if nothing is plugged into the gate jack, indefinitely.

It didn’t work right away. The first problem was the push button I’d used for manual gating. Tayda sells nine similar-looking push buttons which for a long time I thought were three colors (black, red, and green) of each of three different versions. But you have to look more closely at the listings than I did. It’s not as simple as that, and one example is this: Eight of the nine are normally open (OFF-(ON)) and one is normally closed (ON-(OFF)). Guess which of the nine I tried to use?

Having I swapped that out for an OFF-(ON) one, and reflowed a solder joint that only wanted to work while I was pressing a scope probe on it, the module now seems to function as intended.

Some scope pictures:

Stereotypical envelope
Retriggering (left) and looping (right)

Here’s some capacitor experimentation. I set attack fairly fast, sustain 100%, release fastest and tried:

  • 1 µF aluminum electrolytic (ChengX?, Tayda A-4505)
  • 1 µF tantalum electrolytic (AVX, Tayda A-265)
  • 1 µF PET film (WIMA, Tayda A-4168)
  • 10 µF aluminum electrolytic (JB, Tayda A-4349)
  • 10 µF tantalum electrolytic (AVX, Tayda A-5226)

with a ~2.5 second gate. Results:


Interestingly, for 1 µF the tanty sags less than the aluminum, but for 10 µF the aluminum is better and the tanty is horrible. For 1 µF the film cap is pretty much perfect.

The 10 µF tanty was shocking enough that I tried putting two more of them (same type, from the same order) into the socket. One looked a lot like the first. The other started off doing crazy stuff like this:

Seriously? Just to make sure, I swapped the two in the socket and the strangeness followed the cap. After a while, though, the erratic behavior stopped, but the voltage loss was even higher than for the other two caps.

Aside from that I looked at only a sample of 1 for each value and type, so it was hardly a careful study, but for now I think 10 µF Al and 1 µF film is the way to go.

One problem I’ve discovered: Looping stops if the decay time is turned up beyond some point, about 2/3 or a little less of the way up on the fast setting or maybe 20% of the way up on the slow setting (which is about the same decay time). The whole attack time range is available and the decay time limit doesn’t seem to depend on attack time. Sometimes it’ll go for 2 or 3 pulses before stopping. I have no idea why unless it has to do with the folly of using a TL071 as a comparator. Fixed! See Looping slowly.

Schematics, KiCad design files, Gerbers, and documentation available in GitHub repo.

2 thoughts on “Precision ADSR, enhanced

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s