Understanding virtualize stealing

After reading about voice stealing here I thought that setting a low max instances and stealing to virtualize, would mean that only the loudest events would be heard. But this doesn’t seem to be the case.

I have 10 instances of an event playing in the scene, but even if the listener is really close to an instance, I do not hear it, although it is clearly the loudest (I can hear this when setting Max Instances to infinite).

Am I misunderstanding something? Basically I just want virtualize all sounds except the nearest/loudest. These are looping sounds.

Thank you!

Here is example of what I mean: FMOD Virtualize Bug? - YouTube

It seems like it just virtualizes the oldest event and not the quietest event

How are the volumes of your event instances being set? I ask because the FMOD Engine calculates audibility by checking for a specific list of sources of volume adjustment for each event instance, so if your event instances use a method that’s not on the list, that particular source of volume adjustment may be ignored.

Looking at your video, I can see that your events have a “distance” parameter. I’m guessing this is used for volume automation, but exactly which volume properties are being automated on it? The event’s master track volume fader? An audio track’s volume fader? An instrument’s volume fader? The fader of a gain effect?

Hi Joseph,

I did some more experiements, and it seems to be reloated to the Google Resonance spatializer. Here is a video showing it:

I created a new empty project, and as you can hear the FMOD spatializer works as expected (except that it stops the closest event when new ones are started), but when using the Resonance spatializer, the oldest instance is never played once the voice limit is reached, even when the listener is right next to it.

Can you confirm that this is a bug?

The Object Spatializer seems to have the exact same problem:

I’m afraid I haven’t been able to reproduce this issue. When I test here by mimicing what you do in your videos, creating new instances of the event at a greater distance from the listener than the first instance does not cause the first instance to fall silent when using a spatializer effect; and with all three effects, event instances seem to virtualize and un-virtualize correctly such that the instances closest to the listener are audible.

It’s therefore likely that I must be missing some key part of the reproduction steps for this issue. Perhaps it only occurs in certain versions of FMOD Studio, or there’s some feature of your project not shown in the video that causes the difference in behavior. Which version of FMOD Studio are you using? Are you able to send us a project that exhibits this behavior?

I am using 02.02.03.
Here is a link to a test project: Resonance_Spatializer_Bug - pCloud

Try the two scenes in the Sandbox. The one called Resonance has the bug and the one called FMOD works as expected

Aha! Using your test project, I was able to reproduce this issue in version 2.02.03 of FMOD Studio, but not in version 2.02.15. That suggests that this issue existed once, but has since been fixed.

Checking at our records, I can see that version 2.02.03 did, indeed, have a bug that caused object spatialized event instances (i.e.: instances of events using the object spatializer and Resonance Audio spatializer) to not take into account additive gain when calculating event instance audibility, resulting in FMOD incorrectly detecting all event object-spatialized instances as being equally loud. When FMOD needs to virtualize an event instance and has multiple equally-loud instances to choose from, it uses event instance age as a tiebreaker, resulting in the behavior that you’ve observed.

Fortunately, this bug was fixed in version 2.02.05, so all you need to do is update FMOD Studio and the FMOD Engine to that version or later.