Can a Programmer Instrument be a mixer group?

Is there a way to pass a mixer group through a Programmer Instrument, if for example, I want to feed a mixer group through an event that contains additional audio tracks and effects, so the group gets processed in a way that bypasses the normal mixer routing.

Or is this really intended for a Transceiver?

One concern I have about Transceivers is that there are up to 32 of them total, so what if what I want to do ends up exceeding that # of possibilities at some point?

And also related: is there a way I can dynamically route an FMOD event to a mixer group that isn’t hard-coded? For example, if I decide I want to route an event containing a Programmer Instrument (and the event it’s in) to “Music” group instead of “Ambience” group on-the-fly.

It looks like the answer is NO but please correct me if there’s been any changes:

If it’s still a hard NO, would the feasible workaround be to make COPIES of all the events w/Programmer Instruments under one mixer group, and move the duplicates to the other mixer groups, then callback as-needed?


Or at least, not without jumping through hoops. You could theoretically create a custom plug-in effect that generates an audio stream, and then pipe that stream into a programmer instrument or custom plug-in instrument, but that would be a lot of work to reproduce what transciever effects already do.

Yes. The transceiver effect exists to break the normal rule that you can’t route a signal into an event instance from outside it, so this is exactly what it’s intended for.

That being said, the normal rule exists for a reason: It discourages confusing routing spaghetti that makes a project easy to break and difficult to understand. We therefore discourage people from using transceiver effects, unless they know exactly what they’re doing and there’s no viable alternative.

If you need more than 32 transceiver channels, we reccomend reevaluating whether the transceiver effect is the right tool for what you’re doing.

The transceiver effect is like a sledgehammer: It’s powerful, and allows you to create new routes that would otherwise not exist, but it’s easy to go too far with it and create new problems that you’ll then have to solve. If you can use a different tool and a lighter touch to achieve the same goals, you probably should.

This is one of those questions where both “yes” and “no” answers would be equally misleading.

Technically, the answer is “no,” as there is no way to dynamically change the routing of an event on the fly. However, there are a whole bunch of ways in which you can change how an event’s audio signal is processed in real time.

The first and most obvious is snapshots. A snapshot is a tool that lets you change property values of effects and faders in the mixer to specific defined values in real time. If you want the effects that process a signal to have different values in different circumstances, all you need to do is create a snapshot for each of those circumstances, scope the relevant properties into each of those snapshots, and assign those properties appropriate values for each snapshot in the set. For example, if you wanted certain events or buses to have multiple possible routing paths, each with its own signal chain, you could create one return bus for each of those signal chains, and place sends to those return buses on the group bus into which the event is routed.

The limitation of snapshots is that they can only affect content in the mixer, and so can’t do anything event instance-specific. If you instead wanted to be able to make the decision about how an event is routed on a per-instance basis, you could add one send to the event for each possible routing destination you want it to have, and automate the levels of those sends on a local parameter. The parameter’s value would then determine into which bus the event instance’s audible signal was sent.

This method would also work.

1 Like

@joseph I know this whole rigamarole has been awfully entangled and involves a lot of subtleties and possible paths, but you admirably recommending towards/away from certain directions has been an invaluable resource, and others who have similar scenarios, I’d imagine.

Again, VERY VERY grateful you took the time to think through the implications.

A couple of my takeaways from this:

  • Generally, don’t use transceivers unless there’s not another practical/conventional way to achieve the desired routing. They will likely confuse things. Also mindful that setting things up in a clear fashion beforehand prevents “How are these things routed?” issues in the future, both for myself and communicating to others on the team about how audio works with FMOD.
  • Snapshots, despite the “can’t do anything event instance-specific”, have a number of uses beyond conventional situations like “Game pauses and it blurs the music”. I also appreciate Best way to add a custom pitch LFO envelope shape that triggers randomly? - #3 by torley-gallium

As for this…

That might be the manual but clearest path to this, right now. Is there anything you know that can help automate this process? Or at least tell me, “Well you created 3 new events for the ‘Music’ group, remember to copy them to the ‘Ambience’ group.”

You could write an FMOD Studio script to create duplicates of the events in question and change the routing of the duplicates. Automating this kind of large-scale multi-step change is exactly what FMOD Studio scripts are for, after all.

1 Like