Oculus spacialiser hangs

I am using Unreal Engine 4.13 and FMOD 1.8.4, Oculus Audio 1.0.4, but this is a very long term problem. There is a sequence of events that I can’t reproduce that occasionally results in the Oculus Spacialiser hanging. FMOD sounds that don’t use the Oculus dll work fine, but sounds going through the Oculus dll stop playing. The only way to get Oculus enabled sounds to work is to quit the whole game and reload.

Have you come across this problem?

I’m using Blueprints, but am compiling the project from code, so don’t mind making code changes. Is there an “easy” way to make FMOD or the Oculus plugin shutdown and reload when I load the level so that the problem doesn’t persist for so long? Because it only affects some sounds, players don’t realise there is a problem and just assume my game has hardly any audio.

I’ve tested getting the Oculus Audio SDK 1.1.1 working with FMOD but the sounds in the game kept popping and cutting out so I’m assuming more work needs to be done with the latest version yet.

Any advice would be appreciated. Thank you.

Hi Brett, so sounds going through the Oculus plugin play fine initially, but then through some unknown sequence of events they stop playing? Do all sounds going through the Oculus plugin stop at the same time? Or do individual sounds drop out the longer you play?

If your game continues to run then the Oculus plugin must not have “hung” so can I ask you to verify that the FMOD events that are routing through the Oculus plugin are still actually playing even though you can’t hear them? Also can you check that their 3D position is sane.

Have you checked your log files for anything suspicious when the problem occurs?

Thanks for responding. Yes, they play fine initially. 3d positions are definitely sane.

History:
A while ago I had a problem where the Oculus Plugin sounds would drop out gradually. Ones already playing were fine, but new sounds couldn’t be started and I would see the following in the log file:
“Event {95a2a79f-82db-452e-8e72-bc460b3f078d} has waited 10.0 seconds for DSP graph to go idle - check for plugins that may be keeping it active”

At this time I was playing and stopping some sounds quite quickly for some effects. The audio would work for around 10 minutes, then sometimes drop out until the game was quit and reloaded. I worked around the problem by making short, rapid sounds not use the Oculus Plugin. This was in June so I was using older versions of FMOD and Oculus Plugin.

I changed FMOD events to have 1 max instance wherever possible to try and limit the occurrence of the problem.

Current problem:
I haven’t experienced the problem in development for a long time.
One user reported the issue online when they hit reload as some audio dialogue was playing via the Oculus plugin. The level reloaded, but all the Oculus Plugin audio stopped working.
I found out the issue is still in the latest release when I watched a YouTube video of someone playing my game. They loaded the game and it all sounded fine in the level selection screen, then they chose to load a level and all the Oculus Plugin sounds were absent from the start. They didn’t recognise there was a problem as the non-Oculus sounds were still working. The sounds were in the master bank and non-Oculus sounds in that bank were working fine. They died and reloaded the level multiple times, but the sound never came back. I asked them to load the game again and they reported it worked fine the next time they played.

Notes:
I’ve noticed that looping sounds are not stopped when a new level is loaded. I have code that goes through all actors and looks for FMOD components and stops them all and I specifically search for events that I know loop and stop those too. This is my attempt to try and ensure things are cleaned up properly whenever a new level is loaded.

Unfortunately it’s an infrequent problem and I don’t have any further logs. My worry is that something can keep hold of a resource as per the original error shown above (if I interpret it correctly). That’s why I was asking if there was a way to just get the Oculus Plugin or FMOD to clean up everything when I load a new level. I think it would be much less likely to ever occur if I could do that.

Thanks for reading, sorry about the length :slight_smile:

This may be an Oculus-specific problem. I suggest you a) get latest FMOD version, b) call eventinstance->stop(FMOD_STUDIO_STOP_IMMEDIATE) on all events that use the Oculus spatializer, when you want to make sure they really stop.

Thanks for your responses. I think I’ve finally found the problem. In some actors I was pausing events rather than stopping them as the player walked in and out of areas. If you pause an event and then destroy the actor or even use findInstances and explicitly stop the event, it’s actually not released. The result is that over time the number of events build up and new ones cannot play due to the plugin reaching it’s limit of events it can process. I now always stop events rather than pause them and it seems to be running well.