[sdiy] ADSR Trigger/Retrigger behaviour

Mattias Rickardsson mr at analogue.org
Sat Jun 28 13:47:51 CEST 2014

Interestingly, desired ADSR behavior is not as simple as we might think. :-)

So far it seems you have all considered only envelopes that are heard,
mainly the amplitude envelope. But there are many cases when one
envelope ends the sound and another envelope keeps going longer in the
background without its value being relevant. When retriggering the
sound, though, that irrelevant value suddenly becomes relevant as it
now becomes the starting value of the envelope if it starts from where
it were. In these cases it can be desirable to have the envelope start
from zero instead. Otherwise the start of every note depends of what
happened with an unheard envelope in the previous note.

Some examples of this are sounds with long filter attack and short
amplitude release, or long amplitude attack and short filter release
that closes the sound. Many of these are not the most typical sounds -
they could even be considered "bad sound programming" - but
nevertheless something you sooner or later encounter when twiddling
around and go into attack-based sounds.

This is why some of today's synths offer resetting and non-reseting envelopes.

By their nature, classic analog ADSRs restarted from where they were.
They are just charging/discharging a capacitor at different rates
according to the envelope phases and the A/D/R settings. Moreover,
they only work with rates, not times. So attack times can differ when
starting the attack from non-zero. Luckily all of this was a very
useful usecase, but not the only one. :-)

Interesting to note that the Memorymoog had the return-to-zero option.
Apparently there was a need already 1/3 a century ago.

As mentioned before, resetting envelopes to zero at the start can
result in clicks, which may be more or less tricky to avoid both in
the synth design and in the sound programming.

A couple of other details:

On 27 June 2014 15:51, Roman Sowa <modular at go2.pl> wrote:
> that would be like playing a sampled wave always from sample 0 whenever you
> hit a key. It has its uses, but sounds very digital in the worst sense of
> the word "digital".

In a way, kind of stiff and digital-ish... but no, it would not be
like a sample unless you retrigger also the oscillators. :-)

> None of real, non-electric instrument start from 0 when they are retriggered
> while still sounding, that's why reseting to 0 feels so unnatural.

True. But they do tend to start from *something* else than the current
value. I guess a good way would be to start from something between
zero and the current value. Perhaps continuously set by a new
parameter: Envelope reset amount. :-)

On 28 June 2014 06:20, David G Dixon <dixon at mail.ubc.ca> wrote:
> I like it this way:
> Gate triggers AD cycle. Trigger triggers AR cycle if gate is low. Trigger
> retriggers AD cycle if gate is high during D(S) cycle. During A cycle,
> trigger does nothing.

Don't you mean the other way around, i.e.,
Gate triggers *AR* cycle. Trigger triggers *AD* cycle if gate is low.


>> -----Original Message-----
>> From: Tom Wiltshire [mailto:tom at electricdruid.net]
>> Sent: Friday, June 27, 2014 3:13 PM
>> To: David G Dixon
>> Cc: SDIY List
>> Subject: Re: [sdiy] ADSR Trigger/Retrigger behaviour
>> What's your view on the "retriggered during attack phase"
>> situation, David?
>> Retriggering from where it is doesn't make much sense, since
>> nothing happens. Retriggering from 0 gives a "double hit"
>> effect, which presumably is what was intended by the player.
>> On 27 Jun 2014, at 18:43, David G Dixon <dixon at mail.ubc.ca> wrote:
>> > In my view, an ADSR should retrigger from wherever it is,
>> not from 0.
>> > It should only trigger from 0 if the gate is off.
>> >
>> >> -----Original Message-----
>> >> From: synth-diy-bounces at dropmix.xs4all.nl
>> >> [mailto:synth-diy-bounces at dropmix.xs4all.nl] On Behalf Of Olivier
>> >> Gillet
>> >> Sent: Friday, June 27, 2014 6:30 AM
>> >> To: Justin Owen
>> >> Cc: SDIY List
>> >> Subject: Re: [sdiy] ADSR Trigger/Retrigger behaviour
>> >>
>> >> The early version of the Shruthi had the "always restart
>> the attack
>> >> from 0" behavior and I got complaints about it. I then implemented
>> >> the behavior described in your message and nobody has ever
>> complained
>> >> about it since. Anything that generates discontinuities (and thus
>> >> clicks) is going to annoy some people.
>> >>
>> >> Olivier
>> >>
>> >> On Fri, Jun 27, 2014 at 3:08 PM, Justin Owen <juzowen at gmail.com>
>> >> wrote:
>> >>> Hello,
>> >>>
>> >>> I'm looking at adding Trigger/Retrigger functionality to an
>> >> ADSR design I'm working on but it's not a feature I've
>> used that much
>> >> so I was hoping for some clarification.
>> >>>
>> >>> I understand that while the Gate is High, the envelope will
>> >> restart from the Attack stage each time a Trigger is received.
>> >>>
>> >>> Most diagrams show the Attack section starting from
>> >> whatever output level the ADSR was at when the Trigger was
>> received.
>> >> Two examples are this one from MFOS (top right):
>> >>>
>> >>>
>> >>
>> http://www.musicfromouterspace.com/analogsynth_new/ADSR001/ADSR001_cy
>> >> c
>> >>> lediags.gif
>> >>>
>> >>> and the diagram in the Doepfer A-140 manual.
>> >>>
>> >>> ...so is this standard? The ADSR rests to the Attack stage
>> >> but the Attack starts at whatever level it was at when the Trigger
>> >> was received - or (perhaps just in an ideal world...) would you
>> >> expect the Attack stage to be reset fully and start from 0V?
>> >>>
>> >>> From a circuit POV I can understand why it would reset to
>> >> it's current voltage but I'd be interested to hear if
>> people who use
>> >> this feature regularly would expect or prefer something different.
>> >>>
>> >>> Thanks as always,
>> >>>
>> >>> - Justin
>> >>>
>> >>> _______________________________________________
>> >>> Synth-diy mailing list
>> >>> Synth-diy at dropmix.xs4all.nl
>> >>> http://dropmix.xs4all.nl/mailman/listinfo/synth-diy
>> >> _______________________________________________
>> >> Synth-diy mailing list
>> >> Synth-diy at dropmix.xs4all.nl
>> >> http://dropmix.xs4all.nl/mailman/listinfo/synth-diy
>> >
>> > _______________________________________________
>> > Synth-diy mailing list
>> > Synth-diy at dropmix.xs4all.nl
>> > http://dropmix.xs4all.nl/mailman/listinfo/synth-diy
> _______________________________________________
> Synth-diy mailing list
> Synth-diy at dropmix.xs4all.nl
> http://dropmix.xs4all.nl/mailman/listinfo/synth-diy

More information about the Synth-diy mailing list