How to trigger a specific outro array based on currently playing audio from random array?

I’ve been experimenting in Metasounds lately, trying to get a nice exploration music system going. I followed Dan Reynolds’ video regarding cue points and compostion, since it’s pretty much what I want to accomplish, except with an array of complete music tracks instead of layers.

Triggering the Outro input does play audio at the correct cue point, but it always defaults to the first track’s outro, regardless of what track is playing. How do I get the Metasound to play the correct outro for each corresponding track, even though the track is chosen randomly at the start?

EDIT: I solved it, but I will gather some screenshots to put in the replies in case there are others who are looking for a solution!

I would be very interested in your screenshots. Sounds like you are working on the same thing I have only I did not use Cue Points and would be like to see if that would be a cleaner approach. I split the various parts of the Idle and Combat compositions into 8 bar sections and am keeping wave arrays of the pieces of the respective composition. It’s extremely messy that way. If your solution allows a single wave to be split on the fly, that would be most useful.

It is set up a lot like Dan’s Metasound in the video I linked. Like I mentioned, the biggest difference is that it’s pulling from an array of tracks as opposed to fading in and out different layers. The Int32 array provides the index for randomly choosing one of the tracks in the WaveAsset array. Towards the bottom, I have Trigger Compare nodes determining which track is currently playing, and selects the correct array of outros from there. The cue points in the track tell the outro array which outro to select, and should play smoothly.

(Had to put this in a second reply since new users can only send one embedded file per message…)

I had another issue while setting this up where no matter what track was playing, it would always play the outros for the first track, even with that Trigger Compare set up I had. The solution for that was to add inputs that would trigger the specific outros as opposed to using On Play for all of them.

I hope that helps explain the gist of it! :smile:

Thanks very much. It is a different use case it appears but similar. I’m using an idle outro, several idle tracks, a several combat tracks and a combat outro. These have to be stopped and started on even measure boundaries based on game events and that has been challenging. I’m almost there but looking for a better approach. It’s too complex in the MS Graph language.

Your cue points trigger the outro. I will watch the video as I probably need to play with cue points. That would improve the workflow of bringing compositions into the game (rather than breaking them into numerous musical segments). Did you create them post-DAW in another product or use the array (Info->CuePoints)in the wave asset to set them based on time?

Edit: I found the answers by watching the video you linked to. Using the Cue Point Id as an index now has switched on the light. Sure glad I ran into your post. Thanks Very much.

No problem! I didn’t expect to find the solution on my own, let alone that quickly, so I’m glad I could help you in the process!

And just to answer that last question, I created the cue points in Reaper, by setting markers in DAW and then rendering the files with the markers baked in (which gives you the cue point(s)). But you probably saw that in the video :sweat_smile:.

After watching the video, I went back into Logic and discovered I had cue point setting capabilities all along by setting Markers. I put them in, bounced, reimported and the indexes came through. Pretty cool, I had no idea.

1 Like