
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.
Also, the Exploration track contains a “Glitch” layer which fades in when an enemy detects you.
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.
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.
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 Implementation29th May 2022 – Music Composition and Implementation (done on 25th May 2022)
Deep Work Hours for music composition and implementation: 15