I have all dialog associated with a group. That group has max instances = 1.
If an event is playing in that group a new event will not start.
Most of the time this is what we want.
However, there are a small number of clips that we need to play even if something is already running in that group.
I have not found any combination of stealing, priority, number of instances that would provide this.
I want to author this behavior. My clients are not sophisticated users of FMOD. They just want to invoke sound events and I want to create their behavior.
Is this possible.
Using FMOD 2.1.
Thanks
ddt
There currently isn’t a feature that allows certain events to be both routed into a certain bus and also ignore the priority/stealing behaviour.
For this kind of behaviour it would be best to have this special event not routed into the same bus, and either use a series of command instruments to stop any event routed into that bus you wish to control, or use a few lines of code to stop all events on that bus before starting the special event.
We ran into this issue today.
- Beat’em’up game with lots of enemies attacking the player
- Player speech bus is set to max instances = 1, stealing = none
- Works great for most sounds, like grunts, efforts
- When player dies, he lets out a long scream; but it sometimes doesn’t play because less important speech SFX is playing
I think our solution will be to call Stop on that bus before playing the scream.
Would be nice if Command Instruments had a way to reference buses. That way, we could use that to stop all sounds on the bus before playing the scream event, and for any other speech events we deem important.
A new voice stealing mode called “Priority” could also be useful; Any new event instances with higher priority will steal voices. Lower or equal priority will not steal. I suppose the whole concept of priority isn’t meant for this kind of thing though; more for virtualization of event instances.
I can definitely see the use for a bus-level stealing mode that steals based on the priority of the event instances that are playing into it. I’ve noted it, as well as adding a “stop bus” command to command instruments, on our internal feature tracker.
Richard’s workarounds above still stand - I’d also suggest using a snapshot instrument in the scream event, and/or compressors in the mixer sidechained to the scream event, to apply attenuation to or mute a the SFX bus.