Per game object control?

Is there any way I can do stuff per game object in FMOD? E.g. if I play a land sound, I’d like to duck the footstep sounds for that character briefly. Or if an any enemy robot plays a pain sound, I’d like to reduce the pitch of the robot humming loop on only that robot for 1 second.

I do this stuff all the time in with events in Wwise, but not sure if it is possible with FMOD?

2 Likes

Aren’t snapshots doing what you’re looking for?

Wouldn’t a snapshot duck the footstep sounds for all characters when landing? I want to only do it for the specific character who is landing :slight_smile:

That’s more tricky indeed.
You could use a “private” parameter with a velocity (for the release) and a seek speed (for the attack), and automate what you want within the event with it. You then trigger the effect by using a command Instrument, setting the value of the parameter. The parameter would recover its original value with the velocity.

Thank you. Not sure I understand completely. Wouldn’t the command instrument still set the parameter for for all footstep instances, ducking them all?

You’re right, in fact I was describing a possible implementation if everything is controlled in one unique event. FMOD event instances are pretty agnostic to what’s happening in other event instances, so I’m afraid to achieve what you want, you’ll need to either have one unique event controlling everything, or make all the connections in the game code…
Wwise allows to connect things together more easily? That’s interesting.

Oh that is a shame.

Yeah in Wwise, you can do stuff like setting this where you set parameters, volume etc. for different sounds playing from the same game object (you can chose “Game Object” or “Global” as a scope). I was really excited to see command instruments coming to FMOD because I thought they could do similar things, but realizing they only work globally was a bummer.

What would be the “game object” in your case? A character, I guess?

Yeah exactly. So as long as I am playing all my sounds from the same object on that character, I can control parameters etc. across events

In FMOD there is no concept of “game objects” or distinction of event scopes (game object/global). Trying to replicate your behaviour 1:1 as in Wwise will not work. I don’t think it’s possible to do what you want directly from Studio.

E.g. if I play a land sound, I’d like to duck the footstep sounds for that character briefly.

The simplest solution is to use a local parameter in your “Footstep” event and set it at runtime to a value for the specific EventInstance when you play the “Land” sound. (Do your ducking modulation with the parameter).

1 Like

Okay I see, thank you. I guess I just gotta try thinking in a different way for FMOD :slight_smile:

So I guess it would actually make sense to create a big master event for something like a character, and then use parameters to play sounds. That way I guess I’d be able to do things like ducking, stopping events, incrementing parameters for only that specific character :thinking: I wonder if there are any downsides to this approach…

Yes, that should work.

You could also do this in the mixer using side chains depending on how granular your mixer structure is.

Wouldn’t all the instances of a character go through the same mixer channel? So if I did the ducking there it would always apply to all instances, and not just the one I want to duck for?

Indeed, it wouldn’t work. But you still can use this sidechain idea on your individual event tracks, for instance for ducking the footsteps while landing.

Ah I was thinking you were doing this for the “player” and not something with multiple instances.

Rereading the thread I see what you mean. My bad!

Hey there - spotted this and couldn’t help but chime in…

I have done this sort of thing in the past, and whilst it will give you the kind of flexibility you are after (ducking etc at the individual instance level, in all the wonderful fancy ways that FMOD allows), I don’t necessarily recommend it unless you absolutely have to.

I promise that you will get better results if you do what @alexzzen hints at and manage the individual sounds through some ‘robot audio handler’ that you write yourself. Big complex FMOD Events can be very powerful, but you can also get yourself into all sorts of tangles, and there are some limitations.

In particular, you will find (but please test this yourself) that triggering an instrument clip via a parameter change will have audibly more latency than creating and starting a dedicated event for that sound! And latency is really something you want to avoid, if at all possible.

Also, let’s suppose you end up with a step and a pain sound for your robot. Later, you decide you want the pain to have voice stealing pririty over the step (seems pretty likely). You won’t be able to utilize the event level stealing behaviour because they are in the same event!

I do recommend complex master events for certain things, like smooth loop layers interacting with each other, and of course music and ambience beds and so on, but my professional opinion is that you end up with something much more robust by using a careful combination of ‘complex multi-sound events’ and ‘dedicated single purpose events’, all managed by a ‘master’ script (replacing the Wwise ‘object’ that we lack)

My general rule (which I don’t always follow but inevitably regret) is this: if something can be easily and painlessly extrapolated out to the code level, without significantly harming your ability to tweak things at runtime with Live Update etc, then you should absolutely consider doing it.

But I’m just one soundie in a sea of soundies, you do you!

3 Likes

Thank you for the input @Damion1 - very interesting!

Today I did a test, and it did not seem like there is any latency playing a sound with a parameter inside a continuous looping event vs. playing a new event. Do you remember if latency only started occurring when the event grew bigger?

About the priority you mention. Could a workaround for that be using event instruments, so I set the priority on the event instrument?

For the projects I am currently working on, I am not allowed to write any code myself, so I have to ask a programmer every time I want to change something, so that makes this option even more appealing. But of course, I don’t want to do it if it is too risky. I guess I’ve just been spoiled with the game object access Wwise has :grin:

Here’s a video of my latency test. Is it similar to how you have set it up?