Steps to Reproduce
I have a looping sound (Sonar Bleeping) that can be heard over some distance. Once the player leaves the attenuation the sound stops (as expected) but once entering the attenuation again the sound does not restart.
This seems to be the case with ALL looping MetaSounds. This, as you can imagine, makes creating any looping MetaSound redundant if you place it in a level with attenuation. i.e. engine loops, windy trees, river beds, lakes, waterfalls etc. As soon as you leave the attenuation radius the sound will no longer restart.
There is a Virtualization mode “Play When Silent” that fixes the issue, but this constantly takes up a voice. There seems to be an “EXPERIMENTAL” “Seek Restart”, which (in the description) does what I would imagine is needed to fix the issue. But it doesn’t work i.e. it had the same result as disabling the the virtualization mode.
I can understand this behavior if you trigger the MetaSound with play at location. But if I have an audio component (attached to a BP) then i dont understand why the sound wouldn’t retrigger when you enter the attenuation sphere again like Sound Cues.
Additionally, we have the component destroyed when you leave replication range and trigger again when you enter replication range. But this means the attenuation has to be the same distance as the replication range which has a host of it’s own issues.
Please let us know if there is a fix coming for this as we would like to use MetaSounds for everything and no have a hybrid of Sound Cues and meta sounds in our project.
Thanks!
Hi TC_C-Boy,
I was unable to reproduce in our 5.7 build here. I believe this was fixed. I assigned this ticket to a dev on the team to confirm.
But I just wanted to clarify that you’re making the MetaSound loop by deleting the default-added One-Shot interface (UE.Source.OneShot), correct? In my test it restarts as expected when coming back in range.
Hi Aaron, thanks for getting back to me. I only just received an email about this.
I did not delete the one-shot interface, actually had no idea you had to do that as it removed the “on finished” which felt scary. But i guess if you do need to stop the event you would do it with a trigger anyway.
Deleting the interface made it work as expected. Thanks so much for clarifying!
Craig