Hi all,
I have some doubts about Fmod Studio capabilities\implementation tricks:
1)How is it possible to activate parameter based automation when using effects in the mixer?
For example, in a racing game, I create several engine events, each one corresponding to a different car (Ferrari, Porsche)…
Then all these channels are routed to a to a “Vehicles” group in the mixer, to easy mix and logically group them.
I would like to activate a Lowpass effect on this vehicle group (and not on every different engine event) when helmet cam is activated, so I would need a “isInHelemet” bool parameter to control this effect, for example setting cutoff frequency to 22Khz when helmet cam is off and to 5 kHz when is on…but I can’t add automation on the effects while they are applied in the mixer (and not in the events themselves). Right click on the effect parameter does not show “add automation”
Another example could be the need of a lowpass filter bound to the distance parameter for hf attenuation, for all the 3D events…it would be much easier to apply it on a mixer group in which all these 3d events are routed in, than apply it to every single event.
2) Is it possible to handle smooth transition between mixer snapshot?
We could call mixer snapshot as function of a parameter, creating an event and dragging the different snapshot in its master track. This could be another way to handle mixer automation.
But is it possible to pass smoothly between one snapshot and the other (for example, one having a lowpass set to 20 Khz and the other to 1 khZ)?
I tried to crossfade the snapshot in the master track as we do we the samples, but with no success…
3)Is it possible to directly access nested elements?
I try to explain myself: let’s suppose we have a racing game. We have to implement skid sounds. These sounds depend on the material of the terrain, on the status of the terrain (dry\wet), on the speed of the vehicle, on the level of “friction” produced. Moreover, we need to check if the wheels are against the terrain, and a different sample has to be triggered for every different wheel to avoid phasing artifacts.
So I create the following structure:
At the top level event I have a generic “skid” event with a material_type parameter that controls the selection of different nested sound events, such as “tarmac”, “gravel”, “grass”…
I also have all the other parameters needed such as WheelNumber,StatusDry\Wet,Level of friction,speed of the vehicle, wheel contact status.
For Every material (let’s consider Tarmac), I have other 2/4 nested sound events (Wheel0, Wheel1,…), corresponding to the wheels of the vehicle. Every wheel sound event has finally one or more samples associated and managed in funciont of the “Wheel0_Tarmac_friction” parameter (example for Wheel0).
The so nested friction parameter “Wheel_0_Tarmac_Friction” can’t be accessed directly by the programmer to be set: so this parameter is accessed by using an automation from the its parent event by usign the “Tarmac_Friction” parameter, that is copied exactly to “Wheel_0_Tarmac_Friction” parameter.
But also “Tarmac Friction” can’t be accessed directly by the programmer because it’s in the nested event “Tarmac”, so again this parameter has to be automated to be controlled by the top event “skid”. Here the friction parameter can be easily accessible by the programmer.
The need to create dummy variables and to control the nested parameters just via automation of the parent make things more complicated and less intuitive.
Would it be possible instead of the chain
programmer -> event "skid" friction parameter -> nested event "Tarmac" Tarmac_friction parameter -> nested event Wheel 0 "Wheel0_Tarmac_Friction"
to access directly the parameter of the nested event like
programmer-> skid.tarmac.wheel0->Wheel0_tarmac_friction ??
One could simply activate a “access from parents” option on the desired parameter and get there directly from the top level, because no further mappings are needed in some cases.
4)What’s the level of logic complexity do you suggest to implement?
This leads to the third question: If the direct access to nested elements is not possible, maybe it’s better to leave the material\wheels logic hardcoded by the programmer to avoid making the project too heavy and full of “fake” automations. Do you suggest any particular approach to handle logic between the programmer and the designer?
Thank you for your help,
best regards
Luca