I am using FMOD Studio 2.03.01. This occurs both in FMOD Studio and the game engine.
Occasionally, seemingly arbitrarily, during the release of an AHDSR modulator on an event’s master fader (this also occurs on track faders and parameters, but I haven’t tested anything else), when the event stop is triggered, the volume level will jump to some arbitrary point (sometimes all the way to the bottom) and continue fading out from there - as if the release had already been active for a second or two. Is this a bug or is there any way to remedy or work around this?
Yes! I found this out the other day too. We also just switched to 2.03.01. ADHSR seems to be broken engine-side somehow. Everything works fine in FMOD studio but when stopping sounds in engine (UE5.3.1) there’s some odd behaviour going on. And I think its partially to do with curves.
Lets say I have an event with a Gain FX on the master track modulated by an AHDSR with a 5 second release. If that release curve is linear and the event is stopped in engine then the event stops immediately with no fade out. If the curve is fully logarithmic (curves down slowly at first) then the audio fades out correctly I believe. If the curve is somewhere in between then its as OP described in their post. When stop is called the audio dips and fades from a different level.
I’ll note again that this happens in FMOD Studio itself as well as the engine - seemingly identical behavior in both. The curve seems to be unrelated in my case - I’m seeing it happen no matter what the curve looks like.
Here’s an example of a problematic AHDSR setup, though it’s nothing special. I’m able to reproduce this in any project and with essentially any AHDSR values.
These issues must be related somehow though. This is from a profiler session where I called stop on an event in-engine. The event has an AHDSR with a 5 second release.
My temporary workaround is variables with seek speed/modulator and having a fade out event with two command instruments - one to set the fade-out variable and another to stop the event.
Here’s another much simpler solution that I recently thought of: Async instrument with Cut enabled, a loop region around part of it and a fade just outside. Then a transition region (trigger: event stopping) to the part that fades out.