I’m trying to implement a dynamic reverb system for our game (i.e. if an event is found inside a predefined reverb space then it will have the reverb applied to it regardless of whether the listener is itself also in this reverb space).
To do that I’ve added global reverbs using the EventSystem::setReverbProperties function and then with the event I want to apply the reverb to I set the room value for the particular instance to 0 (this is pretty much what the designer help suggests we do). Now this works fine on events that are 2d (I can turn on or off reverbs in real time with no problem). But when I switch the event to a 3D event it no longer has the reverbs applied to it and no matter what I pass to the Event::setReverbProperties I cannot get it to apply the reverb. Is there something I need to do for 3D events?
- crimsontythe asked 6 years ago
Are you aware that FMOD has it’s own dynamic reverb system you can use for 3D events?
It quite powerful, it can blend overlapping reverbs and allows for geometry based sound occlusion.
In response to your acutal question, yes it is a bit different for 3D events due to FMOD’s internal dynamic reverb system. If you do want to roll your own 3D reverb system I can go into further detail.
Yes we’re actually using a combination of FMOD’s built in 3D reverb system for most events but we also want to have the dynamic system I am trying to implement for a special subset of events for which we want more realistic reverb behavior. This is mainly because we want to be able to have events with reverbs applied to them even though the listener is not inside the radius of an FModReverb object.
By some fluke I managed to get the 3D events to have their own dynamic reverbs by hard coding some test values, but after having changed the code around I could not reproduce the result again no matter what I do :(.
If you could go into more detail about what I would need to do to get this to work correctly that would be great!
On a different note, I noticed in the profiler that once you make a call to EventSystem::setReverbProperties the SFX Reverb node will always exist, even if I set the reverb properties to be FMOD_PRESET_OFF. Which means these reverb effects will continually take CPU cycles even though I don’t necessarily want them to be on.
If you’re wanting to compliment the FMOD 3D reverb system, the best way would be to add reverb DSPs to those events.
The setReverbProperties function uses the internal Reverb DSP. Since you’re using FMOD’s 3D reverb system that DSP is already in use.
Your alternative would be to not use the FMOD reverb system, and roll your own system using setReverbProperties, but that would probably be more effort than it is worth. Since it’s just a small number of events you need this effect on, I think you should just make a new Reverb DSP.
If there are multiple instances in the same room, you could apply it at a category level and save some CPU and memory.
The number of parameters on the SFXReverb DSP seems to be less than what is available in the reverb properties. We want to have the audio designers set their reverb settings through the Reverb UI in FMod Designer and just use those settings as is when needed. Would I get the same audio result if I just matched whatever properties exist in the Reverb Presets from FMod Designer with the parameters in SFX Reverb DSP and omit the other properties completely?
I would need a separate set of values for every event instance depending on their spatial location it could be possible that some instances would have more reverbs applied to them (i.e. an instance that is close the the threshold between say a large hall and a sewer like corridor) than others.
I’ve already rolled a system using the setReverbProperties function that works with 2D events. I can get a dynamically changing reverb on an event that moves around. I realize this doesn’t really make sense for a 2D event that has "unlimited" range but the results are what we want (minus the desired distance based attenuation of the volume of the event which we can’t get with 2D events).
Please login first to submit.