Po pierwsze radzę kożystać z jakiegoś dll od dźwięków, bo po jakimś czasie ten podstawowy system z GMa przestaje być wystarczalny.
GML
max_dist=256// Dystans po jakim nie słychać dźwięku
sound_volume(dźwięk,max(0,min(1-point_distance(x,y,gracz.x,ygracz.y)/max_dist,1)))
Zamiast max(0,min(x,1)) w 8.1 można użyć nowej funkcji clamp(x,0,1)
Edit: pomyliłem się teraz powinno być ok. ;)