An algorithm can be defined as “a set of rules for solving a problem in a finite number of steps”, (David Cope, 2000). Algorithms are instructions that are followed to complete a task. When composing algorithmically we write the instructions that will create the music rather than the musical notes themselves.
If you were to write a song or compose a piece of music, traditionally the composer(s) decide exactly what note is played where, for how long and on what instrument. You may have a plan in mind of what the finished piece of music will sound like, but work through step by step explicitly writing down each note on a piece of paper or recording it in a sequencer or multitrack recorder.
With algorithmic composition, rather than spelling out each note and instrumental part, you create an algorithm or 'set of rules' that will create the musical surface for you. Heinreich Taube describes this as composing at the metalevel.
Here's a simple example. If you were writing a song you might start by writing a chord progression. If you were to write a chord progression algorithmically, you would specify:
- The list of chords that could be used
- How often these chords could or would change
- A way of choosing between these chords
- How many chords you wish to generate
Why Compose Algorithmically?
This brings us to a few of the benefits of being an algorithmic composer:
- Using computers, it's just as easy to generate 1000 chords as it is to generate 4.
- We can use the system to generate ideas for us, if we want we can discard those we don't like
- Once we've created the algorithm, we can tweak it to generate variations e.g. use a different set of chords or rhythm
This is a very simple example and is obviously quite limited. However it introduces us to some ideas that we'll look at in more depth in future posts.