Unknown Listener is Hearing Events at Scene Origin

Hello,

I’ve noticed a strange issue in our first-person split-screen multiplayer game. Based on player count, we dynamically add listeners to each player object, set their listener index, and then update how many listeners are in the scene to the FMOD.RuntimeManager. All the player listeners behave as one would expect. The issue is, Events are being heard at the origin point (0,0,0). For example, if I throw a knife over the origin, I can hear it fade out as it gets further away from the player and then get loud again once it passes over the origin of the scene. It is as if there is an additional listener getting placed at the origin of the scene. When I search for studio listeners at run time, the only ones that show up in the scene hierarchy are on the players, so I’m at a loss. If anyone might know what could be causing this or has dealt with something similar before, I would love some tips! Thank you so much for taking the time. Cheers,

p.s. We are using a “Manager” scene that is loaded and open at all times. I know FMOD kicks a warning error when there is not a listener in the scene. The only listeners we use are in “player” scenes and attached to the player objects. The UI and Menu music are 2d events, and because of this, I don’t put listeners in those scenes. Loading wise, it goes Manager (on application launch), to menu scene, then a player scene loads (with the listeners). Hope that helps. Thanks again

-Mitch

If no listeners are set (for example in Unity with the FMOD Listener component), the FMOD System will create a listener at the origin with an identity transform. This won’t show up in the Unity Editor because it is not attached to an object/component.

If you are adding listeners dynamically, it sounds like you may be starting off with no listener components. You could add a listener to the Manager scene that has a position very far away from anything 3D so that it will only hear 2D sounds.

Hey Cameron,

Thank you so much for the response. I was hoping something like this was going on.
Should be able to get it sorted out now. Take care,

Hi,

If no listeners are set (for example in Unity with the FMOD Listener component), the FMOD System will create a listener at the origin with an identity transform. This won’t show up in the Unity Editor because it is not attached to an object/component.

How can I disable this listener ?

Hey @dongvanhung ! This isn’t a super glamorous solution, but it is quite simple and works for stopping the listener with the identity transform from ever getting created. Just make sure it exists at startup before RuntimeManager is initiated.

Have a “dummy listener” object that persists and after you have added the listeners you want at any given time, call a function similar to this. It will force the RuntimeManager to know which listeners you want to be working.

my GetActiveListeners() function is essentially checking for the amount of listeners that FMOD and my occlusion manager have registered. In your case, just check if RuntimeManager.Listeners is greater than 1, and if so, disable your dummy listener. Again, call this function right after any time you know you are creating a new object with a listener. If your RuntimeManager.RemoveListener() doesn’t look like this, it should!

Hope this helps! Cheers!

*** Note, I am using FMOD for Unity 2.02.04, newer versions may be different.

2 Likes