kyklos

Kyklos (κύκλος = “cycle, circle”) is a work for 6 melody instruments, it can be performed live, presented as a six channel surround sound tape piece or as a piece for melody instruments and tape or as an installation. There is no conventional hardcopy score for this piece.  The score for kyklos exists as a video file which is equivalent to a 17 meter long score in six parts. This is scrolled through over the duration of 18 minutes. The performer/s play from a projection of this score which may also be visible to the audience. The score is written in a form of proportional notation.

kyklos-detail

Video Score

The documentation, mixes, binaural and spatialisation patches are stilll in progress but there is a stereo .ogg and a dvd .iso of the score available for download.  You can browse the different format files available here: http://rob.goto10.org/kyklos The code used to make the composition is available under a free art licence and is avalable from my svn https://code.goto10.org/svn/rob/kyklos/ (its quite an ugly hack using puredata, bash scripts and lilypond)

Version I for Flutes

I recently collaborated with flautist Joe O’Farrell to make a version for flutes. 2 x picc., 2 x C, 2x Bass Flute. The main bits of interest for preview are the stereo mix down: http://rob.goto10.org/kyklos/kyklos-2ch-mix1.ogg The scrolling score and the music together as a video file: http://rob.goto10.org/kyklos/kyklos_audiovideo-x264.avi For performance you will need the high resolution HD video file: http://rob.goto10.org/kyklos/kyklos-score-HD720p-x1point77.m2v Parts for transposing instruments are available on request (these are easy to make so please ask) If you have a home cinema surround sound system you can download the dvd ISO image and burn it to a DVD – then you can listen to the composition in surround sound (5.1) http://rob.goto10.org/kyklos/dvd/

http://rob.goto10.org/kyklos/kyklos_dvd.mpg

More Detailed Analysis: (In Progress)

In this piece i make heavy use of probability theory or weighted randomness.  Working with probabilities allows me to consider my material from multiple angles simultaneously, in the context of this piece each of the lines of music is in many ways the same line of music.  Each line shares the exact same pre-compositional determinants, pitch, attack and durational elements yet from the outset the lines diverge in their own directions.  To take an example if each performer is a dice roller and each pitch is a dice number then we can expect all involved to through the same numbers in the same order – they will all throw random numbers, the chances of any two lines being the same are highly improbable.  However, what is made manifest by there action is the very randomness of the system they work within, that is what is described by the numbers thrown by the six dice rollers.  The same thing is at work within this piece, except the system described by the music is not a simple one dimensional random system.The system at work here is based on a multilevel probability weighting system.  The system I use is based on Markov chains, a fist order chain comprises a probability table which allows us to weight certain values, like fixing a dice in many ways. A dice has a 1/6 probability of any one desired number being thrown at any one instance. 1=16.67% 2=16.67% 3 =16.67% 4=16.67% 5=16.67% 6=16.67%. I will simplify things and describe a Markov chain with three elements, or “states”.  If we throw a 2 we are in state 2 from this state there is a 70% probability that the next state will be 1 and a 30% state that the next state will be 3.  From the 3 there are equal chances of the next number being 1, 2 or three. From 1 there is a 90% chance of the the next state being 1 (repeating itself/not changing states) and a 10% chance of it being 3.  With a dice the current state of the dice in now way impacts the next state, the system is completely random, if I throw two sixes in a row what are the probabilities of the next number i throw being a six, answer, exactly the same as before 16.67%.  With the Markov chain the current state influences the future, any past events are irrelevant, the current state is the only factor determining the potential future states.  This is described as a first order Markov chain, in a Order 2 Markov chain the state of the previous event also comes in to play.  The Markov chain is a common tool in many areas, often it is used as an analytical tool, by studying the previous frequency and sequence of events a probability table can be used to predict future events, as such it is used to study population dynamics in biological systems, to model classical music (Mozart/Bach emulators) and even to generate Spam emails.  Take for example this text, if i perform a Markov analyis of word order and frequency then want to generate a new text based on this it will look like this:

