We are using BASS to play additional 3d sounds in existing game and I have problems with matching BASS' 3d streams to in-game audio.
Even quiet streams with small minDist set with BASS_ChannelSet3DAttributes are still audible even when very far away.
Setting maxDist to enormous values also does not help.
Using BASS_SAMPLE_MUTEMAX flag makes just the sound to be hard cut off when maxDist is reached.
I found BASS' formula on this forum:
vol = dist <= mindist ? 1 : mindist / (mindist + (dist - mindist) * rolloff);
Apparently it reflects some algorithm from DirectSound3D, but seems to be totally wrong. Interacting with the sound in game has unnatural feeling at close distances, then sound seems to be stuck to some minimum threshold when getting far away.
Even if ignoring air resistance/damping factors and using simple inverse square formula would give better result:
Green - current BASS' formula
Orange - 1/distance^2
It also highlights the problem, for sound with midDist 1.0 volume at distance 100.0 is still about 0.01, while inverse square gives 0.0001
Probably changing current decay curve is out of question due to legacy reasons.
Is it then an option to implement more decay curves to select in BASS?
It would be nice to be able to register callback function with user's desired formula inside.