Creating groups of dynamically selected music playlists and allowing users to customize music playlist...

Currently, I have two parameters called Intensity (which picks the sound module based on intensity of the music, 0-1-2-3) and another one called Playlist, which is a 1-12 that determines which playlist to play from…

I’m just have trouble finding out if there is a way to “cue” a song and have it wait to move until the WAV that it is currently on is finished playing…

I am also wondering if there’s a way to allow songs within the playlists (or modules) to be skipped or avoided entirely by the person playing, I assume this might need to be handled outside of FMOD. If that’s the case, is there an easy way to identify which song names in the bank to avoid?

I hope my question is clear, let me know if I need to explain it better…

FMOD Studio doesn’t currently have a built-in “key off on silence” feature.

Given that you also want to give the user control over which specific songs play, the easiest option is to make use of programmer sound modules. Programmer sound modules allow you to specify a particular sound file to play in your game’s code when triggered, and so give you the greatest possible control over which sound files do and don’t play. This method would, however, require you to keep track of whether or not a song has ended in your game’s code. More information about programmer sound modules can be found here: http://www.fmod.org/documentation/#content/generated/FMOD_STUDIO_PROGRAMMER_SOUND_PROPERTIES.html

If you would prefer to use FMOD Studio’s logic system, one possible workaround is as follows. Place each playlist (or even each individual piece of music) into its own multi sound module at a different point on the same audio track. Then, create a set of transition markers at timeline position 00:00:000 that moves the timeline cursor to a different multi sound modules depending on your parameter values. Next, create a sidechain effect module in the master track of your event. Add a new parameter, “volume” to the event, and modulate the value of that parameter using a sidechain modulator such that the value of the parameter drops to its minimum when the event falls silent. Create a loop region within one of your multi sound modules with the parameter condition that it only loops when the parameter value is at its minimum. Copy an instance of this loop region over each and every sound module in the event. This will result in Studio only escaping a loop region and selecting a new song when all playing songs have faded away.

You could potentially even combine these two approaches by using programmer sound modules in place of multi sound modules. This would allow you (for example) fine control of which songs are and aren’t included in each playlist, while still leaving the selection of playlists up to Studio.

2 Likes

Yes. That’s what I was looking for, a built in key off on silence. I hope you guys can add that sometime!
Thanks for the advice, I already had my session structured much like this but I ended up using the volume automation idea you suggested.
So now I just have the “playlist” parameter moving to different points in automation where each multi-sound module is stacked on eachother but changing the DBs to -80 to 0db when the appropriate feed is giving to the playlist parameter.
My only concern with using this method is how intensive it is on the systems CPU…

Do you know if having multiple multi-sound modules at once (even if mute by volume automation) will put a strain on the system?

My concern, is if I have 12 playlists, FMOD isn’t going to be computing all of those 12 songs at once is it? If it is, does it use up the same amount of processing? It doesn’t appear to be making a difference, but I just want to be sure.

I’m still going to have a problem allowing players to customize their music playlist in anyway though…unless using programmer entries…

This may have the same solution as above but, is there anyway to make one event wait for another event to finish before beginning?

I have it all set up now where songs are selected depending on what’s going on in context of the game, I just need to make it so it doesn’t suddenly jump when it switches multi-sound module… There may not be a way.

But if you have any other suggestions or solutions I’d love to hear.

Multiple multi sound modules do consume more CPU than a single multi sound would, but not necessarily by much; FMOD Studio contains a number of optimisations designed to reduce the CPU load of inaudible and non-playing content as much as possible, so depending on your implementation and requirements the extra load may or may not be an issue. The profile will tell you how much CPU your project uses; You should compare this information to your project’s audio CPU budget.

The programmer’s API allows you to check whether an event instance is currently playing; You can simply avoid triggering new events until the existing event instance has ended if that is a behaviour you desire.

I’m not sure why you’re not able to avoid jumping to a new playlist when a multi-sound module has not finished playing. Why is the method with sidechaining not working for you?

Incidentally, I recommend asking follow-up questions as new questions instead of posting them as answers to existing questions. It makes them more searchable and easier to follow up.