# What are Amplitude attack and release times?

Can some one please explain in simple terms, what those parameters are doing: I read “60dB convergence time for following attacks”. What does it mean?

For envelope following, usually you want something that will respond very quickly to an increase in energy, and more slowly to a decrease.

“Responding to” an increase or decrease means that the output will move from its current value toward the next input value, but only some fraction of the way. If this fraction is closer to 0, then it will respond more slowly; if closer to 1, then it responds more quickly. (Edit: In the source code, you’ll see “coef” variables, which are related to the “fraction of movement” but calculated differently. A coefficient that is almost 1 reflects slower movement.)

A “60dB convergence time” means: if, for instance, the signal jumps from a flat 1 to a flat 0, the output should be 60 dB below 1 = 0.001 after the given time passes. If that time is 1 ms, then it’s almost instantaneous. If the time is 100 ms, the decay will be more obvious.

``````(
{
var sig = LFPulse.ar(5);  // 100 ms per change
var amps = Amplitude.ar(
sig,
[0.001, 0.02],  // 1 ms, 20 ms upward converge time
[0.01, 0.08]  // 10 ms, 80 ms downward converge time
);
[sig] ++ amps
}.plot(duration: 1);
)
``````

But the help may be inaccurate – it probably should say a 20 dB convergence time. (Comparing source code between Decay and Amplitude: in Decay, the convergence coefficient is calculated as `e ^ (log(0.001) / (time * samplerate))` where 0.001 = -60 dB. In Amplitude, it uses log(0.1) instead, where 0.1 = -20 dB. In the plot, the decays are certainly not going to 0.001 within the given time.)

hjh