you can have varying degrees of success with the [loopinterp 1] message to [groove~]. The right outlet of [groove~] offers a signal which ramps from 0. to 1. over the duration of the loop – drive a [trapezoid~] object with this ramp and multiply the amplitude of [groove~] out left by this new envelope. Look at the helpfiles for [sfplay~], I think there’s some advice in there too.
Slightly more convoluted is to drive [groove~] with the [waveform~] object, which I believe has a ‘snap to zero’ function.
Hope this isn’t too obvious