Audio volume priority does not work

Has anyone tried to follow the instruction here on how to implement reverb zone in UE4? https://www.fmod.com/resources/documentation-ue4?version=2.0&page=user-guide.html#reverb-zones
I follow everything it said there, but when I have 2 audio volume overlap upon each other with priority 1 for the smallest one and priority 0 for the bigger one, it still plays the reverb snapshot of the bigger one despite I have fully emerged the character in the smaller volume. I tried to change the priority value around and it still happens.

Did I do anything wrong? What could be the problem here? I try to use the same setup but with Unreal Reverb setting and it still works fine so I assume it is not the engine’s fault.

I am able to get it working as expected by following those steps, I’m not sure why it wouldn’t be working.

What version of FMOD and UE4 are you using?

I was using unreal 4.21 and FMOD1.10, I’m not sure where did I do wrong cause apparently the reverb does play, but only the priority of the audio volume doesn’t work.

Are you able to test it in a new/empty project to try to isolate it?

I tried to test it in a blank project and apparently it also have the same issue. I put a youtube link down there to show my set-up. I have done this same thing with Reverbs and sounds from UE audio, they work just fine as expected. https://youtu.be/qhi4dIU5kf0

I managed to reproduce the issue, it appears that we don’t update the listener volume separately to the InteriorSettings (eg. Ambient Zone Settings).

This should be a fairly easy fix, we just need to update the volume used in FMODListener.cpp more often.

From:

void FFMODListener::ApplyInteriorSettings(class AAudioVolume *InVolume, const FInteriorSettings &Settings)
{
    if (InteriorSettings != Settings)
    {
        ...
        Volume = InVolume;
        InteriorSettings = Settings;
    }    
}

To:

void FFMODListener::ApplyInteriorSettings(class AAudioVolume *InVolume, const FInteriorSettings &Settings)
{
    if (InteriorSettings != Settings)
    {
        ...
        InteriorSettings = Settings;
    }
    Volume = InVolume;
}

Because the InVolume is always the highest priority volume enveloping the listener, we don’t need to check the priority again.

I will do my best to get this fix in for the upcoming release.

Thanks Cameron!
Our programmer has applied the fix to the project and everything work as it suppose to now

1 Like