Home | Audio & Scores | Biography and Work  | Performances


Whitewater

Whitewater is an open-form piece for improvising saxophonist and Max/MSP. The performer is limited to playing only multiphonics (and whichever of the multiphonics individual partials are playable) as well as having a set of guiding principles on style and how to interact with the computer part. Max/MSP analyses the multiphonics and plays back representations of them, while using cellular automata to both modify the existing multiphonics and to 'breed' new ones. The player and computer thus participate in a limited feedback loop with no imposed top-down form. The form is an emergent property of the moment-to-moment interactions between computer and player.

The piece's starting point was the idea of representing audio spectra as 2D visual patterns which could then evolve as a cellular automata (Conway's classic 'Life' in this case), altering the multiphonic as it goes. The main issue here is that of appropriate mapping; in such a way as to allow the spectra to evolve but without their rather fragile sonic identity being obliterated by the CA. Rather than literally mapping the visual interaction on the grid to sound, the partials in the multiphonic and a set of related 'shadow partials' are treated to an algorithm based on the 'Life' rules system – I'm indebted to Pierre Alexandre Tremblay for crucial elements of this idea and for coding the CA algorithm. Each partial is treated as a cell and subjected to a 'Life'-like rule system which decides if partials live or die, as well as allowing the possibility of mutation within the multiphonic between itself and the shadow-partial or a corpus of previously played multiphonics.


Audio and Score
Whitewater - Performed by Iain Harrison, Uni. of Huddersfield, 23/05/06
Whitewater x 3 - 30min installation for three moving players and 32 speaker array. Performed by Iain Harrison, Heather Roche, Ann Evans at WofS, Uni. of Huddersfield, 16/06/08

Whitewater [pdf - 96kb]


Performance History
Commissioned by Iain Harrison - 2006.
Performed by Iain Harrison

Iain Harrison (saxophone), RMA Student Conf., University of Surrey (05/01/08); ECAL Conference, Lisbon (12/10/07); SOMP Day, Huddersfield (12/06/07); York Spring Festival (02/05/07); RNCM Manchester (29/03/07); Whitewater x 3 (30min installation for three moving players and 32 speaker array) performed by Iain Harrison, Heather Roche, Ann Evans at WofS, Uni. of Huddersfield, 16/06/08

Performed by Heather Roche (clarinet) Bangor New Music Festival, Wales (28/02/08);

Performed by Eric Honour (saxophone): University of Wisconsin-Oshkosh (16/04/09); Kansas city (06/04/09); Franklin Pierce University NH (28/03/09); Brooklyn NY (26/03/09); Huddersfield (20/03/09); Perugia, Italy (19/03/09); Lucca, Italy (17/03/09); Vienna, Austria (14/03/09); Thessalonica, Greece (09/03/09);

Performed by Franziska Schroeder: ICMC 2008, Sonic Arts Research Centre, Queens University, Belfast, NI (24/08/08)



Analysis from thesis

For any wind instrument(s) and Max/MSP: Duration 15 minutes or more

The aim of Whitewater is to use multiphonics as harmonic material and focus on their inharmonicity. The piece also aims to build on the interaction model used in Primes and make a piece that is truly interactive on the harmonic level. To achieve this, Whitewater uses bounded improvisation with a choice of material that is wider (any stable multiphonic and its constituent single pitches) but with a more robust harmonic identity than Primes. Whitewater also improves on the interaction by using a computer patch that has equal agency to the live player in terms of leading the evolution of the piece.

To contribute meaningfully to the harmonic evolution of the piece and on an equal footing with the live player, the computer uses a cellular automaton as a life-like spectral filter. The computer analyses the input multiphonics in real-time and responds with its own version in the form of sine waves, the computer then breeds new versions of the multiphonic by treating each partial of the spectral data as a cell in a cellular automaton—see below for a detailed discussion of the cellular automaton. The player's subsequent interaction with these 'bred' multiphonics creates a loop whereby the cellular automaton keeps altering the data and at the same time is constantly reseeded by new data from the performer, which is itself is a response to the what the computer does. Unlike Primes, the computer here has complete agency, it has the same level of responsibility as the performer to alter or stop the piece. The computer's agency is quasi-random and not a true intelligence like the live player, but the material and the interactions allowed by the score are simple enough for both agents to contribute equally: in effect, the live player is brought down to the level of the computer in terms of decision making. Left to its own devices, the computer may become locked in a loop or may simply stop, depending on the particular material in circulation at that moment, the player's job is to lead the computer – as a charmer leads a snake.

[1.1] Cellular Automata:

