Change parameters of reverb plugin in mixer return

I want to change the parameters of a reverb placed in a mixer return similar to how FMOD’s reverb zone concept works (multiple reverb zones overlapping will morph the parameters of a single reverb DSP) or to how Steam Audio’s Listener Reverb works (by creating early and late reflection patterns from the current listener position through ray-tracing).

What I don’t understand is how I can access a specific plugin placed in the FMOD Studio Mixer and how I can change its parameters. The easiest way would probably be to make an automation for every reverb parameter, but that will pollute the Studio project and it’s also tedious and make it hard to know what exact plugin an automation refers to.

The API mentions how to manipulate parameter values, but it seems that it’s required to have an automation assigned to the parameter first (what I call manually exposing a parameter): https://www.fmod.com/docs/2.02/api/studio-guide.html#setting-parameters
There’s a mentioning of local and global parameters and the linked section to parameters clearly refers only to manually exposed parameters.

I’m basically looking for a way (via c++/c# or engine integration components) to access a specific plugin in Studio’s mixer and change its parameters without the Studio project having to manually expose every parameter.

I agree that this would be the easiest way, but I do see your point about potentially cluttering up your project. For what it’s worth, if you right click on a global parameter in the mixer overview, you can navigate to each element of the project that the parameter affects.

This is possible - it involves manually digging into Studio system’s underlying DSP chain, retrieving the DSP for the reverb plugin, and setting the desired parameter value. Generally, digging into the Core API and DSP chain while using the Studio API is recommended against, as the Studio system assumes responsibility for managing Core functionality, which can cause obscure and difficult-to-diagnose issue if you interfere. I suspect manually setting DSP parameter for effects that aren’t automated/modulated and are otherwise static shouldn’t cause issues, but doing so to a parameter that is automated/modulated likely would.

That said, the easiest way to do so would be to:

Thank you so much, this looks like what I want!

Regarding DSP::setParameterFloat, does it expect the range of a specific parameter as its true values or only normalized floats? I’m asking because I’d prefer to set the true values I kmoe the meaning of (like e.g. 10000Hz) instead of normalzed values where it’s cumbersome to get their actual value (like e.g. 0.75).

I found this FMOD_DSP_PARAM struct which gives me hope that true values are the way to go here?

It depends on the parameter, but those you’d expect to use a specific range (i.e. frequency) will. The parameter range and mapping will match those you observe in Studio.

If you wish to get info on a parameter at runtime, you can use DSP::getParameterInfo to get a parameter’s description, which will contain a struct that provides the min, max, and default values, and so on - e.g. FMOD_DSP_PARAMETER_DESC_FLOAT.