Best Music Manager Design Pattern?

Hi I’m creating a solo project. It’s a first-person melee game. I want music to be a large part of the gameplay. I’m struggling with the Music system I understand most devs use wwise or fmod but I don’t want to go that route.

Some of my music I will have layers and stems for but for now I’m just working with a techno track that I downloaded and split up myself in audible.

I isolated the looping sections and labeled them as ‘hold loops’ that can keep repeating until the player kills all the enemies then it can release that hold loop and move onto the next section.

This all sounds fine in audible the hold loops hold nicely and I exported all the hold loops and the in between sections.

My problem is when I get it into UE5 I am having issues there is always a little stutter when it switches from an ‘in between section’ to a ‘hold loop’ I assume this is the ms delay that it takes to load that track into memory. Is there a clean way around this?

Whats the best practice way to set up a MusicManager? One tutorial I saw on youtube made a BPC_MusicManager and attached it to a GameState however they went on to use a cast any time they wanted to call into it which is bad practice. Whats the industry standard/ best practice within unreal way of doing this?

for that hold-loop-until-kill-all pattern the clean metasound way is trigger inputs for section control: loop A while it says hold, release moves on, plus a float mix param if you want crossfaded layers. drive those from gameplay (enemy count hits 0 → fire release trigger). for whole-state swaps like explore/combat author each state as a preset bundle and apply one node instead of setting 5 params.

thats what Expose MetaSound Parameters To Blueprint, a MetaSound parameter plugin for Unreal Engine 5, wraps: FireTrigger/SetFloat in one BP api + InterpolateFloat for smooth fades + preset assets: Expose MetaSound Parameters To Blueprint. on sale atm ($10.36) so you dont need wwise for that.

Make sure you’re using Quartz to run timing for your loops:

For building out a music manager a subsystem is probably the best choice. C++ likely required for that route.

My solution was to create 2 audio players A and B then preload the next part of the track onto B as A is playing and just do this for the duration of the song.