For me, if one chooses to accept a definition of music as organised sound, the organisation needs to be perceivable on some level. For music to be understandable it must have a level of perceivable organisation which falls between two possible states—the extremes and boundaries of which differ for each listener. At one extreme is the state of order , with minimal variety and maximal predictability, while the other extreme is that of maximal variety and correspondingly minimal predictability known as chaos. Music is a lifelike entity which exists in the area between these two states.

Strange attractors also exist in this 'inbetween' state which is characterised by a variable mixing of order and chaos. The attractor never comes to rest in either state but also doesn't necessarily fall into a periodic oscillation; it may be infinitely varied. Strange attractors sit at this boundary between chaos and order in the same way that indeterminacies in music may oscillate in a seemingly random way inside a fixed space. In my portfolio are examples that represent this process in sound, such as the ever shifting harmonic relationships between live multiphonics and the evolving computer-generated multiphonics in Whitewater, or the overlapping independent lines of Lorenz.

Cellular automata are a class of logical automaton processes in which the repeated application of simple interactive rules to a set of two state (on-off) cells on a grid can produce an astonishing variety of complex systems.

Mathematical description of CA from Wolfram

Examples of CA

The best known example of these is John Conway's 'Game of Life' from 1970, which owes its name to the surprisingly life-like dynamic structures which can arise from many starting conditions. Illustration 19 shows three successive generations taken from a Game of Life run. The continuous evolution of the shapes is clear even in a small sample such as this. Cellular automata are used in my piece Whitewater as the engine by which the computer evolves material from the multiphonics received as live input.

From my musical perspective, systems that lie between chaos and order—represented by cellular automata such as Game of Life—are the most interesting because they maintain the balance between known and unknown that is essential for musical interest. This is put to work in my portfolio most clearly in the works which use text processes and bounded improvisation rather than fixed scores. The rules defined in the text score allow the piece to self organise in a manner analogous to the self-organisation of cellular automata and strange attractors. By limiting the mechanism of transformation, the identity of the piece stays within acceptable limits to ensure it always sounds like the same piece. By working within a continuum—such as frequency values instead of discrete pitches—there is an infinite range of possibilities for evolution so that the space is never exhausted.

The Max/MSP patch for Whitewater uses a cellular automaton to filter partials. Under the cellular automaton rule system, cells may tend to the extreme states of either chaotic proliferation, or total order if all the cells die. What is more typical is the middle ground solution, that the grid settles into one of an infinite number of possible states of periodic oscillation: where some or all of the cells are locked into a predictable pattern. For Whitewater, this is the most musically interesting phenomenon as it allows the player greater options for interaction.

However, the preceding description of generic cellular automata refers only to the process itself, the system becomes more complex once we examine its application in Whitewater where the cellular automaton is a process embedded in a two-agent text process. In this situation, rather than being left alone to evolve after the initial seeding of the cells, the interaction between player and computer is constantly reseeding the automaton with new cells, which leads to a considerable degree of indeterminacy and iterative feedback.

The cellular automaton in Whitewater is in effect a complex filter acting discretely on the partials of the input sound. This approach appears to differ from previous implementations of cellular automata in music, which mainly fall into two large paradigms: (a) note-to-cell mapping which focuses on localised pattern variation in midi/note-based music; (b) Granular synthesis implementations, focusing on stochastic pattern variation and swarm effects in timbre-based music. For a more detailed history of cellular automata implementations in music, please refer to the article by Burraston and Edmonds titled 'Cellular Automata in Generative Electronic Music and Sonic Art: A Historical and Technical Review'.

For Whitewater, neither of these earlier approaches were suitable. Because Whitewater uses spectral definition and discrete frequency content rather than quantised pitch-values, I wanted to avoid implementations which were based on the mapping of graphical cells to fixed pitch values. Similarly, the swarm-effect paradigm doesn't allow sufficient control at the frequency level. Rather than controlling stochastic distributions of frequencies, I needed to be able to manipulate individual partials (frequency/amplitude pairs) which change over time.

My initial idea was to take the partials of a sound and treat them as though they were cells on a cellular automaton grid. This idea was refined by Pierre Alexandre Tremblay who suggested replacing the unworkable grid concept with a frequency continuum—an approach which fits much better with my compositional language in general. In this approach, the cell's neighbourhood is defined as a musical interval. Thus, applying the same rules as above, if there are either three or four partials alive in the neighbourhood then the partial being tested remains alive, otherwise it dies: for example, if the neighbourhood chosen is a major 2nd, then if there are three or four partials within a major 2nd of the partial being tested then that partial is not filtered out. This mechanism was coded by Dr Tremblay as the spectralConway object; in the Whitewater patch spectralConway is used in its javascript version and further references in this document to spectralConway will always mean the javascript version—see $$$$Appendix X for the complete javascript code.

