Long reverb tails get cut only in groups (Unity)

I have a problem since I updated Fmod to 09.2

In unity, if I have an event sent to a group with a long reverb, the tail of the reverb gets brutally cut after a while.
This doesn’t happen if the reverb is directly in the event.

Did any of you face the same problem? How can i solve it?

PS: I cannot reproduce this in the editor, everything seems to work fine there. Only in-game

Thanks in advance.

Daniel

Hello Daniele,

I’m going to assume that you are calling these events via PlayOneShot - is that correct?

PlayOneShot does not take return bus activity into consideration, so once the event has finished playing it will stop all sends as well. This is why you are hearing the reverb tails being cut.

If you are using sends on your event, it would be better to create the event instance and then use a non-immediate stop to allow the tail to play out. For example:

jump = FMODUnity.RuntimeManager.CreateInstance("event:/Jump");
jump.start();
jump.stop(FMOD.Studio.STOP_MODE.ALLOWFADEOUT);

I hope this has been helpful.

Thanks,
Richard

1 Like

Hi Richard,
Thank you for replying me also in private. i will answer here so anyone can read it in case they are having the same issue.

We are not using the play one shot method, but as you said we are creating an instance and stopping it with the allowfadeout. But we still have the problem.

Is there any infos you may need for further investigation? I’m almost sure this problem appeared after the Fmod Update.

Thanks,
Daniele

Hello Daniele,

I have consulted with our devs and it might be worth having no calls to stop() or release().

What is happening is the same as what I explained with the PlayOneShot - even with the ALLOWFADEOUT set, the playing of the event doesn’t take the return or group bus into consideration. So once stop() or release() is called, this will also cut the reverb tail from the return or group bus.

Please comment out the line where you have event.stop() called and see if this helps.

In my testing, I cannot see a difference between 1.09.02 and earlier.

I hope this has helped.

Thanks,
Richard

1 Like

Hi Daniele,

I’ve just been alerted to another method you can try:

As mentioned if a bus has no audio going into it (ie. the event) it will be destroyed, so instead you can lock that bus to stay alive using lockChannelGroup().

https://www.fmod.org/documentation#content/generated/FMOD_Studio_Bus_LockChannelGroup.html

This requires a reference to the FMOD Studio system (FMODUnity.RuntimeManager.StudioSystem) in void Start(), and then using Studio::System::getBus to grab the path to the return bus with the reverb.

https://www.fmod.org/documentation#content/generated/FMOD_Studio_System_GetBus.html

I hope this has been helpful.

Thanks,
Richard

1 Like

Thank you Richard.
I’ll speak with my programmers and keep you updated!

Cheers,
Daniele