Granular synthesis sound level control

Hi!
I am using a granular synthesis patch associated with an ambisonic spatialisation engine. I have a problem : when I use long grains overlapping, the level is higher, of course, than with short grains. The level contributes to the perception of distance. If I simulate a far away source, with long grains, the effect is biased. Also, the level of a grain is determined by the spectrum characteristics, and therefore, flattening all the grains of the signal would affect the quality of the synthesis. Would anyone recommend a method to control the level of the grains with respect to their duration, for one same audio file chunk? I am not a big fan of compression and I don’t have much experience with it. Looked at the tutorial patches of MSP but I am not sure how to proceed.
Thanks!