Estuary 0.3: Collaborative audio-visual live coding with a
multilingual browser-based platform
David Ogborn
McMaster University
ogbornd@mcmaster.ca
Alejandro Franco Briones
McMaster University
francoba@mcmaster.ca
Luis N. del Angel
McMaster University
navarrol@mcmaster.ca
Antonio Roberts
hellocatfood@gmail.com
D. Andrew Stewart
University of Lethbridge
contact@dandrewstewart.ca
Jamie Beverley
jamie_beverley@hotmail.com
Bernard Gray
bernie@grbt.com.au
Kofi Oduro
illestpreacha@outlook.com
Jessica Rodríguez
McMaster University
rodrij28@mcmaster.ca
Carl Testa
carl@carltesta.net
Nicholas Brown-Hernandez
McMaster University
brownhen@mcmaster.ca
Alex MacLean
maclean199@gmail.com
Spencer Park
spinnr95@gmail.com
Kate Sicchio
Virginia Commonwealth University
ksicchio@vcu.edu
Eldad Tsabary
Concordia University
eldad.tsabary@concordia.ca
ABSTRACT
Estuary is a browser-based platform for live coding that allows a
heterogeneous collection of live coding languages to be used
together in collaborative “ensembles”. This paper begins with a
broad outline of the history of Estuary’s development, including
discussion of the philosophies and accountabilities that guide that
development. We then present two of the main directions in which
work on Estuary has been concentrated in recent years: (1) towards
supporting audiovisual live coding (and not merely musical live
coding) through the development and inclusion of languages
focused on visual results (in close connection with musical
concepts), and (2) towards supporting diverse use cases by evolving
into a modular “sandbox” where live coding languages, widgets
(including some focused on intra-ensemble communication), and
media resources are brought together “on-the-fly" in flexible ways.
Reflections on specific applications of Estuary in different contexts
are interspersed throughout, with a penultimate section focusing on
some further applications, largely in educational settings. The paper
concludes with brief remarks about directions for future work.
Licensed under a Creative Commons Attribution 4.0 International License (CC BY
4.0). Attribution: owner/author(s).
Web Audio Conference WAC-2022, July 6–8, 2022, Cannes, France.
© 2022 Copyright held by the owner/author(s).
1. INTRODUCTION
Estuary is a browser-based platform for collaborative live coding
that has been developed and in active use since 2015. Estuary's
affordances are characterized by an emphasis on mixing
heterogenous live coding languages (as well as other interfaces to
media computing) in collaborative, networked “ensembles”.
Estuary’s ensembles can be used by completely co-located groups
(as a way of facilitating collaboration and sharing access to
hardware), by completely distributed groups (as a way of working
together despite geographic and logistical constraints), and by
hybrid groups that mix these two possibilities (such as a co-located
group with a few members “dialing in” remotely).
The earliest work on Estuary [1] began with the goal of exploring
structure and projectional editing around the TidalCycles live
coding language [2], producing a series of different structure
editors characterized by minimal keyboard usage, the use of blank
space as an interface, and a mixture of notations at different levels
of programming liveness [3, 4]. From that starting point, work on
Estuary then returned to an abiding interest in multiple,
heterogenous, text languages, typed with a keyboard, as a key
interface for engaging with the possibilities of live coding.
Estuary’s early evolution into an environment for “multilingual”
live coding was inspired by the recognition that facilitating an
individualized choice of programming interface, within a larger
collaborative setting, would allow people to choose languages that
best suit their purpose or situation, without thereby having to forego
collaborating with others making different choices. A member of a
group might choose to work with a particular language because of
an existing level of comfort or familiarity with it, or they might
choose a language on account of its close fit to a particular result
that is required in a certain moment (eg. choosing a language that
facilitates making drone-like continuous sonic textures, when such
textures are desired), or – since live coding is often not only about
the result but also about the way the code is shared with an audience