6.2) Building a Playback System
Click on the Default Work Unit of your Interactive Music Hierarchy. You will see all available types of Objects of the Interactive Music Hierarchy. Inspect the different icons! With your quite comprehensive knowledge of Wwise you can probably already guess how to use some of them. Let’s try out some of them for the Platformer Game. The first step is to import the music composed for the Platformer Game. Instead of importing to the Actor-Mixer Hierarchy as you’d normally do for sound effects, you’ll be importing to the Interactive Music Hierarchy.
Select the Work Unit in the Interactive Music Hierarchy.
Right-click it and choose Import Audio Files....
Click the Add Files... button.
Navigate to the location of the sound files folder for this course provided by the tutor called Platformer_Soundfiles > Music, select all Files and click Open.
The Audio File Importer displays which audio file you want to import. Notice in the Object Type/Action column that the Object Type is automatically set to Music Segment. This is the Object type that all audio files imported into the Interactive Music Hierarchy are brought in as. Music Segments offer musically oriented properties such as Time Signature and Tempo which allow Wwise to understand where the musical Bars and Beats fall in the sound file. This understanding can then allow Wwise to smoothly transition between different sections of music. (Pic01 Music Segment)
Click the Import button.
You’ll see that each audio file is represented by a unique Music Segment. To get a feel for the music that was composed for the gameplay, go ahead and play each of the Music Segments.
The music is composed with a Tempo of 124 beats per minute (or short BPM) which feels quite fast. Therefore it fits quite nicely with the relatively fast gameplay. All Music Segments have a Time Signature of 4/4.
Select and play the Music Segments.
As you listen to the Music Segments, notice that features found in the Property Editor are very similar to those found when working with Sound SFX objects in the Actor-Mixer Hierarchy.
Expand one of the Music Segments.
Within the Music Segments, you see a single Music Track Object with the same name. Music Segments can contain multiple Music Tracks, for example one Music Track for every instrument group of a musical piece, which can all be played back simultaneously or depending on the value of a Game Parameter; but, for this lesson, you’ll stick to a single Track for each Music Segment. (Pic02 Music Track)
Now let’s create two Music Playlist Containers as part of the playback system for the Platformer Game. Name them “start” and “end”. (Pic03 Music Playlist Container)
Focus for a moment on the word playlist. With music library software and listening devices we use playlists to predefine categories of music and even set which songs play first and last. We can also choose to randomize which song plays next. When the playlist is complete, we can either repeat the playlist, jump to another playlist or stop playing altogether. In a similar way, a Music Playlist Container can be configured to play Music Segments, albeit with much more flexibility than what you’d find with conventional music library tools.
In the main menu bar click Layouts and choose Interactive Music or press F10.
Drag and drop Music Segments into the Playlist Containers. (Pic04 Creating a Playlist)
Look at the Property Editor. It is now time to set the right Time Settings for all child Segments of the Playlist Container. Doing this on the Playlist Container saves some time. Repeat this for both Playlist Containers. (Pic05 Time Settings)
You can now click on one of the Music Segments, to look at the Music Segment Editor. The Music Segment Editor is where you arrange and edit Music Tracks and Sub-Tracks that are child Objects of a Segment. The basic component of one Music Track is a Clip, a rectangular area representing a single source file. You can adjust when a Clip begins to play by dragging it left or right along its Music Track. You can move Clips from one Track to another by dragging them up or down. You can also overlap Clips on a single Track. You can make a Clip shorter by dragging one of its blue handles at the bottom of a Clip inwards, or extend it by dragging the handle outwards. When you extend a Clip, it repeats itself. Each repeat is called a Loop. You could change the Volume Property over time by adding Control Points to and changing values on the red line, or add a Fade-in or Fade-out for each Clip. Most importantly, there is a green handle in the beginning of the Track, which marks the Start Cue, and a red handle at the end marking the Exit Cue. The blue Play Cursor displays the current position during playback. In this case, you don’t have to change anything, since the Music Composer exported the tracks exactly on beat in a very professionally manner.
Populate the Playlist Container by dragging and dropping the Music Segments in the Playlist Editor. (Pic06 Populating a Playlist)
Now you’re ready to build the Playlist that will define the playback order of the Music Segments. Since there is a Segment called “start”, it is probably the composer’s intention to put this as first element in the Playlist. Make sure it is at the top of the Playlist! After this particular Segment it would be nice to continue the sequence with the Music Segment “partA”, an then with either “partA” or “partB” being randomly selected.
Create a new Group set to Random Continuous right after the Music Segment “partA” and make the Music Segments “partA” or “partB” child Objects of this new Group. (Pic07 Groups)
One way the Wwise Playlist System differs from those found in most music library applications is that with Wwise there’s the addition of something called Groups. Think of a Group kind of like a Playlist within a Playlist. This is just the beginning of how flexible the Playlist System can be, if you imagine huge Playlists being nested within one another. Look at the current Playlist with it’s parent Group set to Sequence Continuous. It will begin with the “start” Segment, then continue with the “partA” Segment, then continue with a new Group set to Random Continuous, which then selects either the “partA” or “partB” Segment. As soon as both Segments of that Group have been played back, the Playlist stops. Try it out for yourself and watch the blue indicator for the selected Segment. (Pic09 Playback Indicator)
Since you want the music to continue playing until there is another Game Call, you’ll have to adjust the Loop Count Property. Set it to Infinite by clicking the lower arrow facing down. You have even more control over playback by adjusting the Random Type, Avoid Repeat and Weight Property. (Pic09 Playlist Properties)
Before you’ll create interaction within your Music System, you’ll have to populate the Playlist for the second Music Playlist Container created in the beginning of this chapter. A simple one time playback of the Music Segment “end” is sufficient enough, since this should be the last element before the music stops to play completely at the end of the level when the player passed the finished line. (Pic10 End Playlist)