I spoke a little too soon. I am able to retrigger a "sustainning" envelope like ADSR or ASR, but only awkwardly
Those envelopes take a "gate" argument. (I'm taking these terms from the SuperCollider built-in documentation.) When "gate" is positive, the envelope is "open", which means that it will not progress past the sustain portion of the curve. When the gate signal becomes zero, the gate is "closed", and will move from sustain to release.
I can't retrigger an open envelope. I've got to close it by sending a gate=0 signal, and then wait about a milisecond, before sending a gate=1 signal to open it again. This has the desired effect: The envelope value rises again as in the attack phase, before the release phase reaches zero.
So I was hoping to be able to do something similar with the "fixed-length" envelopes like Env.perc (Vivid's percGen) or Env.linen (Vivid's linen). In the SC documentation for Env, it describes the gate parameter in the following way: "If the Env is fixed-length (e.g. Env.linen, Env.perc), the gate argument is used as a simple trigger. If it is an sustaining envelope (e.g. Env.adsr, Env.asr), the envelope is held open until the gate becomes 0 ..." That led me to think maybe I can send gate=1 repeatedly to a percGen in order to retrigger it before it has gone to zero.
But percGen has no gate argument!
Am I trying to do something that's possible?