About the Project
This procedural music system takes layers of varying audio segments and builds a track with them whenever the game would play music. It factors in time of day and location, as well as being able to play varying audio for different weather conditions.
Concept
I was inspired by Kenshi's audio system and wanted to attempt something similar for my Procedural Assets elective. My approach was to come up with a sonic theme for each area that would be in this conceptual game; I decided to go for a dystopian, sci-fi open-world exploration game as my base, and then went on with creating soundscapes in Ableton Live for each of these regions.

Technical Details
- Tools: Unity, Wwise, Ableton Live
I started by assembling a variety of different music loops, featuring different instrumentation per in-game zone, visualized by the map. These loops are split up into different buckets that I referred to as layers, which are then split up into sub-buckets for the purposes of having different music for day and night. In the current version, there are 6 loops per layer of each region; 3 for day, 3 for night. The system grabs loops randomly based on the time of day and will procedurally generate a track from them. Parameters like the probability of a bucket being used, and the delay min/max determines when the loops are introduced when music plays. This makes it so that the music can vary greatly, from feeling very full if 3 loops are pulled, to feeling very sparse when only one, or only two, are pulled. The delay min/max adds to this even further by being able to vary when a loop will play, bringing in a high level of variability.
On top of this, there's also a weather bucket that can diegetically fade in when a weather condition kicks in, with different loops it can choose from, adding variance to the sound of each weather condition.

Examples
A few examples of what the system can generate. The probability of each layer in the following tracks playing is set to the max to show the system's full potential.
Ne Astera
Time of Day: Day
Delay Range (seconds)
Layer 1: 0 - 5
Layer 2: 10 - 35
Layer 3: 15 - 60
Shānchéng
Time of Day: Night
Delay Range (seconds)
Layer 1: 10 - 15
Layer 2: 0 - 5
Layer 3: 20 - 30
Chrysalis
Time of Day: Night
Delay Range (seconds)
Layer 1: 20 - 25
Layer 2: 10 - 15
Layer 3: 0 - 5
