User Guide
Everything the plugin does, in the order you are likely to need it.
One track, every level
The music lives on the Game Instance, not on the level. When Unreal tears a world down to load the next one, the audio component carrying your track is explicitly kept alive, so playback continues through:
Open Level/Open Level (by Object Reference)- seamless travel
- level streaming (
Load Stream Level) - a restart of the same level from a level change
If the audio engine drops the sound anyway — some platforms flush more aggressively — the plugin notices after the new map has loaded and starts the track again at the position it had reached. That safety net is Restore Music After Level Load in the project settings.
Starting the music
Play Music takes the track, a fade in time, a volume, a loop flag and an end notice.
- Passing a track that is already playing does nothing. That is what makes the node safe to call from the Begin Play of every level.
- Passing a different track fades the old one out and the new one in, over the fade time.
- Leaving Fade In Time, Volume or End Notice Time at
-1uses the project default.
Changing track
Switch Music crossfades from the current track to a new one over Crossfade Time. Under the hood, the outgoing track fades out while the new one fades in, and the outgoing audio component is destroyed once its fade finishes. Only one outgoing track exists at a time: a second switch during a crossfade cuts the older tail.
If nothing is playing, Switch Music simply fades the new track in.
Stopping, pausing, resuming
- Stop Music fades out over Fade Out Time, then clears the current track and broadcasts On Music Stopped. While the fade runs, the state is Fading Out.
- Pause Music holds the track where it is. Resume Music continues from the same position; the paused time is not counted as playback.
- A Stop is not a Pause: after Stop, the next Play Music starts the track from the beginning.
Volume
Set Music Volume takes a volume and an optional fade time. 1.0 is the unmodified
asset volume; 0 is silent; values above 1 amplify.
The volume is remembered: it survives a level change and applies to the next track you
play, so a player setting only has to be pushed once. Wire your options menu slider
straight into Set Music Volume with a fade time of 0.
For real mixing — ducking music under dialogue, bus routing, submixes — assign a Music Sound Class in the project settings and drive it with your usual Sound Mix.
Reading the state
- Is Music Playing — true while a track plays, including during a fade in or crossfade.
- Get Music State — Stopped, Playing, Paused or Fading Out.
- Get Current Music — the track playing or paused, or None.
- Get Music Volume — the current volume.
Knowing when a track is about to end
A track that ends in silence is the one thing a single-track system cannot hide, so the plugin tells you in advance instead.
On Music Ending (Music, Time Remaining) fires a chosen number of seconds before the
current track runs out. You set that number per track, on the End Notice Time pin of
Play Music or Switch Music; leaving it at -1 uses the project default (5 seconds), and
0 disables the event for that track.
The typical use is a playlist: bind the event, and in the handler call Switch Music with the next track and a crossfade no longer than Time Remaining. The result is a continuous soundtrack with no gap and no timer of your own.
On Music Ending (Music, Time Remaining)
└─> Switch Music (Next Track, Crossfade Time = Time Remaining)
Time Remaining is what is actually left when the event fires, not what you asked for. The two differ when the notice is longer than the track: asking for 10 seconds of notice on an 8 second track fires the event straight away, with the real remaining time.
A Sound Cue or MetaSound that loops forever has no known length, so it can never announce its end and On Music Ending never fires for it. Use the event with finite tracks — and if you drive a playlist this way, uncheck b Loop so the plugin does not restart the track you were about to replace.
Pausing the music pauses the notice too: a paused track is not getting closer to its end.
Reacting to the music
Get the subsystem with Get Persistent Music, then bind:
- On Music Ending (Music, Time Remaining) — the track is about to end.
- On Music Stopped — the music has stopped, at the end of a fade out.
Bind these in something that outlives the level — your Game Instance or a UI widget you rebuild per level — since the subsystem stays alive while the level does not.
Pause menus
The music component is flagged as a UI sound, so it keeps playing when the game is paused
with Set Game Paused. If you want it to stop with the game, call Pause Music from
your pause menu and Resume Music when it closes.
Multiplayer
The subsystem is local to each Game Instance: every client plays its own music and nothing is replicated. Call the nodes on the client — from the player controller, the HUD or a client-side event. There is no synchronised music timeline; if you need one, that is Elys Music Engine.
Limits worth knowing
- One track at a time. No layers, no stack, no priorities.
- Crossfade only. No beat-synced or bar-aligned transitions.
- Restore position uses the sound's duration, so a track that loops forever restarts from the beginning in the rare case where the engine drops it during a map change.
- Editor: playback stops when you leave Play In Editor, like any game sound.
Continue to the API Reference.