Best Practices for Using Convolution Reverb with Audio Volumes in Unreal Engine

I’m trying to apply convolution reverb to Audio Volumes in Unreal Engine because I love its quality and the fact that it doesn’t consume CPU when inactive.

Here’s what I’ve tried so far:

  1. Single Return Bus Approach
    My initial idea was to create one reverb return bus, add multiple convolution reverbs inside it, and control their wet levels using snapshots. For example, in a “Cave” snapshot, only the cave convolution reverb would have its wet level turned on, while the others remain off.
    However, this didn’t work as expected. Is this normal behavior?

  2. Multiple Return Buses Approach
    I switched to creating separate return buses like Reverb_Cave, Reverb_Hall, etc., and then adjusted the send levels based on the active snapshot. This works, but as the number of reverbs grows, it becomes hard to manage.

I’ve seen older posts suggesting parameter-based solutions, but I’d like to stick with Unreal’s default Audio Volume system.

Question:
What’s the smartest way to organize convolution reverb for multiple environments using Audio Volumes? Any tips or best practices to keep things efficient and manageable?

Hi,

Our general recommendation is to use multiple return buses, but I definitely empathize with you on the fact that it can become unmanageable with a lot of different reverbs. Can I get you to elaborate what parts specifically are difficult to manage so I can suggest potential ways to work around it?

That said, automating the wet level of individual reverb effects on a single bus should be possible with snapshots - what kind of issues were you running into when trying to get it working?

Also, what versions of FMOD Studio and UE are you using?

1 Like

I am using snapshots and i simply swap out the snapshot when entering a (different) area with reverb, or simply stop playing the reverb snapshot. it works great. for that i have 7 or so reverb types that cover small to large closed area to open and wide areas in the city. the are overall relatively subtle the bigger the space is they emulate, so i can use them in as many places as possible. the player won’t be able to determine the exact room size from the reverb anyways, but that might be not the case for you when you have small rooms that different slightly in size but that is the main thing your player navigates through.

void USFXCTLTunnel::SetCurrentReverbType(EReverbType NewReverbType)
{
if (NewReverbType != CurrentReverb)
{
CurrentReverb = NewReverbType;
switch (NewReverbType)
{
case EReverbType::CITY_DENSE: {
AudioComp->SetEvent(CityDense);
break;
}
case EReverbType::CITY_OPEN: {
AudioComp->SetEvent(CityOpen);
break;
}
case EReverbType::GARAGE: {
AudioComp->SetEvent(Garage);
break;
}
case EReverbType::SIMPLE_TUNNEL_SML: {
AudioComp->SetEvent(SimpleTunnelSmall);
break;
}
case EReverbType::HILLS: {
AudioComp->SetEvent(Hills);
break;
}
}
AudioComp->Play();
}
}

1 Like

Thank you for your response. As you suggested, I had multiple convolution reverb return channels and several 3D sound buses to apply these reverb effects. However, since I also had multiple snapshots, I realized I would need to configure over 100 settings manually, which is why I initially posted the question. That was my mistake.

I resolved the issue by creating a single top-level 3D output for reverb and placing the other outputs as sub-outputs. I decided not to use multiple convolution reverbs on a single return bus because even when the Wet level is set to 0, CPU usage increases significantly.

Additionally, when I inserted two convolution reverbs, the first one did not work regardless of its Wet value, so I thought it was a bug and decided not to use it. Please confirm this behavior. (For reference, I used two PCM wave uncompressed 48kHz quad-channel impulse responses.)

Anyway, as you suggested, I solved the problem by creating multiple return buses. Thank you! Convolution reverb is truly amazing!

1 Like

You’re absolutely right. And without using any code or Blueprints, it’s possible to solve this more easily by using Unreal’s built-in Audio Volume feature (for snapshot switching).