Back
Last update: 2025-05-29
FMOD
While Wwise has a wealth of on-line self-teaching resources, FMOD information isn't quite consistent. I really like the way information is presented in the Wwise Certification online lessons, so I've created some lessons in the same style to learn FMOD. I've also splitted them in two lesson sets, 101 and 201 following the Wwise style, being the 101 about sound design and basic concepts, and focusing on interactive music in the 201.
Index
IMPORTANT: Due to executable permission problems with Unreal binaries on Mac, a new version of this tutorial is
under development replacing the previous Shooter Game by Unity's example FPS Microgame. THE CONTENT OF THESE TUTORIALS IS DEPRECATED
WHILE THIS NOTICE IS STILL VISIBLE, IT WILL BE REMOVED AFTER ALL CONTENT IS UPDATED. Sorry for the inconvenience.
We will use a modified version of the FPS Microgame sample developed by Unity. You can download both executable files here:
An online version is also available here, you can use it as a reference.
The tutorials are based on FMOD Studio 2.3, you can grab it from FMOD's site. Please, note that you'll need an FMOD account to download it.
The course files are also required. The course files aren't ready yet, meanwhile you can download the example sounds here:
Play the game first to get familiar with it. There's an option at the beginning of the game that shows the controls. In order to recreate the game sound in FMOD, we must delete the original soundbanks, which are located at My project_Data/StreamingAssets within the game's folder or app package (in Windows and Mac, respectively).
201: Interactive Music
We're going to add some music to the game. We'll reuse a modified version of the Wwise 201 Cube music and will try to integrate it using FMOD tools. We'll start by randomly re-sequenced music.
- Create a Music folder and add the Gameplay event as a 2D Timeline.
- Drag the Explore-Theme to the Audio 1 track.
- We'll now set a Tempo Marker so we can inform FMOD that this track is 4/4 138 BPM. Right click at the beginning of the Logic Tracks zone and choose Add Tempo Marker.
- Write down 138 for the tempo.
- We can now change the timeline to use bars and beats instead of seconds, so we'll be able to easily see the them in the Timeline time scale and snap between beats.
- We'll add a new track to add the Explore-Arpeggio, Explore-Piano and Explore-Rythm music segments.
- Add a Multi Instrument to the track.
- Now drag the 3 audio files into the Multi Instrument or into its playlists (directly dragging over the Multi Instrument in the Timeline track might be unavailable under certain circumstances).
- Look how all tracks have a different duration. This is an issue for Multi Instruments, so we'll need to remove all possible empty spaces, thus cutting the length of the tracks. Also all tracks need to have the same pre-entry space so we can adjust the loop point correctly, so I modified the original ones a little bit so they fit well.
- Drag the right side of the Multi Instrument clip in the track until all empty space (diagonal lines at the end) is clipped out.
- Finally we can add the Explore-Bridge to our structure. Create a new audio track and drag the audio file in. Adjust it to the exit point of the Multi Instrument tracks.
- We'll want the Multi Instrument to loop randomly throughout its tracks. Right-click over the Logic Tracks space and choose Add Loop Region to create a new loop region.
- Adjust the loop region from the entry point of the Multi Instrument to its exit point. A loop region will play any clip within. Note that the Explore-Theme pre-entry will played each time the Multi Instrument loops.
- Now we'll want this loop region to randomly exit and continue with the Explore-Bridge part. Select the Multi Instrument so you can set the Probability to ON for its Transition Conditions and click the Change value and drag the mouse down until you set a 50% probability. This way, each time we reach the end of the loop, we've got a 50% probability of exiting the loop or either repeat it again.
- Finally we'll want to go back to the Explore-Theme. As it has a pre-entry bar, we'll do a small trick. Add it at the end and align its entry point with the Explore-Bridge exit point.
- Now create a new loop region. You can drag it up and down to move between Logic Tracks.
- Drag it below and adjust it so it catches all the post-exit sound of the Explore-Bridge and drag the beginning at the same point the Explore-Theme track ends. This way, we should be looping after all the Explore-Bridge decay is mixed with the Theme, then we'll continue with our playlist.
Assign the Event to the Master soundbank as usual. We can now build the soundbanks, then go to Unreal and play the map to listen to the music.
Now we'll try re-orchestration using the Combat-A and Combat-AB-Rythm music assets.
- In order to try it, we'll rename the previous example as Gameplay Old.
- And we'll add a new Gameplay event with 2D Timeline.
- We'll start dragging all audio files from a given instrument to a single FMOD audio track. We'll create a Multi Instrument for most tracks either having variations or not. Note that track variations have the same instrument name but different numbers, like Combat-A-Bass1 and Combat-A-Bass2.
- In the Multi-Instrument we'll add a Silence Instrument. This instrument lets us add a silent track, so this we'll allow that some of them might stop in any loop. In order to use it, we'll need to adjust the durantion to, at least, the same duration of the instrument.
- In the Multi-Instrument we'll add a Silence Instrument. This instrument lets us add a silent track, so this we'll allow that some of them might stop in any loop. In order to use it, we'll need to adjust the durantion to, at least, the same duration of the instrument.
- Do the same for all tracks. Adjust the time settings by adding a Tempo Marker at the beginning (right-click the Logic Tracks zone and choose Add Tempo Marker)
- Add the rythm tracks at the end. You'll notic they're just 4 measures long, so we'll have to duplicate them by copying & pasting.
- Then we'll set up a new Loop Region that fits the 8 first measures. We can now play the event and listen to the random variations we can get each loop.
- In order to use it in the game, assign the Event to the Master soundbank as usual.
We can now build the soundbanks, then go to Unreal and play the map to listen to the new music.
We'll now try combining different loops and randomized subtracks to get random mixed-method music.
- We'll start by duplicating the rythm clips. Select all 6 clips using a rectangular selection (left click over the track and drag).
- Copy them next to the previous ones and adjust the Loop Region to fit the 16 measures.
- Now we'll add all the tracks as we did in the previous lesson. We can drag them to new tracks or use a single track. In this case, we'll have to remove the cross-fade settings which are automatically placed whenever overlapping occurs while moving a clip over another one in the same track.
- In order to complete the structure, we'll need to add the Bridge tracks. They've got 1 bar of pre-entry and 4 tracks, 3 variations for the guitar and 1 with the remaining stems. We'll add a new Loop Region to include this track.
- Finally we adjust the probability for the first loop so it can randomly exit to the bridge.
Now we can try this into the game, just rebuild the soundbank and play the map in Unreal!
In this lesson we're going to use a different guitar track depending on the player health.
- Delete the current guitar tracks (Audio 3 and Audio 14 in this example).
- Add 3 audio tracks to hold the guitar tracks again.
- We'll recover now the Combat-A and Combat-B guitar tracks. We can find them in the Assets tab. Drag them to the newly created tracks and adjust their duration.
- Now add the bridge versions behind.
- We now need to create the game parameter we need to choose the tracks to be used. Click on the main menu Create option and choose Add parameter...
- The parameter is PlayerHealth and it's a continuous parameter with values between 0 and 100. Of course 100 is the default value and the scope must be set to Global.
- Now select the first guitar track and we'll create and Automation for the track fader. Right-click on the fader and choose Automation.
- Click Add curve and choose PlayerHealth.
- Now you'll see the curve editor. You can create nodes by clicking over the line and drag them wherever you want. We'll adjust the values so that volume for this track is up between 50 and 80 PlayerHealth units.
- On the right panel you'll see the game parameter. This will allow you to change it and preview the sound for any possible value. At the same time, we now find a foldable subtrack below our guitar tracks that shows the track volume according to the PlayerHealth value.
- Repeat the previous steps for the other 2 guitar tracks. We'll use track 2 for values between 20 and 50 and below 2 respectively.
Try this into the game, just rebuild the soundbank and play the map in Unreal. You can lose health by shooting the rocket launcher very close to the character. Also you have health refill pickups with a cross icon troughout the map. Listen to guitar tracks changing according to your character's health.
Finally we're going to crossfade between Explore and Combat music versions, and we'll also introduce a Defeated segment to be played when our character is defeated.
- We'll first copy & paste all the Gameplay sequence back into the Gameplay Old event used by the Explore music. We'll start with the Logic Tracks and the 3 first track clips.
- Now copy the remaining tracks by selecting the full track, so we'll be also copying their Automation setup.
- Paste them below the 3 first tracks in Gameplay Old.
- And shift the tracks to adjust their starting point.
- We can get rid of the old Gameplay event.
- And restore the Gamplay Old event to its previous Gameplay status, so remove the " Old" part.
- We'll now define the parameter we'll use to decide whether our current context is Explore or Combat. Click on the main menu Create option and choose Add parameter...
- Let's define the CombatLevel parameter, which is a Global continuous parameter that ranges from 0 to 10.
- Now we'll need to create the appropiate Transition and Destination Zones so we'll jump between each depending on this parameter. Right-click the empty logic tracks space and choose Add Destination Region.
- The Region A will appear. Adjust it to the first 16 measures of the combat music.
- Now we'll create a Transition Region to this new region so we'll instruct FMOD what's the region that can jump to Region A. Right-click the empty logic tracks space again and choose Add Transition Region To > Regions > Region A.
- Adjust the Transition Region so it fits the Explore Theme and the Multi-Instrument, leaving the 1st pre-entry measure out.
- The default behavior of Transition Regions is jumping to the beginning of the Destination Region, but this music is designed with the same tempo and harmony for both Combat and Explore sections, so we'll use the Relative setting in the Transition Conditions panel.
- Now we'll need to set a condition for the transition to happen. Click the Add Condition button and choose Add Parameter Condition > CombatLevel
- Adjust the CombatLevel value range to 5.0-10.0. This means that when CombatLevel is above 5 it will jump to the combat clips.
- You can now play the event starting and the beginning and try changing the CombatLevel value using the right panel. When the value goes beyond 5, the music should skip to the combat clips. However the transition will be immediate, so it will be a bit harsh. Let's try to soften it a little bit!
- Right-click the Transition Region and choose Add Transition Timeline.
- FMOD will join the Transition Region and Destination Region with an in-between gap. Now, we can choose what to do in this transition time (and, of course, adjust this time, which at this zoom level is very long)
- We'll first adjust the Transition Timeline duration to 1 measure by dragging its right-side to the left and reducing zoom.
- Now drag the left dashed rectangle to the right and the right dashed rectangle to the left. This will create a crossfade zone between the two tracks.
- With a bit of patience, we'll do the same with all the tracks.
- We can hide this Transition Timeline, so it doesn't disturb us while we continue edition. Just right-click over the Transition Region and choose Hide Transition Timeline.
- We can also transition in the last Explore-Theme clip we left for the Bridge-Theme mixing part by the end. Copy and paste the transition we've just created and adjust it. You don't need to fit it in the loop region, we don't care about what's happening outside because we'll never reach that part. We've also copied the Transition Timeline of the Transition Region we've copied, the small circle at the top-right side of the rectangle is telling us a Transition Timeline is defined for that region.
- Now we'll have to do the same to transition from the Explore-Bridge clip to the Combat-Bridge one. Create a destination region fitting the Combat-Bridge clip and copy one of the previous transition regions. This way we'll be copying the Transition Timeline too. We just need to change the destination for the copied Transition Region.
- We can change the destination for this Transition Region by either clicking the destination option in the Transition Conditions panel and choosing Regions > Region B...
- Or by right-clicking the Transition Region and choosing Set Destination to > Regions > Region B...
- Now we need to do everything in the opposite direction. We need to transition from the Combat clips to the Explore ones when CombatLevel is below 5. I'll leave this as an exercise for you, this is how the result should look like (combat main section will directly jump to Explore-Theme and Combat-Bridge must jump to Explore-Bridge) Copying and pasting the Transition Regions will save a lot of time, you'll just need to change the destinations and the condition, CombatLevel must be in the 0.00-5.00 range:
- Finally let's see another way to transition, the Magnet Region. Magnet Regions work the opposite Transition Regions do. We can understand it as "Jump to this region if the conditions met". We'll use it to add a Defeated segment when PlayerHealth goes down to 0. Import the file into the Timeline.
- Right-click the Logic Tracks space over the clip and choose Add Magnet Region.
- Adjust the Magnet Region to fit the clip.
- Add the condition for the Magnet Region. Player Health must be 0.
- Now the Magnet Region will play looped when Player Health is 0. We can stop it by adding a Sustain Point at the end of the click. Right-click the Logic Tracks zone and choose Add Sustain Point.
- In the Sustain Point's Conditions panel add the condition of PlayerHealth being 0. This is the condition to keep the play cursor hooked in the Susatin Point. If the value was higher due to a player character respawn, then we'll get out of both the Sustain Point and the Magnet Region and follow the Timeline.
- Now we'll just need to tell what to do after the player character is respawned. We'll want to jump to the beginning of the Timeline, so we'll add a new Marker right at the beginning by right-clicking the Logic Tracks zone and choose Add Destination Marker.
- And at the end of the Death clip, we'll add a Transition To > Markers > Marker A.
Finally! We've got the resequencing behavior complete. Try this into the game, just rebuild the soundbank and play the map in Unreal. As there are no enemies in the map, I'm sending a CombatLevel value of 10 when you're using the rocket launcher and back to 0 when you use the Assault Rifle. You can lose health by shooting the rocket launcher very close to the character.