The Max/MSP patch contains a javascript object that is emulating the cellular automata, while Max/MSP itself is only doing two relatively simple tasks: pitch analysis is carried out by the fiddle~ object, and the resynthesis is handled by two ioscbank~ objects that process alternating pitch sets and overlap each other in time to ensure there is no break in the sound. The pitch analysis happens in two sections:
1. The raw spectral data is constantly being filtered through sprintf into a coll.
2. Fiddle~ registers an attack then (after a 10ms delay to bypass the attack transient) sends three 'dump' messages to the coll, with 1000ms delays between each after the first. Fiddle~ is configured to read the 15 strongest partials in the signal but often only finds six or seven. The three dumps method ensures that enough partials are sent from the coll into the spectralConway javascript engine

Once the data is sent into spectralConway then the javascript takes over.
1. A temp array is created to handle the incoming frequency/amplitude pairs and these are sorted by frequency.
2. The index of dead and alive cells is checked and if there is at least one dead cell then that is replaced with the next new frequency/amplitude pair from the temp array. This process continues until all the dead cells have been replaced or the temp array is empty.
3. The new array of live cells is output into Max/MSP as frequency/amplitude pairs to be rendered as audio by the ioscbank~ objects.

The cellular automata in spectralConway will continue to run as long as the 'evolve' message keeps being sent from the Max/MSP patch. The 'evolve' function in spectralConway runs steps 1-3 above and processes a new generation of cells in the automata. The purpose of the automata is to vary the spectra from the live sound and provide a foil for the live improviser, and if there was only a single sound played live then the automata process would tend towards its states of silence, chaos or periodicity. Each time there is new input from the performer then the automata is being reseeded with new data, thus the computer part is constantly being interrupted by the player. Equally, the player's attempts to form phrase-level objects are interrupted by the computers evolving harmony. This relates to the form of Lorenz in that the different agents are impeding each other, and from this struggle arises the form.

The basic mapping of the multiphonic onto the cellular automaton is the beginning of the evolution process. The cellular automaton is itself an indeterminate process (dependent on hysteresis and sensitive to tiny changes in input) inside the web of indeterminate processes and feedback systems that make up Whitewater. The computer part begins as a sonic near-match to the live multiphonic and then follows an indeterminate path to several possible states; including the extreme states of silence and chaos. However, the most likely end state is a periodic oscillation between a small set of pitches or timbre complexes.

The computer's output then becomes an element in the live player's text process. Because the live player is trying to create beats with the computer part, there is an internal feedback loop that pulls the player back to the pitch of the computer. But the interaction with the computer is a component of the computer's own feedback loop which modulates its partial set with the most recent live pitch. This could be a static process but for the indeterminate nature of both agents' responses. The live player will deviate slightly from the computer's pitch in order to create beats, and this deviation will in turn become multiplied through a frequency modulation process. Whatever is generated from this frequency modulation process will then be filtered by the cellular automaton—which is indeterminate in itself—before being returned to the live player who starts the process again. To add a level of complexity, the computer patch inserts an extra frequency modulation process as an internal feedback process between the live input and the filtering cellular automaton. The filtering process is continuous, while the frequency modulation happens only when there is an input, thus the computer part tends to vary in cycles related to the activity of the live player. This is one of the main sites of vertical indeterminacy in the piece. The player has a level of control over the multiphonics and pitches but their evolution is dependent on a multivalent feedback process with several rule-sets operating simultaneously.

In Whitewater, spectral modelling is performed by the computer by analysing the real-time input of the solo performer. The computer takes the multiphonics of the player and 'breeds' eccentric variations before resynthesising them from sine waves and playing them back. The breeding process is performed by a cellular automaton acting as a filter that removes partials according to a proximity-based rule system; the rules favour small clusters separated by large intervals. Because the cellular automaton only removes partials, the computer patch includes an internal feedback system which adds extra partials derived by modulating the incoming partials against the most recent pitch played by the live player. As was seen earlier, a high degree of pitch material in multiphonics is derived from modulation and this extra process adds to the material in an indeterminate way which is dependent on the immediate pitch context as it evolves—which happens as some partials are filtered out and others added in. The evolution of this material is entirely dependent on both the text process in the score and the computer patch.

[1.2] Bounded Improvisation and Performance:

Whitewater takes the principles of bounded improvisation and interaction in Primes one step further by giving the computer part complete agency. This is achieved by allowing the computer to vary its own material via a cellular automaton. The feedback model described for Primes is essentially the same, but increased in complexity as the computer part is now undergoing spontaneous transformation: the ventriloquist's dummy takes on a life of its own, making the ventriloquist speak in tongues.

