[openal] Attenuation Roll-Off problems (too silent)

Chris Robinson chris.kcat at gmail.com
Fri May 20 23:42:19 EDT 2022


On Friday, May 20, 2022 2:14:00 PM PDT Roland Pl├╝ss wrote:
> There is also something else I have troubles with which is connected 
> with this problem. To do distance sounds I have to manipulate the 
> attenuation calculation. To achieve this I tried disabling attenuation 
> on a per-sound basis by setting roll-off to 0 and setting the source 
> gain to my calculated attenuation. While this works for direct sound 
> path I get into troubles with EAX reverb gain. I simply can't figure out 
> if the EAX reverb gain is applied to the full volume source or to the 
> source with the source gain applied, hence which one is true?
> 
> 1) final reverb gain = source.gain * source.attenuation * reverb.gain
> 2) final reverb gain = source.gain * reverb.gain
> 3) final reverb gain = reverb.gain
> 
> The documentation does not state this. I would assume 1 to be true but 
> my experiments do not give me a usable answer.

For reverb, it starts with source.gain * reverb.gain. There is additional 
attenuation applied based on the sound distance and the reverb properties, 
although it's not the same as the distance attenuation applied to the direct 
path. This extra attenuation is a statistical model to simulate the kind of 
room path attenuation found in real environments. There doesn't seem to be 
much public information about this statistical model, so as far as OpenAL Soft 
is concerned, its had to come up with its own thing which may still need more 
tweaking, but the latest version should be better than older versions, at 
least.

There are source and reverb room rolloff properties which work like the 
source's direct path rolloff, but these are disabled by default (set to 0) 
since the statistical model is applied. You can disable that statistical model 
and use the room rolloff properties instead (set the auxiliary effect slot's 
AL_EFFECTSLOT_AUXILIARY_SEND_AUTO property to false, then set the source's 
AL_ROOM_ROLLOFF_FACTOR and/or reverb's AL_REVERB_ROOM_ROLLOFF_FACTOR as you 
want), but it's up to you to set them correctly.




More information about the openal mailing list