The ADSR envelope is so ubiquitous in synthesis that it's easy to treat it as an abstraction: four knobs that shape a sound over time. But in analog hardware, an envelope generator is a physical circuit with a capacitor at its core, and that capacitor doesn't behave the way a digital parameter does. It curves. It approaches its target asymptotically. It has a character baked into the laws of physics.
Most digital emulations miss this. Here's why.
The Physics of Charging
An RC circuit is a resistor and a capacitor wired in series. When you apply a voltage, current flows through the resistor and begins charging the capacitor. As the capacitor charges, the voltage across it increases, which reduces the voltage difference driving the current. Less voltage difference means less current, which means slower charging. The result is an exponential curve:
V(t) = Vs × (1 - e^(-t/τ))
where Vs is the supply voltage, t is time, and τ (tau) is the time constant in seconds. τ = R × C, with R in ohms and C in farads.
At t = τ, the capacitor has charged to 63.2% of the target voltage. At 3τ, it reaches 95.0%. At 5τ, it's at 99.3%. Mathematically, it never reaches 100%.
That last point matters. An analog envelope generator never fully arrives at its target; it asymptotically approaches. This isn't a limitation. It's a feature.
The Capacitor Is the Envelope
In an analog envelope generator, the capacitor's charge state is the envelope signal. During the attack phase, the cap charges toward a high rail voltage through a resistor whose value is set by the Attack knob. During decay and release, separate resistors discharge it to different target levels.
The control voltage output that drives your VCA or VCF is taken directly from the capacitor's terminals. No lookup table. No linear interpolation between two values. The output is the physical charge state of a component, updated continuously by the laws of electromagnetism.
This changes what "attack time" means. When you set a 50ms attack, you're not telling the circuit to ramp from zero to maximum in 50ms. You're setting a time constant such that the envelope completes what the designer considers a full attack in approximately 50ms, typically calibrated to reach about 99% at that time, implying τ is roughly 10ms.
But the shape within that 50ms is not a straight line. The envelope covers most of its range in the first 30ms, then decelerates as it approaches maximum. That deceleration at the top of the attack is what gives piano-style sounds their naturalness: an initial surge followed by a smoothing-out, matching how real acoustic transients behave.
The Minimoog's Shared Knob
One structural consequence of this circuit design shows up clearly in the Moog Minimoog Model D. The original envelope circuit uses a single potentiometer for both the decay and release phases. Adjust the decay time and you automatically adjust the release time to match; there is no independent control.
This isn't a bug. It's simply how the circuit was laid out, with the same resistor setting the time constant for both discharge segments. Players worked around this for decades by using the sustain level and envelope amount to compensate for the linked behavior.
AJH Synth's MiniMod DH-ADSR Eurorack module was designed specifically to address this, offering independent decay and release controls while preserving the Moog topology's character. The fact that a dedicated module exists to solve this problem tells you how much the original constraint shaped the sound of thousands of recordings.
The Oberheim SEM's Unusual Curve
Not all analog envelopes use the same RC approach. The Oberheim Synthesizer Expander Module (SEM), the voice module behind the early Oberheim Four-Voice and Two-Voice polyphonic instruments, has a decay curve that goes the other way. Oscilloscope analysis of the actual SEM output shows a reverse exponential decay: the envelope starts slowly and accelerates toward the end, the opposite of a standard RC discharge.
Where a Moog-style decay drops quickly from its peak and slows as it approaches zero, the SEM holds near its peak for longer, then falls away more rapidly. The effect is a characteristic "hanging" quality in notes: sounds appear to sustain longer before collapsing. The texture resembles compression or limiting, with the signal seeming to hold up against gravity before finally giving way.
This is one reason Oberheim-style patches often feel more compressed and sustained than Moog-style patches, even without any dynamics processing in the signal chain. The difference is encoded in the topology of the envelope circuit itself.
Why Digital Envelopes Sound Different
Most DAW soft synths implement linear envelopes by default: a straight ramp from 0.0 to 1.0 over the specified time. Mathematically simple, musically clinical.
A linear attack means the envelope moves at exactly the same rate every millisecond. Your ear registers this as a volume fader automated at a constant speed, not the elastic initial surge of a capacitor charging. The result isn't quite a click, but it lacks the acceleration that acoustic instruments and analog circuits share.
The standard fix for plugin developers is a one-pole recursive filter for each envelope segment:
float coeff = expf(-1.0f / (sampleRate * timeInSeconds));
output = targetLevel + (output - targetLevel) * coeff;
Each sample, the output retains a fraction coeff of its remaining distance from the target, close to 1.0 for slow envelopes, close to 0.0 for fast ones. This implements a true exponential, equivalent to the physics of RC charging.
The catch is calibration. Should a 100ms attack setting mean τ = 100ms (reaching 63.2% at 100ms), or should it mean 5τ = 100ms (reaching 99.3% at 100ms)? Different emulations make different choices, and those choices produce audibly different results at identical numeric settings. When someone says "Plugin A feels snappier than Plugin B even at identical attack times," this calibration difference is often the explanation.
Practical Takeaways
For hardware analog programming: attack feels faster than the dial implies. The first few milliseconds of an exponential attack cover more ground than the same duration in a linear system. You often need to extend attack times to achieve the same perceived softness you'd dial in on a digital synth.
For plugin developers: the recursive coefficient approach is efficient, a single multiply-add per sample per envelope segment, and accurate. The earlevel.com ADSR series (by Nigel Redmon) documents the edge cases in detail: what happens when you retrigger mid-attack, how to handle segment completion without overshoot.
For anyone mixing synthesizers from different eras: the reason a Minimoog patch transposed to an Oberheim patch changes character isn't just the filter or the oscillator. It's the envelope. The curves are different. The time constants interact differently with your release pedaling. Envelope topology is as much a part of an instrument's voice as anything else.
The capacitor at the center of an analog envelope generator is solving a differential equation in real time. Its exponential output is a physical property of the universe, the same curve that describes radioactive decay, cooling coffee, and the voltage across any charging capacitor anywhere on Earth. That's not mysticism. It's why these circuits sound the way they do, and why emulating them correctly requires more than a linear ramp with a curve knob bolted on after the fact.