Having come into the field of ‘Live Coding’ performance from a career as a session musician and an academic background in the arts, I am highly inclined towards deep thought and philosophy into the meaning and motivation behind my work. In this short series of articles, I will share my current personal points of view concerning my primary areas of engagement with the Live Coding artform.
My motivations and ideologies as a ‘Live Coder’ in music performance come from three primary sources:
- Having come from an academic and professional background in session musicianship, where technical mastery (incorporating musicality) of ‘the instrument’ is valued above all other concerns.
- A long term personal interest in both the discussion of and applications for machine learning methodology in creative practices. (https://github.com/OscarSouth/theHarmonicAlgorithm)
- Long term professional collaboration with Saydyy Kuo Fedorova, who is inspired heavily by historical cultural material from the indigenous heritage of her home nation, The Republic of Sakha (North Siberia) (https://UDAGANuniverse.com)
Point number one is easy in a general sense and a little fuzzy around the edges if you think too hard about it. From my perspective as a performer, I would present an analogy of the pianist/composer. This individual will begin with the conceptualisation or discovery of fragments of ideas, which are refined, combined and developed over time into a structure, finally crystallising the perfected form of his/her idea into a concrete work. The performer now shifts his/her efforts to mastering the reproduction of this finished work. In the moment of performance, the cumulation of this process is presented as the performer reproduces the work in real time. This offers a direct mapping for live coding performers to draw on, where the composing process involves deep exploration and experimentation with source code, while in performance a perfectly ‘optimised’ form of the algorithm is reproduced in real time.
The key difference present in the context of live coding is that the pianist of our analogy began his/her creative process with a fully formed instrument and did not attempt to modify or extend it inside the scope of his/her creative process (excepting cases of ‘prepared’ instruments for the time being). McLean, A. shared a great perspective on this in his 2007 paper “Improvising with Synthesised Vocables, with Analysis Towards Computational Creativity”, where he states: “the live coder is building an instrument while trying to play it”. This is a clear differentiator and where the boundary could or should fall can become fuzzy — a line must be drawn between what code is prepared and pre-loaded/compiled in advance of the performance, and what will be reproduced in the moment. To look to the two extremes, it would be clearly impractical to create a real-time performance in binary code. On the other end of the spectrum, to begin a performance by executing a `play` function that triggers compiled code (the performer then sitting back and enjoying the show!) could be unsatisfying for an audience expecting a performance. The responsibility for drawing this boundary falls on the performer.
Personally, with a view towards showmanship and an inclination towards instrumental virtuosity, I do not consider where the boundary lies during the composition process and will freely move it around at my convenience. When it comes time to prepare for performance, I then work to ‘push’ the boundary back as far as I can, so that starting from a blank screen the audience can observe the composition being reproduced as completely as is physically possible, within the constraints of the performance. To me, this is a very close analogy to how the pianist may start with the metronome on a slower tempo, adding little ornamentation, and slowly increasing the speed while adding elements of musical flair until they can reproduce a breathtaking work at seemingly impossible rates.
In an improvisatory context, I would be much more inclined to begin with a larger amount of pre-developed source code ready to be drawn on through higher order functions. This could very easily be taken as an analogy for how a jazz musician will repetitiously prepare musical vocabulary for various contexts in advance of performance — having a larger prepared vocabulary allows for a greater freedom of expression in the moment. Practising is abstraction!
As a parting observation on this point, one of the greatest aspects of the live coding artform for me is the unlimited scope in creative potential for conceptualising the role of the performer. Essentially, the boundaries of ‘the instrument‘ are whatever the performer chooses them to be. I am looking forward to having my ‘traditional’ point of view into performance completely inverted/subverted/converted into something entirely new, through my observation and admiration of the creativity of fellow contemporaries in the field.
Until next time!
Oscar South
Really enjoyed this. Been looking at how to strike this balance as I explore live coding as a jazz/rock musician and hacker. Thanks for your thoughts.