Unreal Engine Level Sequencer FMOD "Play" trigger on frame 000 doesn't fire

Unreal Engine Level Sequencer FMOD “Play” trigger on frame 000 doesn’t fire

Environment

  • Was working on:
    • Unreal Engine 5.5
    • FMOD UE Integration 2.03.11
  • Broke after migrating to:
    • Unreal Engine 5.7
    • FMOD UE Integration 2.03.14

I have an FMOD Event track in a Level Sequence with a Play trigger keyed on the very first frame (frame 000). On UE 5.5 + FMOD 2.03.11 this fired reliably. After migrating the project to UE 5.7 + FMOD 2.03.14, that first-frame trigger no longer fires.

The assets and the sequence itself are unchanged; the only variables are the engine upgrade and the FMOD integration upgrade, which were done together. If I move the exact same Play key to frame 1 (or any later frame), it fires reliably again.

Steps to reproduce (post-migration)

  1. Open a migrated Level Sequence (or build a fresh one on 5.7 / FMOD 2.03.14).
  2. Add an FMOD Event track.
  3. Add a Play trigger key exactly on frame 000.
  4. Play the sequence (PIE or in-editor preview).
  5. → The event does not play.
  6. Move the same key to frame 1 → it plays.

What I’ve already checked

  • Event and bank are loaded — confirmed, since the identical key fires once moved off frame 0.
  • Sequence playback range starts at 0.
  • Not a “restore state / when finished” issue — later keys on the same track behave normally.
  • Same result in PIE and in-editor preview.
  • Same behavior on a freshly authored sequence, so it isn’t leftover migration corruption on one asset.

Suspected cause?

This changelog line, which lands between my working (2.03.11) and broken (2.03.14) versions:

02/04/26 – 2.03.13 (build 162576) — Unreal: Fixed events not auditioning in Sequencer and Animations.

I’m trying to avoid a one-frame gap on cinematics where the audio needs to hit exactly on start. Thanks in advance!

Hi again!

I just wanted to let everyone know that I might have fixed the issue.
I dug through the source code of FMODStudio for Unreal,
FMODEventControlSectionTemplate.cpp’ in specific.

The problem was that the plugin detected “scrubbing” by checking if the evaluated time range was exactly one frame wide, and on scrub it stops audio instead of firing keys, but the very first evaluation when a sequence starts playing is also exactly one frame wide, so a Play key at frame 0 was mistaken for a scrub and thrown away.
Since every following evaluation covers (previousTime, currentTime], frame 0 is never evaluated again, so the key was lost permanently, which is why keys on any later frame worked fine.

Here is a before and after on the changes I made:

Instead of guessing from the range width, the code now asks the sequencer directly what’s happening via Context.GetStatus(), so start-frame key fires correctly.

Thanks very much for the detailed feedback, I have added a task to investigate the issue and your possible fix.