CategoryArtisticResearch

SyncLab

SYNCLAB

SYNCLAB — tools, scripts, and research materials for synchronous action scores & distributed performance

SYNCLAB is a meta-repository collecting code, patches, and experiments aimed at supporting synchronous action scores, distributed performance systems, and artistic research workflows. It unifies tools developed across projects, enabling reproducible and extensible practice-based research in networked artistic performance.


🚀 Why SYNCLAB?

Modern artistic performance, especially in domains like distributed music, dance, and action scores, often relies on:

  • Temporal alignment across machines, performers, and sensors.
  • Experimental interaction affordances (e.g., patching, transformations, network sync).
  • Reusable tools that bridge research concepts with live practice.

SYNCLAB exists to:

  • Aggregate tools, servers, and interfaces used in SYNCLAB-related research.
  • Provide a shared foundation for synchronous performance systems.
  • Support distributed performance experiments with clear workflows and documentation.

📦 Contents & Structure

At a glance — what you’ll find in this repo:

SYNCLAB/
├── FILES/               ← Core definitions & scripts
├── TIMEKEEP/            ← Temporal coordination tools
├── TransForms/          ← Transform frameworks for action scores
├── polyServer/          ← Server utilities for networked performance
├── polytempoWeb/        ← Browser interfaces & clients
├── tools/               ← Misc scripts and helpers
├── .gitmodules          ← Submodule pointers to linked repos
└── README.md            ← This file

Each subfolder is itself a (sub)project, often with its own internal structure, builds, or dependencies.


🧠 Key Concepts

🔹 Synchronous Action Scores

Action scores are procedural descriptions guiding real-time artistic actions. SYNCLAB’s focus is on synchronous scores — where performers coordinate in time across digital and physical boundaries.

🔹 Distributed Performance

Experiments where performers, systems, and environments interact over networks (e.g., Wi-Fi/LAN), requiring coordinated timing, messaging, and visual/audio feedback.

🔹 Research + Practice

This repo bridges artistic research (working prototypes, experiments, papers) with tools that can be reused, extended, or adapted.


🎯 How to Use This Repo

Clone (with submodules)

git clone --recursive https://github.com/AdrianArtacho/SYNCLAB.git

If you’ve already cloned without submodules:

git submodule init
git submodule update

Navigate

Each directory includes its own README and usage notes — start with those that match your needs:

  • TIMEKEEP/ for timing & sync tools
  • polyServer/ for server infrastructure
  • tools/ for utility scripts used across experiments

Workflows

Depending on your project or experiment, you might use:

  • Live-coding interfaces
  • Browser clients (in polytempoWeb/)
  • Networked messaging servers
  • Time synchronization scripts
  • Stand-alone performance patches

Refer to each subdirectory’s own docs for details.


🤝 Contributing

This repo is a living lab. Contributions are welcome!

✔ Add or improve tools used in performance workflows ✔ Write or extend documentation for clarity ✔ Share experiments & results that depend on these tools ✔ Open issues to track ideas, bugs, or project planning

Guidelines

  1. Fork the repo
  2. Work in a feature branch
  3. Open a PR with context & motivation
  4. Link related issues for visibility

📚 Related Work & Context

SYNCLAB supports research inquiries around:

  • Temporal coordination in distributed performance
  • Networked action scores
  • Practice-based artistic research methods

It serves as a toolbox for experimental and exploratory systems — both for prototyping and for reproducible research dissemination.


🧪 License

This repository and its submodules are made available under terms defined in their respective folders — please check individual components for license details.


📬 Contact

Maintained by Adrián Artacho, artist/researcher focused on action scores, distributed performance, and artistic research experiments. For questions, insights, or collaborations, use GitHub discussions or open an issue. [1]: "README Best Practices"

Atlas of Smooth Spaces

In this artistic research project (AR 640) we explore how to notate, communicate and compose space phenomena across audio-corporeal artistic practices. We investigate these in four disciplines: dance, rhythmics, choir conducting and direct sound. They share an alertness for and a certain tacit knowledge about space. In stark contrast to musical or movement notations, one finds that notated spaces are rather scarce in the audio-corporeal practices even though space unites them. We argue that this lacuna will be bridged by working on an atlas of space qualities. Rather than communicating merely the metric measures of spaces without the performer, we are concerned instead with emergent spatial qualities of smooth spaces that complement the performer, that exist outside of but not without the performer.

