Limiting sounds by owner/ID?

I have multiple weapons firing fast around me. They all use the same firing sound event. I can limit the concurrency, but then I will start getting voice stealing. (audibly hear that one weapon is stealing another weapons firing sound).

Is there a way to limit per owner instead?

So that each weapon (that still uses the same fmod event), can play a max of 2 sounds simultaneously.

Right now it seems that if I set one fmod event to have a concurrency of max 2, then if I have, say 4 weapons using the same fmod event, only 2 of them will play.

I’m looking for a way to set concurrency to 2, on each weapon.


There’s 2 problems with your demand.

  • Since you want to limit to 2 instances, I guess you want a “creative stealing” (as opposed to a “resource management stealing”). Unless you set the stealing mode to “none” FMOD doesn’t really handle that well, since it doesn’t have the option to make a smooth cut.
  • FMOD doesn’t know which game object launched the event, so there’s no possibility to set a max instance per game object

Depending of what you exactly want, it may be possible to create the logic you want inside the FMOD event. Can you tell exactly what you want?

Thanks for responding (as always Alcibiade! :)).

I would like to have 2 different concurrency modes.

A: 1 for a single weapon: This weapon can only have 2 audio events playing at the same time (2 firing shots), and will always steal the oldest fired shot.

B: 1 for a group of weapons using that specific event/fire sound.
So if I have a group of 4 weapons using the same firing sound event, I want each weapon to max have 2 simultaneous firing sounds but the whole group of weapons that use the same fmod event, should have a max of, say 10. (or whatever).

That way, I can have a weapon that will always sound good (not too many long firing tail sounds, only 2), but still have a group of weapons that use the same firing sound, that can play more than 2.

So group concurrency and owner concurrency.
Actually, just have a concurrency that repsects the owner. The group concurrency would just be the normal concurrency in fmod.

That would be solved, by having an owner of the sound. (which weapon is playing it. If this weapon is playing it, then max concurrency=2).
This firing sound goes into a mix bus that has the concurrency set to 10, so a max of 10 sounds would be played (or whatever).

Makes sense?

I may be wrong, but I think the only way to handle that would be to do it in the game code. Keep track of the instances having been played, store them in an array, before each new spawn test the stored instances to verify if they are still valid/playing, then stop the one you need to. This will by the way allow you to use stop_allow_fadeout, which will cut the sound as you’ve configured it with the release. And do that logic at all the levels you want (per weapon, global…).

Yup, that was what I feared. But thanks for looking into it :slight_smile: