Audio Stops When Exiting Attenuation Falloff Distance

Hey fellow sound people,

I’ve got a problem with sounds stopping when the leave the falloff distance. I’ve made sure that the* “Allow Virtualized Sounds”* is checked, and that “Always Play” is check in the Master Bus. However, the sound still stops.
I’ve scoured the forums, Googled, and I did find a record of this happening in previous builds. The fix I’ve found that works is to override the attenuation, which is blah ok I’ll do it but I’d rather not. Is this a known issue with 4.19.2 that I missed? Is there an obvious fix that I’ve overlooked?

I’ve referenced the following documentation here, here, and here and as I said nothing from these topics have fixed the issue.

Any help pointing me in the right direction would be greatly appreciated.

Cheers!

Sorry for digging up an old thread but I also had this problem and found a solution, even thought it is not graceful.

Go to the sound file and scroll down to “Virtualization Mode” and change it from “Restart” to “PlayWhenSilent”. This made it work for me!

9 Likes

Had the same issue and for some reason only working with sound queues. I did not change anything in the sound queue just put the wav file in it, weird.

EDIT: This lloks to be an issue with looping not checked, you can use que or wav file as long as you have looping checked: Unreal Engine Issues and Bug Tracker (UE-53644)

1 Like

It’s not a bug, you need to have “play when silent” enabled like @BumpLAD said above.

thanks mate… si picture below for where to find it using UE 5.2 and Metasound

Screenshot 2023-06-17 072531

nice, if anyone is trying to load sound dynamically from files, changing the settings to the sound file like this obviously won’t work.

However, you can use set virtualization mode node to make this happen hehe, assuming you have a reference for sound wave object

So when using Metasounds I’ve found that it doesn’t care about looping settings (any of them) or the virtualization settings. The only way I’ve found to make this work is the following:

You need to first delete the “One Shot” interface on the left. This will get rid of the “output” node. That’s fine. Then drag off from the node that would have plugged into it and promote it to a graph variable. The right click to where the input is and get a delayed reference to that variable. Its important that you choose the “delayed” version or it wont let you connect it.

This fixed it for me! Thanks!

It was one of those things I knew, but forgot haha

Adding to this thread because the MetaSounds answer was not correct.

As said before, the solution is to change the Virtualization Mode to “Play When Silent.”

For meta sounds, the Virtualization Mode option still exists. Simply press the “Source” button in the top left to get access to the sound settings from the parent class. Then, in the details in the bottom left, there’s your Virtualization Mode setting.

I’m still learning and may be totally off my mark, so I had a question here – isn’t “Play When Silent” versus removing the OneShot Interface just different, not wrong? It seems like they are doing two different things:

  1. Play When Silent states it prevents virtualization and will continue to use a voice until concurrency or channel limits/priority take over (in which case it will restart the sound the next time).
  • The benefit here is when entering/exiting the attenuation range, the sound will usually pick up where it would be at had it been playing the whole time. This could be good for synchronization or longer ambient tracks.
  1. The OneShot interface seems to be almost like a marker that helps reinforce this is a sound that should be a one-shot and helps ensure it will eventually get cleaned up and not stuck/leaked. A non-OneShot sound, like when looping, needs to maintain some kind of reference so that it eventually can get stopped. I got that information from this post: Why does Metasound oneshot interface loop UE5.1? - #2 by Minus_Kelvin
  • The benefit with the option of removing the optional OneShot interface is that you can keep the virtualization mode set to Restart, and the sound loop will just simply start playing from the beginning again when you re-enter attenuation range, which may be fine for some audio loops.

I’m not sure what kind of performance impact there is for maintaining multiple voices (Play When Silent). I’m assuming there is some impact, and so it becomes a balance of performance vs. any disruption should your sound loops be restarting versus continuous playback, which would be situational. Either way, I would think OneShot could be removed independent of Play When Silent vs Restart if this is some kind of ambient loop.

As one more resource for this, the MetaSounds Quick Start tutorial includes construction of a Wind sound and requests the OneShot Interface be removed as it isn’t necessary for ambience or music: MetaSounds Quick Start | Unreal Engine 5.5 Documentation | Epic Developer Community

I may be missing some nuance here! Please feel free to clarify anything I’ve misstated. Just trying to cobble together what I can find from posts and documentation in case anyone else stumbles upon this :slight_smile: