Sound Design and Interactive Music Studies with Unity and Wwise – Part 4: Music Composition and Implementation

In Part 3 I wrote about the Sound Design and implementation process for the microgame project. This last part is about music composition and implementation.

Musical Results

I took the chart I made for Part 1 and tried to come up with some ideas in REAPER. The goal was to stick to the parameters I specified beforehand (~ bpm, instrumentation, etc). The process resulted in two tracks: Exploration and Boss Fight.

The Exploration track consists of three parts: A, B and a reprise / reduced version of A. The form is AABA’. Part A contains a melody and some distant pads which are triggered randomly for some variation.

Exploration Track in Wwise

Also, the Exploration track contains a “Glitch” layer which fades in when an enemy detects you.

Exploration Track with Glitch Layer

The second track is the Boss Fight music. It has three parts: A (Phase 1), B (Phase 2) and Defeated. A starts when the boss detects the player. If the player manages to lower the boss’ health bar to 50 %, Phase 2 starts and B is played. If the player wins, the “Defeated” part is played.

Boss Track – A Part
Boss Track – B Part

Interactive Music System

For this music system, the following states were used:

  • LevelState: Exploration, PreBoss, BossFight
  • BossPhase: Phase1, Phase2, Defeated
  • Detected: Undetected, Detected

The following video shows the music system in action.

Final Music System for the project

Learnings

  • Plan out your transitions on paper first. Interestingly enough, configuring the transitions between the tracks took me quite some time. Because I made a terrible, terrible mistake: Instead of planning them out on paper, I just went directly into implementing with trial and error. Never again.
  • Don’t use pre entry / post exit for transitions. I misunderstood the concept of pre entry / post exit in Wwise. For example, the Boss Phase 2 has a 1-bar-pickup. I thought that if I have leave this pickup in Pre-Entry, everything will be fine. But it wasn’t. It was a lot of headache and fades etc. did not work out. Don’t ask for details and …
  • … use transitions instead. You can use transition segments instead. I portioned the tracks in a modular way, as I can easily plug together parts how I see fit.
  • Use Regions in REAPER. Writing about portioning of tracks, I used regions in REAPER. I think they offer a perfect way of organizing adaptive music tracks. The region name contains all the information which I’d need for implementation: Track Name, Pre-Entry and Post-Entry Length. The BPM and individual tracks (if needed) were added in the Render Dialogue.
  • Look out for States! Yes, look out for them! Especially if they set your bus volume to -inf, and you forget to reset them to the initial state! ?
  • Don’t use too many AkBank components in Unity. First, I used the AkBank component to load my 8(?) SoundBanks. AkBank is fine for a small amount of Banks, but it gets confusing with time. Instead, just write a script with a SoundBank array, assign the SoundBanks and load them with a loop.

Wrap Up

Here’s the final result on YouTube:

DEADLINES

  • 24th April 2022 – Game Design (Level, Interactables, Enemies) + Setup (done)
  • 1st May 2022 – Concept, scope and plan for the project (done on 26th April 2022)
  • 15th May 2022 – Sound Design and Implementation
  • 29th May 2022 – Music Composition and Implementation (done on 25th May 2022)

Deep Work Hours for music composition and implementation: 15

Leave a Reply

Your email address will not be published. Required fields are marked *