Isn't that for much particles usable ? Play up instantly lot of sounds wasn't nice for ears. E.g. Rain = 1000 drops in game scene = 100 sounds of flating drops on land + 900 sounds of drops flying in the air. But certainly would went do any sensible rate.

perhaps would it go do more simply:

we have 3 rain loops according to intensity * material type

[pascal]if rain then begin
playsound(rain[rain_intensity]);
if water in player_area then playsound(drops2water[rain_intensity]);
if glass in player_area then playsound(drops2glass[rain_intensity]);
end;
[/pascal]

..

for bubbles in lava it is ok