Skip to content

A repository with suggestions, repertoire, tools and exercises for collaborating coders

License

Notifications You must be signed in to change notification settings

tmhglnd/collaborative-coding-practices

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

30 Commits
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐Ÿ‘ฉ๐Ÿปโ€๐Ÿ’ป๐Ÿง‘๐Ÿผโ€๐Ÿ’ป๐Ÿ‘ฉ๐Ÿฝโ€๐Ÿ’ป๐Ÿ‘จ๐Ÿพโ€๐Ÿ’ป Collaborative Coding Practices

A repository with suggestions, repertoire, tools and exercises for collaborating coders that use live coding to make music. Part of the Collaborative Coding Music in Flok workshop by Lina Bautista and Timo Hoogland, first presented at /* VIU */ Festival 2024.

๐Ÿ“– Table of Content

๐Ÿ“Ÿ Setup

First we setup the collaborative coding environment. The editor you choose in the future can depend on personal preferences and the language you like to code with too, but for this workshop we use Flok. Flok allows for using the languages Foxdot, Mercury, Sardine, Strudel, SuperCollider and Tidal.

  1. Go to https://flok.cc
  2. Choose a username
  3. Share the url with your collaborator
  4. In the top-left menu choose the language you want to use
  5. If you choose Mercury-web or Strudel you are ready to go!
  6. If you use a language that is not browser based (eg. Tidal, SC, Foxdot) you have to setup the REPL via the terminal to connect your editors' output with your interpreter and sound engine.
    • Click REPLs in the top-right corner.
    • Copy the command and paste/run it in the terminal (you need to have npm/npx installed from NodeJS)
    • Start your environment and check if the code is coming in through the OSC port.
    • More info on using the REPL's

๐Ÿ•น Exercises

Exercise 1

Code only 2 instruments/sounds and only work on one instrument per person (so in parallel). Carefully listen & read what the other is doing and adapt your code based on that. Divide the arrangement of the music in a way that makes sense for you both. For example one person can work on a rhythmic/percussive sound, while the other makes a bass or melodic instrument.

Exercise 2

In this exercise one of you will be the "initiator" of a new instrument/sound, while the other will be the "adjuster". The initiator will code new ideas and evaluate them. After it is evaluated and you hear the result the adjuster will change the value or function of the thing that was just coded, introducing some slight variation on the original idea.

Exercise 3

Create a new instrument/sound from scratch and work on that code together, slowly changing the instrument to both your tastes. Only, don't remove each others ideas but build upon them. Accept decisions from the other, also if you don't immediately like them.

Exercise 4

For this exercise you continue with the instruments from above. It is quite common in live coding to evaluate the code after every little change so you can hear the impact directly. However, for this exercise one of you will only be allowed to evaluate small changes in the instrument. At the same time the other has to make a lot of changes to another instrument, but wait till the best moment to evaluate introducing some radical changes in the composition. It could help to code things as a comment to avoid things being evaluated before they are ready to go.

๐Ÿ›ฐ Collaborative Editors

Flok

Flok is an online collaborative coding editor developed by Damiรกn Silvani (a.k.a Munshkr). The editor allows you to join with multiple people by accessing the same URL. You can add various panels for different languages. Some run directly in the browser, others are send to the terminal via OSC.

Languages (in browser): Hydra Strudel Mercury

Languages (with repl): Foxdot Mercury Sardine SClang TidalCycles

Estuary

Estuary is a platform for collaboration and learning through live coding. It enables you to experiment with sound, music, and visuals in a web browser. Estuary brings together a curated collection of live coding languages in a single environment, without the requirement to install software (other than a web browser), and with support for networked ensembles (whether in the same room or distributed around the world).

Languages (in browser): MiniTidal Punctual Hydra CineCer0 LocoMotion Seis8s TimeNot TransMit

Troop

Troop is a real-time collaborative tool that enables group live coding within the same document across multiple computers. Hypothetically Troop can talk to any interpreter that can take input as a string from the command line but it is already configured to work with live coding languages FoxDot, TidalCycles, and SuperCollider. It was developed by Ryan Kirkbride (a.k.a. Quirky).

Languages (locally): Foxdot TidalCycles SuperCollider SonicPi

P5Live

P5Live is a collaborative live coding editor for P5.js (but also includes Hydra) developed by Ted Davis. Through the "cocoding" functionality you can edit code together.

Languages (in browser): p5.js Hydra p5.sound

๐Ÿ‘พ Repertoire

Below is a list of repertoire from people collaborating on live coding via these various tools. Suggestions are welcome!

๐Ÿ“š Further Reading

Below is a list of reading material that touches on the subject of collaborative coding and remote performances.

โœจ Inspiration from other performances

๐Ÿ›  Other Useful Tools

Brave Browser

Many collaborative coding editors run in the browser. Brave is an open source browser running on chromium and is very suitable for all the platforms. It supports WebGL, WebAudio and WebMidi.

OS: Mac Windows Linux

Sonobus

SonoBus is an easy to use application for streaming high-quality, low-latency peer-to-peer audio between devices over the internet or a local network.

OS: Mac Windows Linux iOS Android

OBS (Open Broadcast Software)

Free and open source software for video recording and live streaming. This platform allows you to livestream or record your screen or seperate Windows from applications. Very helpful if you like to record your works or want to go live on Youtube, Twitch, Facebook or wherever.

OS: Mac Windows Linux

BlackHoleAudio

BlackHole is a modern MacOS virtual audio loopback driver that allows applications to pass audio to other applications with zero additional latency.

OS: Mac

VB-Cables

VB-CABLE is a virtual audio device working as virtual audio cable. All audio coming in the CABLE input is simply forwarded to the CABLE output.

OS: Windows

Spout

Spout leverages your graphics card enabling to you send realtime video between Windows applications with near-zero latency or overhead. It is provided free and open source thanks to support from its users.

OS: Windows

SpoutToNDI

Spout to NDI is a set of programs that allow Spout senders and receivers to share video, not only with each other but also by way of a network using the Newtek NDI (โ€œNetwork Device Interfaceโ€) protocol version 5.

OS: Windows

NDISyphon

NDISyphon is a simple, free utility that makes it possible for any Syphon enabled software to efficiently send and receive video streams to and from other applications over a network using the NDIยฎ protocol from Newtek.

OS: Mac

NDITools

Wide variety of software for NDI applications. The NDI Virtual Input is especially useful as virtual webcam device.

OS: Mac Windows

Ableton Link

Link is a technology that keeps devices in time over a local network. Link is part of Ableton Live, and also comes as a built-in feature of other software and hardware for music making. View the site for all available platforms/apps.

About

A repository with suggestions, repertoire, tools and exercises for collaborating coders

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published