Sound Concurrency doesn't play nicely with looped sounds?
I've spent a while trying to work out what the intended behaviour for the Sound Concurrency system is, as there's not any significant documentation for it.
I was under the impression, the system was intended to enable more sounds to be placed/played in a level, then there are voices. So for example, a limit of 8 voices could be applied and 32 placed in a level. Then as a listener moves through the world only the 8 voices that meet a Resolution Rule would play.
However, my experience while applying the StopFarthestThenOldest rule to looped AmbientSounds placed in the world failed to reflect my expectation.
What I have detected, and I'm sorry if I'm not seeing this correctly due to debugging with the Launcher version of the source and debug symbols is -
That when the looped AmbientSounds are created in the world, the (using the above example) 8 nearest AmbientSounds to the Origin XYZ in the world are enabled, and not the nearest 8 to the players position.
When the player moves through the world, no attempt is being made to reevaluate the AmbientSounds against the Resolution Rules. Which means ALWAYS only the nearest AmbientSounds to the origin play.
For quick fire and forget sounds, I'm sure this approach works fine. But for placed Ambient Sounds within the world, it seems not so much? A workaround would seem to be to write a Blueprint/Class to restart a sound once it's finished, but this seems very wasteful - to be sitting on a tick - if there are already layers of C++ monitoring the players position relative to sound sources for attenuation testing.
I've tried to be sure I've not overlooked something key in any documentation, searching online, etc. but there seems to be little discussion regarding audio issues.
The behaviour (seems to) happen(s) in my own project, and the First Person C++ template.
This issue has been fixed in 4.14. Update to the new version and choose Stop Quietest as your resolution rule and it will behave as expected. StopFarthestThenOldest shouldn't be used for ambient sounds. StopQuietest is calculated dynamically and will control your sounds like you want. Stopping them when you reach the limit and have moved away from them. Starting them again when you get close.
answered Nov 18 '16 at 03:18 PM
Follow this question
Once you sign in you will be able to subscribe for any updates here