Interesting question.... because the voice allocation is done by the patcher code.
but actually, Id think there are a few ways to do it.
the most 'obvious' but least efficient, I think would be to use a poly voice patch, and then use the voice index to delay the triggering of the envelope. you can pass in parameters to control how this work, e.g. up/down, speed etc.
this is inefficient since although essentially you have a monophonic voice e.g. you are using resources for multiple voices.
to do something more efficient...
im not sure, if you have a monophonic patch, if you get the overlapping note on/off, I suspect you would*, so in this case you would need to store (in a table) currently active notes, and then loop around them.
(* if not, then you would have to intercept the midi messages, possible, but a little more involved)
something to bare in mind, on this however is 'release tails', if these overlap then the polyphonic approach is best, as you need separate voices anyway.