This is awesome!
What if the voice persisted and you needed to retrigger the envelope later? I'm imagining a resonating guitar string: It's continuously making sound, but every now and then the player strikes it again. Or someone playing monophonic slide violin: They might want to play an F# for a while, then slide into an A. Or a didgeridoo: The sound is in a steady state, then the player makes a "pew" noise, and then the didge settles back into another (usually the same) steady state.
In the first case there's an amplitude envelope that's (probably) in its decay portion when it is retriggered. In the second there's a frequency envelope that's (probably) reached its sustain portion when it is retriggered to go to a new frequency.
This might dovetail with an earlier question about sending strings to synths
. The synth needs to react not to a parameter change that persists, but rather to a momentary instruction -- something like what the Max/MSP community calls a "bang".
Actually in the slide violin case the synth would also receive a new frequency value. And I can imagine writing a synth that has a rule like "when the frequency changes, slide into it logarithmically over the course of 100 ms". So maybe you wouldn't need bang-like messages in some cases. But in the case of re-striking a resonating guitar string, or making a "pew" sound into a didge, it might be that none of the steady-state parameters needs changing; the envelope just needs to be re-triggered.