Brainchild

Brainchild is a trio which brings together three different, but unexpectedly compatible instruments. While the saxophone is associated with jazz music, the cello with the classics, and computer music with the cutting edge of modern music, the three melt together into a chamber music ensemble nothing like its individual elements.

SoDA node

SoDA application kit

This code repository also hosts the documentation and help files of the set of applications included in the Social Distancing Applications kit (SoDA), developed by Adrián Artacho. The standalone programs has been written in MaxMSP, while the message broker (AMEX) is C# programm written by Oscar Medina Duarte. The build standalone for the SoDA node can be downloaded here.

Required externals:

From the CNMAT package:

  • OSC-route.mxo

Computer Vision for Jitter (Jean-Marc Pelletier)

  • cv.jit.resize.mxo
  • cv.jit.track.mxo

Probabilistic Models by Jules Francoise:

  • mubu.mxo
  • mubu.gmm.mxo
  • mubu.hhmm.mxo

From the Ejies library:

  • zsa.descriptors.mxo

SoDA ecosystem

The SoDA ecosystem is composed by a network of SoDA node applications in addition to standalone components that add some features to the system. The local standalone components communicate by means of OSC messages with the SoDA node, and the individual nodes exchange messages via TCP protocol with the AMEX.md message broker application usually running in a remote server.

  • OSC messages (Description of the SoDA message ecosystem)
  • AMEX.md (Message broker program running in the remote server)

Standalone applications

  • SoDA node is the main application you will need to participate in a networked performance session.

  • SoDA pov (This application monitors and corrects latency problems)
  • SoDATA

Max for Live devices

  • SoDA for Live (SoD4L) is a M4L object that acts as a bridge between Ableton Live and the SoDA-node standalone.

SoDA node

This are the instructions for the installation and use of the SoDA-node application. The installation process will be different between Mac and Windows operating systems.

Download SoDA node

The toolkit heavily relies on the MuBu lib developed by the ISMM team at IRCAM. This a Max/MSP library that is free (only to register to the IRCAM forum: http://forumnet.ircam.fr/product/mubu-en/.)

SoDA-node v.1.5 Standalones (2021.03.26)

For Mac OS:

: SoDA-node-standalone-v1.5_Max8-MacOS-10-13-6

For Windows:

: SoDA-node-standalone-v1.5_Max8-Windows7

Note for Windows' users: you need to install Visual Studio 2015 Redistributable Package to have MuBu working! Once downloaded, add the Mubu library into the ext-libs folder within the GST.

Last step: in MaxMSP add all the toolkit to your file preferences:

Options > File Preferences

Installation in Mac operation systems

  1. First you will need to download the appropriate version from the Downloads page to your Desktop.
  2. Uncompress the .zip file by double clicking on it.
  3. Move the uncompressed file (SoDA-node.app) to your Applications folder (optional)
  4. Lauch it as you would with any other application and enjoy!

→ (error) If your computer protests that the application is broken / corrupted / or from an unknown developer, you may solve with a little line in your computer Terminal:

  1. Open your Terminal application (⌘CMD + SPACEBAR to open Spotlight, then type terminal)
  2. Write the following:

xattr -cr /Applications/SoDA-node.app

Installation in Windows operation systems

  1. First you will need to download the appropriate version to your Desktop.
  2. Uncompress the .zip file by double clicking on it.
  3. Lauch it as you would with any other application and enjoy!

Using the SoDA-node application (both operating systems)

Using the program is pretty straightforward. Once the remote server is on (which can also be done from the SoDA pov application),
hit connect button:

repo:SODA:node-neutral

Then, the application should show the status "connected" and the toggle "tcp on".

repo:SODA:tcp-on

Now, select your participant ID:

repo:SODA:select-pid

If we are going to use audio for the session, make sure to drop the audiofile (.wav, .mp3 etc.) in the rectangle on the right.

repo:SODA:drop-audiofile

You will know that a connection is established with the POV application when your internal SID number appears near your Participant ID. You will also see a red blink at the top corner right whenever 'pinged' by the POV Application.

repo:SODA:internal-sid

Set your volume level as you like with the horizontal slider, but make sure to leave the audio ON (the speaker symbol on the left) if we are going to be working with audio.


OSC messages

soda-message-ecosystem

Quick message reference (pdf):

quick-reference