Feature request: new command types in command instruments

Hey, I thought it’d be nice to have some new command types added to the command list—I think sound designers would greatly benefit from these additions in terms of flexibility and control over their projects. More specifically:

  • A command to pause/resume either a specific event/bus/snapshot or all events/busses/snapshots with a fade in/out and various types of interpolation (linear, log, exp, S curves, etc.)
  • A command to stop all events/snapshots (both immediate and with AHDSR)
  • A command to set an event local parameter (not just global ones)
  • A command to set a specific value of an event or bus (e.g. master volume, sends, pitch, etc.)
  • A command to mute an event or bus (in this regard, it would also be great to have the possibility to mute an event instead of just turning the master volume all the way down to -∞)

I can see how commands for pausing and unpausing would be useful. I’ll add this suggestions to our feature/improvement tracker.

Pausing and resuming with a variety of different fade curves is not something we currently support even without command instruments, but I can add that suggestion to our feature/improvement tracker as well.

It’s extremely rare for someone to want to stop every event in their project; most games play at least some background music or ambiance even when paused or loading, to avoid giving the impression that the game has frozen or crashed. Could you describe how you expect this feature to be used?

The existing set and increment parameter command instruments can already do this if set to target local parameters.

We will not add this feature. Command instruments are designed to issue API commands, allowing you to control your game’s audio content as if you were using the FMOD Studio API - and the FMOD Studio API does not allow you to directly alter the property values of events.

If you want to adjust a property value at run-time, you should automate that property on a parameter. You can then set the value of that parameter using an API call - or a command instrument, if you prefer.

Muting buses and events is only possible when auditioning content in FMOD Studio, either in the event editor and sandbox or by using live update. It’s not a feature of live games, so it’s not something we’re interested in adding a command instrument for.

Yes, I would say this is pivotal, especially because every time you pause/resume an event/bus via code you’ll hear clicks and pops, which is quite annoying. Also, sometimes you may even want to apply specific fade curves to paused/resumed events.

This would be more of a testing feature for me during the authoring process, but it could be useful to have it in game nonetheless.
For example, sometimes I find myself testing many looped events together in the sandbox or event editor window and I wish I could stop them all with just a single click, instead of having to stop each instance one by one.
Also, another scenario might be to have looping referenced events in the sandbox. Suppose we have two events A and B that trigger two looping events C and D. In that case, events C and D could not be stopped manually and would keep looping forever, so you would basically be forced to reboot FMOD.
But I guess this could be a useful in-game feature as well - you could use it to stop all the events and snapshots when going back to the main menu, for instance.

I don’t think you can do this using other events, or can you? I mean, what if I wanted to use an event B to set a local parameter on an event A? Is that possible?

Honestly, I think it would be nice to also have the ability to toggle the mute button on/off or scope it in/out when using snapshots, instead of just turning the volume fader all the way down.
Also, I don’t see how you can mute an event (i.e., its master bus) in the event editor or sandbox, I only see that you can mute specific event’s tracks - am I missing something?

The artifacts audible when pausing or resuming events are a known bug that we’ll fix in an upcoming release of FMOD Studio.

I’ve added your request for a variety of fade curves when pausing or resuming to our feature and improvement tracker. For now, if you want to fade out content prior to pausing it, we recommend using either automation within an event or a snapshot with an AHDSR modulator on its intensity.

We already support bulk control of event instances in the sandbox. To play or stop a group of event instances, multi-select them in the pane that appears on the right side of the sandbox, then click any of their numbered/play buttons in that pane.

You can stop all playing instances of a specific event by using a “stop event” command instrument. This involves less collateral damage than stopping all instances of all events in the project.

While some games do stop all audio for a moment when going back to the main menu, it’s hard to imagine what benefit there would be to using a command instrument for that rather than an API command, as any command instrument that stopped all events would also stop the event instance containing that command instrument.

Ah, I see - you want to be able to set the values of local parameters in event instances other than that in which the command instrument is triggered.

Unfortunately, that is not practically possible. In order to set the value of a local parameter in one specific event instance, a command instrument would need some way of specifying which event instance it should target. The problem is that there is no way for us to present you with a list of event instances to target when you’re creating the command instrument; after all, the list of target-able event instances can change from moment to moment as your game is played, and cannot be predicted in advance.

Are you asking for a command that lets a command instrument set the value of a local parameter in all event instances that make use of that parameter? I can see how that might be useful in cases where you want a parameter that can have different values in different event instances, but which occasionally is “synced up” to temporarily give all its instances the same value. If that’s what you’re after, let me know, and I’ll add it to our feature and improvement tracker.

Muting buses and tracks is an auditioning tool, designed to make it easier for you to listen to parts of your mix while designing your game’s sound in FMOD Studio. Muting buses is not a feature of a live game; the FMOD Engine is not designed to gracefully mute buses on the fly in a game as it is played.

As I mentioned above, command instruments allow you to issue API commands; as there is no API command for muting a bus, we cannot make command instruments issue it. Similarly, we cannot add the ability to scope the mute state of buses into snapshots, because the mute state is not designed to be used in a live game.

We are unlikely to improve support for muting buses in a live game because we already support a variety of alternatives. That being said, if you request it, I will add this suggestion to our feature and improvement tracker for future consideration by our developers.

You can’t mute anything in the sandbox. In the mixer window, you can mute an event by clicking the “mute” button on its mixer strip. Event mixer strips do not appear in the mixing desk by default, but can appear if you switch the mixing desk to “Selected Buses” view or a custom mixer view that includes events.

That’s great news, thanks! Having the ability to pause and resume events and buses via command instruments using a variety of fade curves will definitely be a great addition.

Oh, you’re right, I forgot about that! But I was also thinking about having several events playing at the same time in the event editor window.

The problem is when you have more than just a single looped event playing at the same time, which is something that happens more often than not when using the sandbox pane. This would require having a “stop event” command instrument for each of those events - not a big deal, really but I find that having a single command instrument to stop them all would make things much easier. However, if this is impractical I can live without it.

Again, not a big deal. It’s more a matter of having more control over the project within FMOD and offload some work from the audio programmer.

Would be nice to have.

I thought you said that muting buses and events can be done when auditioning content in FMOD Studio either in the event editor and sandbox or by using live update. However, I didn’t know you could do this by switching the mixing desk to “Selected Buses” - that’s awesome! But having a mute button also in the event itself would be great, in my opinion, much better than having to turn the event’s master volume all the way down to -infinity.

I’ll add it to our feature/improvement tracker.

Ah, my apologies. I should have been more careful with my words.

All events auditioned in FMOD Studio, regardless of whether they’re auditioned in the sandbox or the event editor window, are routed through the same project mixer. Also, you can use the controls in the mixer window to mute specific events and buses. So: While it is possible to mute events that are playing in the sandbox, it is not possible to use the sandbox window to mute events.

I’ll add your suggestion that we add a “mute” button to an event’s master track to our feature and improvement tracker.

Awesome! Thank you so much, Joseph!