Ryan,
When we just want to change a volume (not necessarily start a "new note" as such) it may be better to instead use Envelope.target( float value ). This will ramp to the new value over the set .duration() without any need for further attention and -barring very short set durations- won't cause clicks.
The "rate" your question refers to is set by Envelope.duration( dur ). Something like 50::ms would be my starting point in looking for a good value. You may well be able to get away with a shorter duration.
Hope that helps,
Kas.