FuncGen - ADSR with End of Rise and End of Fall (pseudo) outputs

hello dear 301ers! a module like this has been frequently requested, as is the feature of having multiple outputs from a single unit. while i get the reasons for the latter, i think i like the simple, universal approach of @odevices up to now: une unit one output.
but since 0.4.XX we are able to tap signals from wherever we like, so if i create a couple of custom controls on a custom unit those can be used as pseudo outputs and signals can be tapped from there.
using the Compare bespoke unit from @Joe’s Accents library i was able to create two gates: end of rise and end of fall.

0022 0023


  • Gate: triggers the attack stage on gate hi and switches from sustain to release on gate lo
  • A: attack, sets the time it takes for the level to go from minimum to maximum after gate hi
  • D: decay, sets the time it takes for the level to go from maximum to sustain level after the attack stage ends
  • S: sustain, sets the level that stays constant after the decay stage ends and until gate lo
  • R: release, sets the time it takes for the level to go from sustain level to minimum after gate lo


  • Eor: this control sends a trigger when the attack stage of the envelope is over
  • Eof: this control sends a trigger when the release stage of the envelope is over

type: custom source
firmware: 0.4.17
requirements: Accents
tips: insert this unit where needed as you’d do with a normal ADSR. if you need to trigger other events with the EOR or EOF just navigate your patch to the unit you want to trigger (example: a varispeed sample player), reach for the control you want to trigger (example: the gate input of the varispeed), click on it to enter its subchain, click on the empty header, on the small screen select “locals” and navigate to the instance of FuncGen, look for the Eor or Eof parameter and select it. if your target is not a gate, after having it assigned you will set the gain of the target parameter to a value other than zero. have fun!
download: FuncGen.unit (14.0 KB)


You figured it out, huh? :slight_smile:


hehhehe yes :smiley: actually i was using it already for a while but thought why not share it as sort of inspiration\tutorial unit :slight_smile:


now let’s make it dual, add some mixing functions, log\lin\expo curves, attenuversion and we’re good to go :smiley:


Something to convert linear to exponential curves in general (or log to lin to exp) with continuous control like on Maths, would be handy. That’s one of the reasons I don’t often use envelopes in the ER-301 and stick with Maths, Contour or Stages.

Maybe crossfading or bump scanning between sample mappers :thinking:

1 Like

well, you can with feedback, thing is its not uber-precise and the usable range is small

I realize this is an old thread, but just came across this now. I’ve been trying to use two of these in tandem, have the EOR of the first trigger the second - but even though the second ADSR seems to receive a gate/trig, the envelope doesn’t start or output anything. It registers and incoming gate, but the envelope doesn’t trigger. Any clue why that might be?

This might be caused by the length of the trig/gate generated by funcgen. If your attack time in the 2nd envelope is > than your eor gate length it will prolly fail to trigger. You can use a timed gate from Joe’s Accents to lenghten the generated gate and keep your 2nd env up n runnin’ :slight_smile:

I tried to take the attack all the way down, but no luck. You can see it registering a trig, but the envelope just doesn’t fire. Oh well, I’ll try with the timed gate tomorrow - cheers. :slight_smile: