Introduction

If you get some musicians to play together they can play in various ways. They could all play from a script which has been previously prepared, such as pieces of notated sheet music or a graphic score, and as long as they can all agree what the symbols on the script mean they can translate from those symbols into sound. In musical improvisation however the script is either very sparse, such as a set of chord symbols with no explicit directions as how to play them, or missing altogether.

A typical scenario could be this: A musician starts strumming their guitar say, playing something that they've been working on in their own time. Another person hasn't heard this tune or riff before but wants to play along and so they go through a process of interpreting what is being played, trying to fit it into some sort of conceptual framework so that they can follow the flow of the chords or melody and can play along. Quite often the interpretation phase can consist of asking questions like "what was that chord that you just played?", or watching a player's fingers move on their instrument in an attempt to derive the chordal structure. With experience though it becomes easier to do it just by "ear", and therefore it becomes possible for musicians to improvise purely using auditory cues.

Musicians, if they are sufficiently proficient with their instruments and have a fairly wide background of musical ability, tend to find this process fairly easy and consequently are able to think about what would sound good, rather than the process of following the harmony. Musical improvisation can therefore become as natural a process as speech is, where people could be considered to be improvising with words.

I am interested in emulating the underlying processes of improvisation to see to what extent they can be mechanised. How would one go about producing a mechanism that could play with a performer in real time? In this report I explore some ideas that point in direction of the fully functioning M.I.M. (Musical Improvisation Machine.)

In the following chapters I will discuss a method of building the M.I.M. and also present some new products that could be constructed by using variations on these methods.

Chapter two discusses basic music theory and explains a lot of the terms that will be in use throughout this report. Chapter three presents a representation of musical harmony that is rich in musical meaning and can be operated upon fairly easily using computational techniques. In chapter four I show how some of basic features of music can be recognised easily by using this representation. Chapter five explains how this can be expanded to encompass harmonic key recognition. In chapter six I present my ideas for building the M.I.M., and finally the conclusion is presented in chapter seven.