In the exact same six (dice number then we can expect all involved to model classical music). In the current state is in many ways; the next state of music is made manifest by the Markov chain, the Markov chains, a dice in the Markov chain in this piece I make heavy use of music.  Working with probabilities of music is completely random, if imake heavy use of the current state is what is based on this it is a state of this it is a fist order Markov chains, a order they will be expect all involved to predict future events a fist order and frequency and frequency and durational elements yet from the next state is a row what is at work within, this to weight certain values, like this; piece i throw make heavy use make heavy use of any two lines diverge of the outset the next number i use of events are the previous event also comes in the lines state the Markov chain the numbers in a made manifest by the next number i make heavy use of the potential future events, a dice roller and each pitch, is a probability table can expect all involved to consider my material from multiple angles simultaneously, in many ways the chances of the same are order and each pitch is what is based on a simple one dimensional random if i make heavy use of the music is the same pre compositional determinants (pitch, is described based on this piece I throw random numbers in their own directions: are is a six dice roller and durational elements yet from multiple angles simultaneously in a probability that the lines of any two lines diverge in their own directions; simultaneously in now way impacts the the lines of this piece each pitch is described by the current state of music: this piece each of the chances of the same outset system described by the previous event also comes in a Markov probability theory or weighted randomness)

In Kyklos and the other piece written using this technique I do not analyse previous works but start by “composing” sets of probability tables and plan how those probability tables will change over time and how they will relate to the pitch material, durations, modes of attack and other elements i decide to order in this way.  The composition is done very much in a pre-compositional way, constructing a set of elements I wish to use and then deciding how these elements will relate to each other and change over time.  The technique is a formalization of much work i have done in the past using mobile structures and “game” systems within my music.  This codifies the system and brings it to a level where there is a macro/micro homogeneity.  The type of system I use in Kyklos is a Order 2 Markov chain.  I will go into more detail about that in a later section.  I will conclude here by saying that the multiplicity of results given by the system, gives  perspectives on the system itself and it is these perspectives that are the essence of the composition itself.

The system gives perspectives that in Kyklos this the
past using this technique I do not analyse previous
works but start by the technique I use will relate to
the composition is done in this Kyklos and other and
game then deciding how they will relate to the type of
much in this technique I will go into more detail about
that the system and then deciding how they will relate
to Order in Kyklos and brings it to use in the other
and then deciding how those probability tables and
change over time; and the type of probability tables
and brings it to use in the system I will go into more
detail about that the multiplicity of the composition
is a macro homogeneity; not analyse previous works but
start by the pitch material, durations, modes of the
composition system, i do not analyse previous works but
start by the technique I do use in Kyklos the past
using this way, constructing a macro homogeneity!

I will next give an overview of how I constructed the basic algorithm using the programming environment, pure-data and how I composed the pre-compositional tables that determined the pieces eventual character.  This I will follow with an account of how as a composer I intervened after the algorithm had run its course and discuss the importance of both pre and post algorithm actions in the realm of computer assisted composition.

Pure Data

This is a very basic markov chain implemented in pure-data (from the puredata example files)

“Here is how to construct a simple, three-valued Markov chain using “random.” Each time you click on “step” the previous output (“state”) determines which of three randomnetworks to invoke, each having a different probability distribution for the next value of “state.” For instance if the state was 3, the next state will be 1 70% of the time, state 2 10%, and state 3 20% “

basic-markov

My first approach was to use this idea using combination of [random] objects and [moses]objects sending probability lists and unpacking them to percentage values that would be used by the moses variable. I then  expanded the idea to have multiple iterations of this patch talking to each other to gain the Order 2.  This method proved clunky as it didn’t allow easy expansion and it was more efficient to use the [prob] object which does the same thing in a more efficient way. Below you can see the piece of pure-data code where the probability object is fed through message the receives its 12 variables via a [send] message. [r  $1-probability-list-$2]

markov-gut-prob\

This code is then expanded to 12 instances to allow for a second order of probability sets for each state. Each of the 12 rows of “buttons” contained within the pink box below contains the code contained in the image above but with a unique set of probabilities.

markov-gut

