Unreal Engine 5 | Ultimate Dynamic Music System

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
in today's video we're going to be creating the ultimate Dynamic music player inside Unreal Engine using just a single meta sound once we're finished we'll be able to adjust layers or stems however we wish we'll be able to adjust intensity using stem variations and we'll also be able to seamlessly jump between different sections of the song using BPM lock triggers so that this change always happens on the downbeat regardless of where in the measure that action was actually triggered now before we get started there's a couple things that I need to mention firstly if you're trying to do this with just a single audio file for your music well you will be able to follow along with the changing between sections of the song adding layers and adjusting variations is not something that you're going to be able to do to fully follow along with this tutorial you're going to need a piece of music that was composed with these types of elements in mind thankfully our friend Mr Brian Fuller has provided us with exactly that so if you'd like to follow along as well make sure you click the card that just popped up in the top right corner to check out Brian's 1,000 subscriber special video where he'll tell you exactly how you can download the piece of music that we're going to be using in this tutorial while you're over there make sure you congratulate him in the comments section on hitting 1 th000 subscribers and you might as well be one of those subscribers cuz there just may be a special video collab coming very soon so whether you've downloaded the files from Brian or you're just watching the video to follow along uh we're going to dive into the folder real quick for the assets that we downloaded from Brian and while there is quite a bit of things in here what we're specifically going to be using is everything in this stems folder as well as this musical section timestamp PDF that Brian provided if we open up the stems folder you're going to see that we have four different folders housed within and each of these folders are named with some instructions so uh jumping down to this second one we have our core stems and Brian said says that all of these should be used together so if we look we've got some strings in here some syns Riser and a piano now if we were to look at our drums our oud or our santor uh these Brian says only use one at a time and that's because while they are all drums uh for example in the drums folder there are different intensity levels and we're going to be getting into that just a little bit later uh you'll also find the same in the oud and the santor now if we jump back over here to our timestamp PDF Brian's actually provided us with all of the different sections what time they start and the total length of those segments now just from personal experience uh looking at the time length of these segments I can tell you right off the bat that this song is in 120 BPM uh if you're not sure if say you're using a different piece of music uh some dolls will allow you to do like a beat timing uh where it'll tell you the BPM or uh what I like to use is actually an app on my phone called tap to Tempo where you just tap and follow along with the song and it should spit out roughly what the BPM of that song is so now that we've looked at the folder content of the file that we downloaded let's jump over to Unreal Engine now in my content browser I've already got all of my stem folders imported and you know you can see in our core uh we've got all four of those we've got all our variations of the drums the oud and the santor so just like like always when we create a meta sound you can just rightclick and start typing meta and we're going to pick meta Sound Source now just for the sake of the tutorial I'm going to go ahead and call this music but you can actually call it whatever you want and we'll go ahead and open this up now I'm going to start by making this a stereo player uh because all of the files that we're going to be using are stereo files and we're going to take this on finished and we're just going to go ahead and move it out of the way we will be using it later uh but for now we don't quite need it so let's go ahead and we're going to create a wave player and we do want that to be stereo and now for our core uh as we mentioned previously Brian did mention that all four of the core files should be played at the same same time and that's pretty easy to set up so we'll just take that wave player and we'll duplicate it out three more times to give us a total of four and we're going to go ahead and run this into a mixer of its own so we'll go ahead and grab our stereo mixer 4 and just start running these together and what this is going to do is it's basically going to take all four of those audio files that are going to be playing at the same time time and it's just going to mix them down into a single stereo file now in total we do have 13 different wave files that we're going to be working with today uh however just for starting with the layering uh I'm actually only going to be creating seven so I'm going to go ahead and grab another three wave players and I'll move these down just a little bit just to kind of give us some space to work with now preemptively uh I am going to go ahead and create three mixers that are all stereo mixer 3 and we're going to be using these when we get to the intensity part uh but for now and just to kind of prohibit um adding more nodes than we need to I'm just going to go ahead and add these so we can go ahead and plug these into the first one like so so this is going to be our drums our oud and our santor and now since we have our mixer for these and all of our mixers here I'm going to go ahead and create another mixer that is a stereo mixer 4 and so basically we're just running mixers into more mixers and this will make sense in a little bit why we're doing it this way so I'm just going to go ahead and connect these up real quick and there we go so now that we have this uh now we can go ahead and connect these to our outputs so now we're going to go ahead and open our content browser and starting with our core I'm just going to start dragging these in so there's our first one our second third and our fourth and that's going to make up our core and as I mentioned I'm only going to be using variation one of the other stems for now so we'll grab our drum variation one our oud variation one and our santor variation one and just for the time being uh what we can do is we can just go ahead and add the onplay to all of these because we do want them all to play at exactly the same time and there we go and so now if we hit [Music] play you can hear that we have all of our audio players playing at the exact same time so how do we adjust for adding and removing different stems or layering well it's actually quite simple all we need to do is figure out a way to adjust the gain up and down on our final mixer now if we wanted to we could come off of each of these and we can add a value node and we could have our initial value be zero and our Target value be one and we can set up these triggers so that when we set this it'll start at zero and jump to one the issue with that is it's going to be very abrupt so we can kind of soften this a little bit by instead of going straight from our value into our gain we're going to come from our value and do an inter two and I'm just going to set this to5 for now and basically what this means is when we trigger this value node over the course of a half a second it's going to ramp from zero to one and give us a nice fade in and so if we wanted to uh we could actually copy and paste this down and connect all of these uh but that is going to kind of create a jumbled mess right here at our mixer so instead what I'm going to do is I'm going to move this up and out of the way and we're going to create variables and so for this value uh instead of calling it value uh I'm just going to call it core gain and we can go ahead and copy and paste this out a few times and so then for this one we're going to create a another variable and we'll call this drum gain another variable called UD gain and you kind of get the idea of where I'm going with this so this last one is obviously going to be our santor gain and so now at our mixer all we have to do is just drag these in and getting familiar with using variables within your meta sound is going to make your life a lot easier and it's also going to make your meta sound graphs look a lot cleaner and so now that we've got this working uh we do need to set up triggers so we can create an input here and I'm going to call this set core and we can create another one called reset core and you probably already guessed exactly what what I'm going to be doing for these others so now we have our set drums reset drums and so on and so forth all right and so now we have have all of these set up so now if I hit play you're not going to hear anything because all of our values are set by default to zero but if I initiate our core you can hear that our drums our oud and our santor and already just from how this is set up if we wanted to fade out our core we can do exactly [Music] that now if you wanted to have the core start at one something we can do is we can actually break this set core and we're going to do a trigger any and we only need a trigger any to and what the trigger any does is it allows us to have multiple triggers triggering the same thing and so if we wanted this to start on play we could go ahead and add this the on playay to our trigger any which is going to automatically fade this in to one as soon as we hit play and then from there we can add our other stems if we want to but since we do still have this set core trigger if for some reason we got rid of the core we can add it back in with its own individual trigger now in terms of setting up our layering system this is finished uh we can clean it up a little bit and we can comment this section out if we want and we'll call this layer control just so we know what it is and as long as we have our move mode set to Group movement we can just drag this whole thing wherever we want so now let's move on to setting up the enti intensities now as I mentioned I currently only have one single wave player for each of the three instruments so what I'm going to do is I'm going to create a little bit more space here and we can go ahead and duplicate this out now this will be for our drums and since I copied it uh currently the all have variation one uh but we're going to change that here in just a second I'm going to go ahead and connect these to our mixer and so for our drums I'm going to grab variation two and throw it in that second one and variation three and throw it into that third one and I'm going to do the exact same thing for these I'm going to duplicate these wave players out for our oud and our santor and connect them in the exact same way so now that we have all of our wave players with all of the different variations in there uh we're going to go ahead and also connect our onplay because we do actually want all the variations playing at the exact same time this is going to give us the ability to swap in between all of them in real time without having to worry about any uh cross fades now if we were to hit play on this right now we would hear all 13 audio players playing at the exact same time which isn't what we want we do want all of our chord to be playing but we only want one of these to be audible at a time and so what we're going to do is we're going to set up a system very similar to our layer control because we want to be able to control each of these layers now with this current setup um for example if we have our drum variation one playing we know that we also want variation one of our UD playing and one the first variation of our santor playing and this is really going to help us out here so on our drums um I'm going to do something very similar that we did here and we're going to use variables so I'm going to pull off this and we're going to create a variable and I'm just going to call this intensity _ 01 and we're going to do the same thing for our other gain inputs so I'll call this intensity _ 02 2 and intensity 03 now since we're going to be switching between all of our variations 1 2 and three something I can actually do now that I have these variables is I can copy them and we can move down here and I'll paste them for the [Music] oud as well as our santor and so now let's come back up here where we have our layer control because we're actually going to be stealing some of this and what we're going to be stealing is this value and the inter tarp to I'm GNA go ahead and copy and paste that over here and uh we actually only need three I grabbed too many and just like we did with our core gain uh we can drag our intensity level over and if you drag a variable out uh you'll see that we have some different options on what we can do with it and if we shift drop that'll allow us to set it so this one's going to adjust intensity one shift drop again this one is going to be our intensity two and our intensity three and you can see that from a core concept standpoint these look very similar the only difference is how we're triggering these so with our l control we want to be able to either have or not have any combination of these different stems however with our intensities if intensity one is playing we don't want Intensity 2 or three to be playing if Intensity 2 is playing we don't want intensity one or three and same with a third one so what we're going to do is I'm going to drag out of here here on the set and we can create a a trigger to set our intensity so I'm going to call this uh we can call it trigger intensity underscore 01 and we're going to do this for all of our sets but we are going to do something a little different with our reset so we've got trigger underscore Intensity 2 or underscore O2 and intensity underscore 03 now if you remember from the beginning of this video when I was showing off what we had I do also have an intensity zero and so what I can do is just so we can get a quick trigger and I'll remove this I'm going to call this trigger intensity zero so now that we have the ability to set from 0 to 1 over the course of a half a second our different intensities we need to be able to set up a system that is going to basically turn off any ones that we're not currently wanting and we're going to do this using a trigger any just like we did over here and we're going to do that off of our reset so I'm going to pull off here and we're going to do a trigger any and I want to do a trigger any3 and we can go ahead and copy and paste this down and all of these are going to be going to our resets so now if I want intensity zero which is basically turning all of our stems off except for the core and run this down and that's going to go to any of or all of our trigger NES so when I trigger intensity zero it's basically resetting all of these values back to zero over five or over 0.5 seconds so that we get a nice fade out but after a half a second the only only thing that's going to be audible is our core and so now we just need to fill in the rest so if we're setting intensity one we want to reset Intensity 2 and three if we're setting Intensity 2 we want to reset intensity 1 and intensity 3 and same with intensity 3 we want that to reset one and two and this can definitely turn into a giant spaghetti monster if you're not careful um which is why I do recommend using the variables just to kind of help you clean things up as much as possible now as far as our intensity mechanic goes this is done as well so we can go ahead and comment this section and I'm going to call this intensity control and we can test this out so if I hit play you can hear our core come in and uh just to make sure that all of our stems are playing I'm going to go ahead and enable [Music] these uh but you'll notice you still don't hear it and that's because by default we're at intensity zero so if we add intensity one you can hear that we kind of gradually increase that intensity and if we jump all the way to three you can hear that it's way more intense and since we have this all in a comment section we can go ahead and move this over here and just kind of organize and just for the sake of organizing I'm also going to comment out these sections just so we know what sections they are so this will be our core this is going to be our drums oud and our santor now with the comment box selected uh if you want you can actually come in here and change the color of them um that's totally personal preference you don't have to uh it does make it a little easier when you're zoomed out so that you can kind of see like which different sections if you know what color you assign a section anyway you get the idea so now that we have our layer control and our intensity control it's time to jump into our section switching mechanic and you may need to pause and kind of rewatch things because I'm not going to lie to you this is going to get a little messy so on the subject of switching between different sections of a piece of music uh Brian actually did put out a video a couple weeks ago covering exactly this the only difference is in his video he did it with a single stereo wave file um and he basically he had four different sections so he took his wave player he duplicated it out four times and in each of the four wave players he set the start time Loop start and loop duration for each of those sections in each of the wave players and if you're using just a single piece of stereo mono whatever however many channels um just a single audio asset it's totally fine to do it this way there's absolutely nothing wrong with it the only issue that I have is we're not using just a single audio asset we have 13 different wave files that are all playing at the same time and if you remember back to that PDF that I showed you at the beginning of the video not counting the intro we have five different sections so if I took all 13 of these we players duplicated them out five times that's 65 different wave players that I would have to combat with now I am a big supporter of making life simple so instead of duplicating each of these wave players out five different times we're going to go back to using variables and I'm going to use a variable for our start time our Loop start and our Loop duration and because all of these values are going to be the same for every wave player all I have to do is create one variable for each of these and so I can go ahead and we're going to bring our start time out and we'll make that a variable our Loop start make that a variable and I'm okay with how these are named I'm not going to change the name of them and oops I don't need to make that an input I need to make it a variable and so what we can do now is we can copy these and just paste them down here as well and we're going to do this for all 13 of our wave players all right so now we've got all of our variables connected to our wave players and we can grab this comment section out and just kind of extend it Beyond those nodes and now if we grab this they all move together just a little quality of life Improvement all right so we've got all of our variables in there um but you may notice that all of these variables by default are set to whatever the wave player was by default so start time is zero Loop start is zero Loop duration is by default a value of 1 and so what we need to do now is come up with a system that is going to appropriately set each of these values and the way that we're going to be doing this is we're going to create a couple more variables and since these are all time uh pins I'm going to create a variable and I'm just going to start with the start time and I'm going to call this start time array we're going to change our type to be time and we're going to tick this is array box here and I'm going to do the same thing for our Loop start and our Loop duration so again our Loop start array change it to time and make it an array and one more for our Loop duration change it to time and make it an array and here is where that uh PDF that Brian provided is going to come in hand handy so we're going to start with our start time array and including the intro we have a total of six different sections same with our Loop start we're going to add six elements to this array and our Loop duration so starting with our start time uh if we go ahead and click on that and I'm going to go ahead and pull our timestamps over we're going to be using the start time for all of these so we've got 0.01 2.01 3 34.010659 so I'm going to go ahead and pull this off to the screen just so I can see my elements here and I'm going to do exactly that so we've got our 0.1 got our 2.01 this is going to be 34.010659 typically this would be an issue um but we're off by microc seconds so we're not really going to notice that so this is going to be 82.1 and lastly we have 90.1 uh if these were all cut right on the seconds uh we wouldn't have this issue uh but but sometimes it is what it is so now let's jump over to our Loop start and we're going to do something a little bit different with this so again if we look at this PDF we don't want the intro to actually Loop so what I'm going to do is for the first value in our Loop start uh the second value is 2.01 I'm actually going to make the first index 2.01 as well and what this is going to do is when we select section a uh it's going to Loop starting at 2 seconds but if we were to let the song play in it'll play the intro finish section A and then continue to Loop section A which is actually what we want so I'm just going to go down the line here again and 34.010659 [Music] 01 now the last element in this index really doesn't matter uh this is our outro and we're not going to be looping it uh but just for the sake of making sure that all of our indexes are in line uh I'm going to go ahead and include it now the last thing we need to do is our Loop duration so g go ahead and click on this and now if we look back at this PDF now instead of taking the start time we're going to take our segments and again we don't want this intro section to we don't want to Loop the intro so in index zero I'm actually going to be putting the exact same value that we're putting for index one so instead of 2 3 2 32 it's going to be 32 32 32 so we've got 32 32 32 the fourth section is actually only 16 seconds our fifth section which is index 4 is only8 and as I mentioned the last section is our outro and we don't want this to Loop um so what we're actually going to do is right here we're going to put minus1 and so now that we have our variables going into our wave player and we've got our different arrays we need to transmit the a specific index X in these arrays to our variables that are going into our wave player so over here I'm going to go ahead and I'm going to go ahead and drag these out so we've got our start time our Loop start and our Loop duration and all we want to do is we just simply want to get and I'm going to do this for each of these and so now by default uh because these get nodes uh the index value is set to zero uh and if we don't trigger anything it will all always just pull index zero and since we all we want them all to switch at the same time uh what we can do is I'm going to pull off and I'm not going to create a variable I'm going to create a graph input uh because we're actually going to be controlling this from our level blueprint or you know if you've created a custom blueprint you can certainly do that just for the tutorial though I am going to be using the level blueprint and instead of index I'm just going to call this section actually we'll call it section index just so I know what it is now on the other side of our git array we want to spit out to those variables that we've added here now you certainly could just run these directly into here without worrying about the variables but like I said I really want you guys to get in the habit of using variables because it's going to make your meta sound graph just that much cleaner so if we scroll down here uh we've got our start time oh and I failed to follow my own advice we're going to shift drop so that we can set it and now we need our Loop start so we're going to shift drop that and our Loop duration and so now when we trigger this we're going to be passing whatever index we pick from our blueprint into our meta sound graph we're going to use that index to select an element from the arrays that we created and we're going to pass them along to our wave player now I did mention that changing sections is going to be BPM locked and so the way that we set that up is we need a trigger repeat and we can go ahead and connect these all out to these individual triggers Now by default the period is 0. 2 so that means once this is triggered every. 2 seconds this is going to fire and that's just a little too fast for for us so we're going to drag off of here and we're going to do a BPM to seconds and as I mentioned previously I already know that the BPM of this song is 120 bpms and we only want it to be firing on that downbeat so the beat multiplier is fine uh but we're going to take this division and we're going to set it to one as well so now every um every time this triggers we're only triggering on the whole note and we do want this to start from the very beginning so we can go ahead and grab our onplay and there we go so when we hit play it's going to be using this BPM to seconds so at 120 bpms which comes out to every half a second um which 120 bpms is easy to figure out if you're using a piece of music that is kind of an odd um BPM that's not really easily divisible um it I'd much rather use the BPM to second because it's just going to do the math for you you could if if you wanted to um do the math yourself and then input that into this period field so for example if I wanted I could do 0.5 um but instead we're going to use the BPM to Second uh just so you can kind of see how modular this setup is and so now it's time to set up our gate system so that we only trigger on the downbeat or the one of a 4 beat measure if you will and so what we're going to do is just to kind of give us some room I'm going to come up here and I'm going to create a trigger control and basically what the trigger control does is if we trigger it to open it will allow allow triggers to go through if we click close it we can send as many triggers into the input as we want but since it's closed it's not going to spit anything out uh we can also toggle it uh but for this tutorial we're not going to be using the toggle and from this trigger control we're going to send this into a trigger once now if you've watched Brian's video on doing this uh Brian does also use a trigger repeat the trigger control and the trigger once so this particular section of the tutorial is going to be very similar to Brian's if you watched that and so now we actually need to set up our inputs to trigger all the elements that we want so since we have five different sections a b C D and then our end I'm going to go ahead and create an input I'm going to call this trigger section A and we're just going to go ahead and change this to a trigger and I'm going to do the same thing for the other triggers so trigger section B and so on and so forth and once again I'm going to go ahead and fast forward through this uh because it's just the same repetition over and over again just for our different sections so now that we've got all those triggers set up uh I'm going to go ahead and just drag them in in and this first trigger control is going to be for section A and so when we trigger section A we want to open this and we also want our trigger repeat to be going into our trigger n so when we trigger section A our constant trigger is going to be going in and since it's open it'll allow it to go through now it is still hitting a do once or a trigger once uh do once if you're familiar with blueprints but inside a metag gra meta sound graph it's called trigger once and we'll get to this section here in just a bit but if we trigger any of these other sections we actually want it to close this gate so we're going to come off of our close and we're going to do a trigger any and since we have four others and go ahead and select four and we're just going to run B C D and our end into here and so now trigger a Will Open this gate triggers B through e will close it and we're actually going to take this exact same thing we're going to copy it and we're going to add it to our trigger once so when we select trigger a uh it's going to Open this gate it'll allow our repeating trigger that's firing off at 120 BPM it's going to allow it through but because we have this trigger once it's only going to let it through the first time if we happen to trigger any of these other sections it will reset this to allow us to trigger section A again but only once and then it will close this so for this one we're going to start with this open because we do want that first trigger to go through and so what we're going to do now is we're actually going to duplicate this out and now on this one this one's going to be for Section B so we want section B to open this and section A will close it and we're going to do the same thing on this side so we can get rid of trigger B and we can go ahead and copy trigger a over here and once again you're going to see yet another pattern we going go ahead and paste this down again and I still didn't give myself enough room I never do so now we want trigger C oops to be what opens it and we can set trigger B back into there and we're going to do the same thing over here get rid of trigger C and go ahead and just copy and paste our trigger B over here and this is what I meant by things can get a little confusing as you go through here let's go ahead and and going to select all of this and just move it up some more and so now we have to set up our trigger for Section D and like I said you can probably see the pattern that's happening here so we'll go ahead and Swap this out or trigger D since we're passing trigger D through uh we don't want that to reset this trigger once we'll copy C over here and one more time for our end go ahead and flip-flop this and we go ahead and add section d over here and so now just like we did for this first one we're going to pull off of our trigger repeat some more and these are going to go to our trigger in on our trigger control oh I missed one and so now that we have this giant gate system set up we need to figure out a way to pass these triggers out to our wave players now I've gone ahead and deleted the onplay that's running to these wave players because what we're going to do is off of our trigger once we're going to promote this to a graph variable uh because you can actually have a variable that is a trigger and for the time being I'm going to disconnect this because you can only have one trigger running into here at a time so we're going to go ahead and grab one of our trusty trigger ennies and we have five different triggers that we want to be able to trigger those BL players so I'm going to go ahead and take this trigger any and now we can go ahead and connect these up and so now that we have this trigger out variable we can just go ahead and simply drag and drop and connect those right to the play of every single wave player and even though we have a bunch of different nodes connected to the onplay they will still all trigger at the same time so you don't need to worry about anything becoming unsynced it'll all continue to work as intended we'll go ahead and get all of these connected up and now we have all of our triggers connected now we're almost finished but not quite yet so we do want all of these players to Loop but I'm not going to go through and just check the tick box for these loops and the reason is uh as I mentioned before our ending we don't want that section to Loop so what I'm going to do is I'm going to come off of our section index and we're going to do a trigger compare in 32 and so we do want this to check on the downbeat and we're looking at our section index now we know from our other indexes the index 5 um which is element six is our outro so what we're going to do is we're going to set this to five so if the value comes in uh remember indexes start on zero so if we set this to five it's actually the Sixth Element in our array and so every downbeat it's going to be checking and comparing and if we're in section 0 through 4 it's basically spitting out a false which we're not going to do anything with but if it does equal five what we want to do is is we want to run this to a trigger toggle and the trigger toggle allows us to basically like a light switch we can toggle on and off a bullion which is what our Loop is now I'm not going to be running this to the on instead I'm actually going to be running this to the off because when this equals five I want this to turn off off the the tick box for Loop but we do want to start with it enabled and just like before we can bring this out and we can promote it to a variable and I'm just going to call this variable is looping question mark and now we're going to go back to all of our wave players and we're going to add this is looping to this pin and we're going to do this for every single wave player now technically if you wanted uh you could run this per section um I'm not going to I'm going to go ahead and do the tedious work of adding it to everyone just because it makes it a lot cleaner so with our is looping variable connected to our wave players we now have control using this compare to tell these wave players whether they should be looping or not and I'm going to go ahead and just going to go ahead and make this its own comment section and I'm just going to call this section control so now if we zoom out you can see that we've got everything pretty well well organized into our sections this middle section this is all of our wave players we've got the control for our layers we've got the control for our intensity and over here we have our section control now we only have one thing left to do inside of our meta sound and that is figure out how to tell our meta sound to stop and as I mentioned in the beginning we do still have this onf finished over here and if all of your wave files were the exact same length you would be totally fine and justified in just simply connecting one of them to the unfinished now uh I have thrown these audio files into Protools and I've noticed that some of them are a little longer than the other and I'm a little glad because that's going to allow me to show you yet another node and that is going to be our trigger accumulate now we do have 13 wave file wave players here but if we were to rightclick and do a trigger accumulate uh you'll see that we actually only have the ability to go up to eight and we can actually trick the system just a little bit so if we've already got eight to get the 13 we need another five and so I'm going to grab a trigger accumulate 5 here and what the trigger accumulate does is this will allows you to send triggers multiple triggers in but it will not spit out a trigger until all of the inputs are accounted for so if we only had a trigger going into zero this would not fire we would need to send an active trigger into all eight of these and so the way that we trick the system uh we've got all of these uh all eight here and we've got another five to make up our 13 and I'm going to grab yet another a trigger uh trigger accumulate and this time we're going to do two and we're going to connect them here and then finally this can go to our on finish and so what I'm going to do is I'm going to take the onfinish from every single one of our wave players and I'm going to run it to our trigger accumulate and so basically what this is going to do is it's going to wait for every wave player to finish and then it's going to trigger our onfinish node which will stop our meta sound and this is just a clever way to make sure without a doubt that all of your wave players are finished before it actually ends your meta sound that way we don't get any potential wave cut offs and like I did with the other triggers uh you can certainly um create variables for these but I'm not going to right now just because we're almost finished uh but if that is something that you wanted to do you certainly can and we just have one more and we'll go ahead and move this back up to be with the other one and so now we have all of our onf finished going to our trigger accumulate so as they finish they'll be filling out these inputs once this is full it'll send its output to this trigger but we're waiting for this trigger to also finish so say this was 1 second 2 seconds 3 seconds 4 seconds um as they increment Mally finished it would be filling these out and sending that final trigger to this trigger accumulate and so as far as our meta sound goes this is finished again we have our wave players we have our layer control or our stem control this is letting us dynamically pick which of the four steps we want and we can have all of them or none of them or just a couple we have our intensity control that we have set up and like I said similar to this uh we're using the the values in the interp 2 if you wanted a different fade time uh you can just change this interp 2 time uh but we do have this set up so that it will only play one of the intensities at at a time and we also have our gate system set up here and so now that we're finished with our meta sound now we need to jump into and like I said I'm going to be doing this with our level blueprint uh but if you wanted to create a custom blueprint for this you certainly can now once we're inside our level blueprint uh this part is actually fairly easy I do already have this set up uh just because I've already got the box triggers set up uh but we will walk through this um so on our event begin play we're adding our audio component and uh if you've watched any of my other meta sound tutorials chances are you've seen that we pull off this return value and we're just going to be executing these trigger parameters now I do have some more stuff down here uh this is irrelevant to this tutorial basically all this is doing is just switching the colors of the text render so that we know what section we're in for the tutorial I'm using box triggers but if you wanted to set this up so that say you're um you're sneaking around and there's guards all over the place uh maybe you want to use that gameplay mechanic to help drive your intensity so say if you're completely hidden our music is at intensity zero um maybe a guard is kind of suspicious so we'll move to intensity one if he notices you intensity two and if he starts chasing you maybe that's intensity three this is that's just an example um I'm using trigger boxes because they're easy but in your project you can trigger these however you want so I'm not going to spend a whole lot of time on the blueprint aspect of it uh simply because I'm set up for trigger boxes and but you may be set up for something different and so basically we've got our audio component we're pulling off the return values and we are executing trigger parameters uh for the uh the layers because I just have one trigger box and when you enter it it turns it on if you leave it it stays on if you go in again it'll turn it off and so that's why I'm using a flip-flop um but again you can set these up however you want our intensities those are just going to their respective trigger parameters now with the um the sections there is a reason that I'm doing it in this order and that's because if we were to trigger that section first there is a possibility that our integer that we're sending into our meta sound which is coming in right here um we don't want that to possibly not get caught so we want to set our integer first and then trigger our section and it's totally okay that we're doing this uh in order because like I mentioned before we're only triggering those we're only opening the gate to allow those through on the downbeat because we're using the bpms to seconds through a trigger repeat and so now that we have this fully set up go ahead and hit play and because we're set to intensity Z by default remember I said that intensity Z is only our core um if you want to change that so that intensity zero still plays all of them you can um it's totally up to you but the way I have it set up with intensity zero only playing the core even if I turn these on you're not going to hear them you're only going to hear those additional stems with intensity 1 2 and [Music] three so now we walk into intensity one and you can hear that uh Intensity 2 gets a a little bit more intense and lastly we have our third one now regardless of what intensity that we're in we do still have full control over our layers so maybe I don't want the drums in the core we'll turn them [Music] off and we can still change our intensity based on you know whatever we decide it's completely Dynamic so we'll go ahead and turn all this back on and now we're going to take a look at the sections and I turned intensity three on uh just because the drums are really what's keeping that Tempo and you'll be able to hear these sections and so now pay attention because you'll see that these even if I walk into one of these trigger boxes in the middle of a measure it will wait until that down be to switch 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 and so you can hear on the one of every measure it waits to switch even though we walked into this trigger box in the middle of a bar and so with our section end uh remember we had that set so that it doesn't Loop anymore there's our downbeat and it's finished all right guys so that is going to wrap things up for this video um I know that this video was super long uh so what I've done is I went ahead and in the description as well as on the uh YouTube player uh you will see chapters marked out that way you can kind of pause or go back to different sections as you need to but hopefully uh this was informative and thank you again to Brian for providing us all with the music files so that we could use them in this tutorial uh if you guys like what you saw make sure you hit that subscribe button along with the notification Bell so you never miss out on any future content especially that collaboration that's coming up with Brian and if you'd like to join the sound effects guide Discord server you will find a link in the description below until next time
Info
Channel: The Sound FX Guy
Views: 2,052
Rating: undefined out of 5
Keywords: TheSoundFXGuy, The Sound FX Guy, The Sound Effects Guy, Unreal Engine 5 | Ultimate Dynamic Music System, Unreal Engine 5, MetaSound Tutorial, Game Audio Tutorial, Epic Games, Brian Michael Fuller, Unreal Engine Audio, Dynamic Music System, Unreal Engine Music, MetaSounds, Tutorial, UE5, Game Dev, Sound Design, Free Music, Learn to make games, Unreal Engine Tutorial, Assassin's Creed, Assassin's Creed Music, Music Asset Pack, Blueprint Tutorial, Beginner's Guide to Unreal Engine
Id: faacw592YGk
Channel Id: undefined
Length: 76min 14sec (4574 seconds)
Published: Wed Jan 03 2024
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.