Trans-disciplinary tools for collaborative, choreographed, and embodied audio-visual live coding
References and intention;
Technical Summary;
Post-paper changes;
Future work;
The paper describes how we technically carried out the performance at Passos Manuel 14th June.
It combines two connected digital interfaces (described later) — using a shared choreographic vocabulary, the performers create meaning around the act and conditions of coding.
The piece is informed by recollection of sources that reference principles of non- linear composition, non-hegemonic time and space constructs, and techno-feminist understandings.
Paper Summary
- Seeking balanced and mutual interacton;
- Two computing environments: web browser & conductive;
- Emiting OSC messages to modify system's state according to those messages;
- Displaying transmited data allowing audiences greater insight into performer interactons;
Searching for practical solutions for how to improvise together through live coding based on our conceptual approach
Intention and References
- Conceptual aims;
- Research and references: from historical to contemporary;
- From theroy to Practice;
Conceptual aims
- Plurality and new layers of meanings;
- Non-linear compositon
- Balanced and Varied Interactions
- Non-hegemonic time and space constructs
Research and references: from historical to contemporary
The Hub (Gresham-Lancaster, 1998)
OFFAL, a non-hierarchical collectve [aiming] to connect an internatonal group of women engaged in electronic music by developing technological systems and organisatonal structures that facilitate collaboraton. (OFFAL, 2018)
BiLE (Birmingham Laptop Ensemble) (BiLE, 2018)
Benoit and the Mandelbrots, who use their own BenoitLib and MandelHub (Borgeat, 2010)
Various groups using David Ogborn’s collaboratve editor Estuary (Ogborn, 2017)
Kate Sicchio (Sicchio, 2018)
Marije Baalman (Baalman, 2018)
From theory to practice
- Shared vocabulary: new meaning applied to standard functions;
- Switching roles: audio < > visual;
- Multiple interactions: random functions + osc triggered functions;
Technical content
- Two systems, one in Javascript in the browser and one in Haskell connected to SuperDirt;
- Allowing each system to trigger changes in the other's state to carry out a performance;
- Connecting them through OSC to pass messages with meaningful addresses and arguments;
Web Browser {Joana}
- Google loaded on i-Frame;
- JavaScript functions to manipulate the visual appearance through live coding in the browser console;
- And triggering exisiting composed functions;
Conductive {Renick}
- The live coding system in Haskell;
- Text editor and ghci with a SuperCollider;
- 10 autonomous processes;
OSC
- Allowing each system to trigger changes in the other's state to carry out a performance;
- Joana sends commands to Renick which influences the sound — for eg.: arrangement of voices, rhythm, visual messages in the post window;
- Renick send commands to Joana which influences the visual display of the webpage — for eg.: skewing the body; overlaying elements; visual messages in the web console;
- Two concrete examples will be shown later in the presentation;
- Connecting them through OSC to pass messages with meaningful addresses and arguments;
- OSC.js: osc library for JavaScript;
- Hosc3: osc library for Haskel;
- Our code to integrate the two libraries with our two systems;
Post-paper changes
- For more details please refer to the paper, however...
- Use of "shared vocabulary" rather than technical commands, better match with our conceptual aims + greater assistance from each in setting up relevant state changes;
- Simplified commands to eliminate complex addresses, using single words arguments;
- Integrating both synchronous and independent actions;
- Messages were not displayed in alerta, only in the web console;
- Using Chrome rather than Firefox because it became necessary to use an iFrame in order to integrate osc.js with actual live Google web pages;
Shared Vocabulary
welcome
remove
public_sphere
private_circle
expanding
contracting
edge_limits
no_edge
vicious_circle
un_centered
center
interrupt
chance_dance
from_orbit_to_orbit
Shared Vocabulary became the commands
Shared Vocabulary
// Haskell:
| args == "edge_limits" = psc >> solo "hat" >> newRhythmReaction2 >> floodScreen 300 "|____________________________________________" >> newMessageFromJoana "edge_limits"
// Javascript:
function edge_limits() {
vazio = setInterval(function(){
document.querySelector("#circle").style.background = colors[colorIndex];
colorIndex = (colorIndex + 1) % colors.length;},6000);
};
// Haskell:
| args == "center" = newKitPattern "kitCirculoRaw" 6 33 >> newEnsPattern "ensCirculoRaw" 6 37 >> lowerStableGlobalDensity >> core >> floodScreen 1000 " -*- " >> newMessageFromJoana "center"
// Javascript:
function center () {
document.querySelector("body").style.transform=""
};
Integrating both synchronous and independent actions
- Embeded triggering functions;
- Intention: ease of use;
- Problem: not flexible enough; inaccurate timing;
- Two types of triggering functions: 01- synchronous functions and 02- independent actions;
Messages were not displayed in the alert, only in the web console:
Browser
- Google results in Firefox;
- Being online;
Cross domain scripting issue in integrating osc.js ;
Move to Google Chrome;
Added an i-Frame;
Constraints on the manipulation on i-Frame content;
Future work
- Generalizing our tooling so that others might be able to more quickly put this kind of OSC sharing technique into use;
- one-line system intialization;
- Configuration template with documentation, etc.);
- Practice: with additional practice, how much of the originally planned use of addresses and arguments be recovered or modified to better achieve our intentions;
- Explore different modes of physical expression and embodiment during the performance;
- A plethora of developments at every level (in code, aesthetically, conceptually, choreography... );
INTERNATIONAL CONFERENCE ON LIVE INTERFACES
Joana Chicau & Renick Bell — Porto, Portugal — June, 2018