Let me describe this like this, imagine you have 12 barrels.  Each barrel is filled with balls marked 1 to 12.  Barrel one has lots (half) of balls with the number two and the other half of the balls are an even mix of the remaining 11 numbers. All the other barrels have a similar thing happening inside but with different proportions of different numbers.  To enter into the system you walk up to a barrel and pull out a number, you read that number, say its 5, you place the ball back in the barrel and then make your way to barrel number 5 and pull a ball from that barrel and carry on like that. The way in which you will move from barrel to barrel and the patterns of your movements that will emerge will be determined by the proportions of different numbers that exist on the balls in each barrel.  In Kyklos the design of these proportions and how these proportions change over time is a fundamental part of the compositional act.  Now, consider this the barrels are not barrels they are durations and the numbered balls are pitches, or more precisely the numbers representing elements of a set of predefined pitch sets or “rows” to use the language of serialism.  This is the basic structure of the algorithm the underlies kyklos and the other pieces written using this techniques. Further layers of complexity are also involved, as this system is not realtime we have the ability to predict the future and we can determine things like articulation and modes of attack based on what will or is likely to happen in the future but more about this later.

Below I present a screen shot of a section of the pure-date score generating algorithm, in this section we can see the 12 band  markov chain, the pitch set, the duration mode and the probability mode.  It also shows at what stage of the process of modualtion it is in between the modes.  At the bottom we can also see the code that is being generated to be later processed and fed to the notation generation system.

one-voice

The above is 1 part, below you can see this part reduced to an abstraction (subroutine)called c-markov, this is given in 6 instances, each instance having a different set of instructions with regards to how to execute its contents. Along with this you can see various control functions that are used for controlling the running and output of the algorithm.

six-voice

These c-markov subroutines are fed data about pitch, duration and probability through a composed set of tables.  For example section 1 says the piccolo-1 will use these pitches these durations and this probaility table, after x occurunces of this event then piccolo 1 will move to the next set of pitch, duration, probability tables and so on.  This set of tables is called the .score file and looks like this:

\\\\\\\\\\\\\\\\\\\ last 4 transposition factor – mode direction

1, picc-frq 1  0 1 3 4 6 7 9 10 12 13 15 16   60 0 0 0;
1, picc-dur 1  .25 .25 .25 .25 .25 .25 .25 .25 .25 .25 .25 .25 0 1 0 0;
1, picc-prb 1  0 6 3 1 0 0 0 0 1 0 0 0;
1, picc-gst 1  0 0 0 0 0 0 0 0 0 0 0 10 0 1 0 0;

2, picc-frq 2  0 1 2 3 4 5 6 7 8 9 10 11 72 1 0 0;
2, picc-dur 2  .5 .5 .5 .5 .5 .5 .5 .5 .5 .5 .5 2 0 1 0 0;
2, picc-prb 2  0 7 4 3 1 0 1 0 0 0 0 0   1 1;
2, picc-gst 2  0 0 0 0 0 0 0 0 0 0 10 0   0 1 0 0;

3, picc-frq 3   0 1 2 3 4 5 6 7 8 9 10 11 60 0 1 1;
3, picc-dur 3  .25  .25 .25 .25 .25 1 .25 .25 .25 1.5 .25 .25 0 1 1 1;
3, picc-prb 3  0 6 3 1 0 0 0 0 0 0 0 0 1 1;
3, picc-gst 3  0 0 0 0 0 0 0 0 0 10 0 0  0 1 0 0;

4, picc-frq 4  0 1 3 4 6 7 9 10 12 13 15 16 72 0 1 1;
4, picc-dur 4  .25 .25 .25 .25 1 1.5 .25 .25 .25 .25 .25 8 0 1 1 1;
4, picc-prb 4  0 6 3 1 0 0 0 0 0 0 0 0 1 1;
4, picc-gst 4  0 0 0 0 0 0 10 0 0 0 0 0   0 1 0 0;

5, picc-frq 5  0 1 3 4 6 7 9 10 12 13 15 16 72 0 1 1;
5, picc-dur 5  .125 .25 .125 1.25 1 1.5 .25 1 1 1 1 6 0 1 1 1;
5, picc-prb 5  0 6 3 1 0 0 0 0 0 0 0 0 1 1;
5, picc-gst 5  0 0 0 0 0 0 10 0 0 0 0 0   0 1 0 0;

1, c-frq 1  0 1 3 4 6 7 9 10 12 13 15 16   60 1 0 0;
1, c-dur 1  .25 .25 .25 .25 .25 .25 .25 .25 .25 .25 .25 .25 0 1 0 0;
1, c-prb 1  0 6 3 1 0 0 0 0 1 0 0 0;
1, c-gst 1  0 0 0 0 0 0 0 0 0 0 0 10 0 1 0 0;

