I’m kind of new to FMOD (coming from several years w other tools) so this maybe a ‘read the manual’ answer - but am wondering if my solution has problems I may not be thinking of.
Say I have a huge bomb the player can throw, triggering an explosion event, and I want to duck just about everything… EXCEPT for a couple bus group children. IE Death VOs. I want the player to get a payoff when their bomb kills a monster - but don’t want to hear any other vocalizations that may be happening when the explosion happens.
The problem is, to ‘exclude’ a child, I you’d need scope on all siblings and not the parent, which can be cumbersome. OR, you could create a no-duck bus, but that also comes with maintenance/organizational overhead.
Solution: scope in the parent - and than add inverse (positive) gain to the one child you want to “exclude” from the snapshot. IE add -10db to a parent bus group, and +10 to the child that you’d like to “exclude”.
(One limitation is you only get 10dB of positive gain on the slider).
This makes it pretty quick and easy to add a bunch of parent busses and only have to add children you want to “exclude”.
I’d imagine FMOD sums all gain values each audio frame before applying gain to a source - and then applies it once - and this should be fine. Am I correct?
It may be easier, however, to create a group bus into which all the buses-to-be-ducked are routed, or to use a VCA to control the volumes of multiple buses. Group buses and VCAs are both relatively cheap in terms of resources, and so are unlikely to put a noticeable dint in your resource budget.
You are incorrect. Each bus creates a submix of all the signals routed into that bus, and any volume adjustment on a bus is applied to that bus’ submix. This is an important optimization; applying an effect to multiple individual signals is more expensive than applying that effect to a submix of those same signals.
Thanks for your help!
In a lot of cases, I am using buses - but it seems ‘less clean’ (and maybe improper use on my end) to organize routing for one snapshot - because when I create different snap shots, I am confronted with the routing organization as per the first snapshot.
…and I have not gotten into VCAs. I was a little concerned about getting too far into VCAs because at first glance, they look like more work to manage in terms of scoping in all the needed buses and events. Maybe that’s short sighted.
which is how I landed on this method of “excluding” a child from a snapshot with positive gain - as it doesn’t dirty up my routing hierarchy and is easy to setup and manage.
Also, thanks for the heads up on how buses are summed. In other engines I’ve worked with (maybe even Fmod Designer) “buses” didn’t necessarily mean summing (for optimization reasons) - unless you’re performing a DSP operation. Thanks for the clarification.