top of page

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)

 

In the Hall of the Markov King - Andrew Milne
00:00
Markov Hysteria - Andrew Milne
00:00

This will then be modified with rules based on music theory to control the raw Markov output.

wip.png

work in progress

bottom of page