honours project
Engine
Unity
Language
C#
Project Type
Course Work
Role
Programmer
Duration
Ongoing
My Honours Project title is currently "Algorithmic Music and its effects on User Experience".
This will include a system which procedurally generates music based on how a game is being played. For example, it will be able to generate more 'tense' music if the player is being chased by an enemy or more 'exciting' music if a player completes a level quickly. The game that will be implemented in is discussed here.
The foundation for this is analysing preexisting music (in the MIDI file format) with Markov chains. Put simply this counts the frequency of a specific note following another note, in the source song. When generating new music, it uses this 'frequency distribution' to choose the next note based upon the current note.
For example, if a simple melody is 'A-A-B-A-A-C#', A follows A twice while C# and B follows A once, so when generating a new melody if the current note is A there will be a 50% chance that the next note generated is A and a 25% that it will be either B or C#.
Just using Markov chains produces music along these lines (in both cases the main riff is used as the Markov input)
​
This will then be modified with rules based on music theory to control the raw Markov output.
​