'On Audio Finished' does not trigger on 'Audio Component's sound completion.

I’m trying to detect the case when the currently active sound is finished, such that I can start the next one. I’ve been trying to use the ‘On Audio Finished’ dispatcher, but it never triggers when the sound completes. I’m getting the sound via a Sound Wave (Group = Music, all other settings are set to default). I have also tried with the ‘On Audio Playback Percent’ testing when it reaches 0.99 without it triggering either.
On my project settings audio section I have assigned custom sound classes, but they almost all contain default settings.

How can I detect when an ‘AudioComponent’ has finished playing? Am I misunderstanding what the ‘OnAudioFinished’ event is supposed to do?

I’m on v4.23.1 source distribution, win8.1 amd64, Intel i7, Nvidia RTX. Please help if you know something about this. Thanks.

Are you using the new Unreal Audio Engine (the AudioMixer) or are you using the legacy audio engine?

I haven’t touched or modified that. I even searched my project settings for “AudioMixer” and “Legacy” and didn’t find anything relevant. So I don’t know. Whatever the v4.23 uses.

The Unreal Audio Engine became the default audio engine for Unreal as of 4.24. Before that, you had to turn it on manually as it was only in Early Access. If you want to try it out, you can add the following code to your platform engine ini: (WindowsEngine.ini if on Windows, etc.)


There might’ve been some bugs with the audio component delegates in the legacy engine.

Unfortunately setting this option didn’t make any difference.

I suppose as an alternative way, I’ll get the sound’s duration and set a timer to run an event when that song is over. I can’t see another easier option now.

This works as this is part of how I am doing the best solution for seamless looping sound which includes an intro. Once you get this to work, you will also have to preload the 2nd track (I do this before I even start playing the first track) so you won’t hear a gap between the two.