The bounded improviser playing Whitewater may use any stable multiphonic and its constituent single pitches (and intonational variants on these) as material. The phrase level ordering is not prescribed other than that long notes must be used: as is largely the case in Primes, this is both aesthetically pleasing and allows the computer time to react. As in Primes, the improviser is using the computer part as a duet partner, but here the partnership is more evenly balanced as the machine has its own agency. In Primes, the player could stop providing input and the patch would continue to play, giving the impression of agency. But in reality this would only be the randomly generated partials sounding, the trackers would simply maintain the last pitch they detected. Whitewater on the other hand can continue indefinitely without input (apart from the initial seeding). The piece would then be subject to the whim of the automaton's life-like processes, but it would still be evolving and 'performing'.

This raises the question of why bounded improvisation is necessary at all: why not simply write a fixed score for Primes and Whitewater? For it to be necessary, the improvisation must be doing something extra and unique. On a practical level, the improvisation is a way to deal with the inequities of the patch's response to the live input. There are both deliberate and accidental elements of unpredictability inherent in these patches, the only way to respond to these is to have an equally unpredictable live part. More importantly, the feedback loop which is central to these pieces needs this constant evolution to keep going, and to maintain the tension of repetition against variation. Without the feedback loop, the live player may as well be soloing karaoke-style over a tape part.

There's also the social element, that a piece like these requires the player's total commitment; these pieces cannot be sight-read, they require immersive learning before they can be performed. This is about making more of the experience for the player, to take the time to have true ownership of a piece, if it is what interests them. As the American painter Georgia O'Keeffe said:
Nobody sees a flower, really — it is so small — we haven't time, and to see takes time, like to have a friend takes time.

Bounded improvisation and free notation leave temporal decisions in the hands of the performer. The indeterminacy in these pieces is tempered by what the performer brings to the piece in terms of their own voice and performance reflexes both positively and negatively. On the positive side, each performer's version explores a different area of the piece's phase space (the set of possibilities within the boundaries defined by the score), ultimately enriching the piece. On the negative side, the performer may bring too much from other music and end up applying forms inappropriate to the pieces. There is no stricture against this in the score because the specifics are unforseeable; it is a risk that I accept, and can be mitigated against in practice through rehearsal and careful choice of performer. As an example of this, I took the piece to bassoonist and free improviser Mick Beck, who specialises in the manipulation of multiphonics. While the initial few runs went well, it soon became clear that the player found the piece's limitations to be too stifling. The piece can only support long sustained pitches, and this became aesthetically tiring for the player. We tried some variations where short notes were used and this was fine as long there was a lot of space between them, but any attempt to play melodic or gestural music into the patch was unsatisfactory as the computer could not respond in kind. We considered the option of using a footswitch to occasionally cut off the input to the patch so that the player could improvise in whatever way they chose without affecting the patch's output. This would allow an improviser to take more control but it would also destroy the feedback loop between player and computer: it would turn the computer into an accompanist.

As with Primes, the score for Whitewater defines the interaction from the bottom up without defining an overall structure. The piece's form emerges from the interactions being always different but the same. Whitewater has a robust identity due again to the limited soundworld. The flexibility of the form means that it can be performed as a concert piece or as an installation. In the past Whitewater has almost exclusively been played as a solo concert work, but recently there has been a very successful version with three simultaneous players who moved through a space with multiple microphones and speaker arrays. This is something that has a lot of potential for the future of this and other pieces.

The first few performances required that a loose score be prepared for the player. This was mainly so that the performer could be confident that they were playing the piece 'correctly'. Using a fixed score creates a performance problem, because the computer's response cannot be predicted from version to version (the patch is sensitive to initial conditions), the performer would become disoriented when they are following a score which the computer is not referring to: this leads to the computer making decisions that the performer must react to but which bear no relation to the score. Hence the piece only truly works with improvising players, a score is fundamentally incompatible with the piece but is acceptable as a learning tool. However, the piece is also problematic for improvisers due to its limitations. As was mentioned above, the player has infinite possibilities within a small area, but the simplicity of this in some ways reduces them to the machine level of decision making. Players who come from certain free improvising traditions can find this stifling and become disinterested. This piece works best with players who can strike a balance between reacting to an ever changing context and not straying outside its boundaries.



Whitewater algorithm (original version for javascript for Max/MSP) by Pierre Alexandre Tremblay

This will be released on the University of Huddersfield repository pages soon and linked to from here also.