2, c-frq 2  0 1 2 3 4 5 6 7 8 9 10 11 72 0 0 0;
2, c-dur 2  .125 .125 .5 .5 .5 .5 .5 .5 .5 .5 .5 2 0 1 0 0;
2, c-prb 2  0 7 4 3 1 0 1 0 0 0 0 0   1 1;
2, c-gst 2  0 0 0 0 0 0 0 0 0 0 10 0   0 1 0 0;

3, c-frq 3   0 1 2 3 4 5 6 7 8 9 10 11 60 1 1 1;
3, c-dur 3  .25  .25 .25 .25 .25 1 .25 .25 .25 1.5 .25 .25 0 1 1 1;
3, c-prb 3  0 6 3 1 0 0 0 0 0 0 0 0 1 1;
3, c-gst 3  0 0 0 0 0 0 0 0 0 10 0 0  0 1 0 0;

4, c-frq 4  0 1 3 4 6 7 9 10 12 13 15 16 72 0 1 1;
4, c-dur 4  .25 .25 .25 .25 1 1.5 .25 .25 .25 .25 .25 8 0 1 1 1;
4, c-prb 4  0 6 3 1 0 0 0 0 0 0 0 0 1 1;
4, c-gst 4  0 0 0 0 0 0 0 0 0 0 0 0   0 1 0 0;

5, c-frq 5  0 1 3 4 6 7 9 10 12 13 15 16 72 0 1 1;
5, c-dur 5  .125 .25 .125 1.25 1 1.5 .25 1 1 1 1 6 0 1 1 1;
5, c-prb 5  0 6 3 1 0 0 0 0 0 0 0 0 1 1;
5, c-gst 5  0 0 0 0 0 0 0 0 0 0 0 0   0 1 0 0;

1, bass-frq 1  0 1 3 4 6 7 9 10 12 13 15 16   60 1 0 0;
1, bass-dur 1  .25 .25 .25 .25 .25 .25 .25 .25 .25 .25 .25 .25 0 1 0 0;
1, bass-prb 1  0 6 3 1 0 0 0 0 1 0 0 0;
1, bass-gst 1  0 0 0 0 0 0 0 0 0 0 0 10 0 1 0 0;

2, bass-frq 2  0 1 2 3 4 5 6 7 8 9 10 11 72 1 0 0;
2, bass-dur 2  1.25 2.5 1 1.5 2.25 2.5 1.5 2.25 .25 .125 .25 2 0 1 0 0;
2, bass-prb 2  0 7 4 3 1 0 1 0 0 0 0 0   1 1;
2, bass-gst 2  0 0 0 0 0 0 0 0 0 0 10 0   0 1 0 0;

3, bass-frq 3   0 1 2 3 4 5 6 7 8 9 10 11 60 0 1 1;
3, bass-dur 3  .25  .25 .25 .25 .25 1 .25 .25 .25 1.5 .25 .25 0 1 1 1;
3, bass-prb 3  0 6 3 1 0 0 0 0 0 0 0 0 1 1;
3, bass-gst 3  0 0 0 0 0 0 0 0 0 10 0 0  0 1 0 0;

4, bass-frq 4  0 1 3 4 6 7 9 10 12 13 15 16 72 0 1 1;
4, bass-dur 4  .25 .25 .25 .25 1 1.5 .25 .25 .25 .25 .25 6 0 1 1 1;
4, bass-prb 4  0 6 3 1 0 0 0 0 0 0 0 0 1 1;
4, bass-gst 4  0 0 0 0 0 0 0 0 0 0 0 0   0 1 0 0;

5, bass-frq 5  0 1 3 4 6 7 9 10 12 13 15 16 72 0 1 1;
5, bass-dur 5  .125 .25 .125 .25 .125 .5 1.5 .5 .5 .5 .125 6 0 1 1 1;
5, bass-prb 5  0 6 3 1 0 0 0 0 0 0 0 0 1 1;
5, bass-gst 5  0 0 0 0 0 0  0 0 0 0 0   0 1 0 0;

Lilypond

sed and bash

The Big Daisy Chain and modular work-flows