SuperCollider

SuperCollider is an open source software environment and dynamic coding language for audio synthesis and algorithmic composition. It was developed by James McCartney in 1996. In 2002 it was released as open-source software, and since then has become one of the most popular computer music languages used by musicians, artists and researchers working with sound.

Table of contents

  1. Why SuperCollider?
  2. The building blocks of SuperCollider
  3. About Bela + SuperCollider
  4. How Bela and SuperCollider can interact
  5. The Bela-SuperCollider workflow
  6. Projects made using SuperCollider + Bela
  7. SuperCollider resources

Why SuperCollider?

SuperCollider differs from other languages as you don’t have to re-compile your code every time you edit it. Instead, SuperCollider allows code execution on-the-fly, without interrupting the audio. This opens up a world of possibilities for live-coding: rewriting programs in an improvised manner to create live sound or visuals.

The building blocks of SuperCollider

SuperCollider has three main components:

  • scsynth is the audio core of the platform which features hundreds of unit generators (UGens, the SuperCollider term for a plugin) for analysis, synthesis and processing
  • sclang is the interpreted programming language (i.e. instructions can be executed directly without compilation) that acts as the algorithmic and sequencing heart of SuperCollider that controls scsynth via Open Sound Control (OSC)
  • scide is an IDE for SuperCollider. It’s an editor for writing and executing code, and connects sclang to the scsynth audio generator.

SuperCollider has a client/server architecture. The server scsynth runs the audio processing and can instantiate, connect and control new audio processing blocks in response to specific OSC messages it receives from a client. The SuperCollider client of choice has been sclang, but the client can be any program capable of formatting messages as OSC.

sclang is often referred to as “the language of SuperCollider”. sclang is an object-oriented programming language that allows the definition of synth voices, the running of patterns, the creation of GUI elements, and the execution of many base units of algorthimic composition.

The benefit of SuperCollider’s architecture is its flexibility. In many cases the server and the client will run on the same machine, but they can easily live on separate machines on the same network, opening up possibilities for distributed control of multiple synth engines, as well as networked performances.

About Bela + SuperCollider

SuperCollider’s flexible architecture means that SuperCollider generates audio on Bela in real time, and this can be controlled by analog and digital sensors connected to the system.

Bringing Bela and SuperCollider together has been a community effort with many contributors. Thanks to the combined work of Marije Balmaan, Giulio Moro, Dan Stowell, Till Bovermann, Jonathan Reus and many others, it is now possible to run SuperCollider on Bela. This means you can access all analog and audio inputs and outputs as well as digital I/O of Bela from within the SuperCollider server, all with the responsiveness made possible by Bela’s ultra-low latency capabilities.

Additionally, Bela and SuperCollider offer a new paradigm for live coding. As well as SuperCollider’s well-established on-the-fly execution, it’s also possible to design instruments and affordances that use Bela’s interactive features.

La Diantenne, a pitched percussion instrument by Dianne Verdonk. This instrument was ported to Bela running SuperCollider during the STEIM workshop.

How Bela and SuperCollider can interact

All on Bela

One option is for both sclang and scsynth are run on Bela. This means that the SuperCollider language and the SuperCollider audio engine are in the same place, and communicate via OSC.

Remote control

Another option is to control the scsynth audio engine running on Bela via sclang in SuperCollider on a separate machine. scsynth on Bela and sclang, as above, communicate via OSC.

This provides a flexible coding approach for development, so you can continuously and fluidly experiment and try things out. Once you’ve finalized your project you may want to run both sclang and scsynth on Bela to be able to run your program without live-coding interaction, for instance to make a stand-alone instrument running on battery.

It’s also possible to live code Bela from the SuperCollider IDE. Download the Bela class files and follow the instructions in the README file to set it up. This setup allows you to execute code on your laptop, directly communicating with scsynth running on your Bela in real time.

Tip

This Bela + SuperCollider live coding setup requires your computer to run SuperCollider 3.8 or newer.

This video demonstrates live coding with Bela and SuperCollider:

The Bela-SuperCollider workflow

SuperCollider has been built-in to the Bela software since 2016. If you are running a very old version of the Bela software, you’ll want to update. The Examples tab in the Bela IDE contains a number of example projects illustrating how to use SuperCollider with Bela.

Creating a new SuperCollider project

To create a new SuperCollider project in the IDE, go to the Project Explorer tab. Click the Create New Project button at the top, and in the dialog box, select SuperCollider, give your project a name, and click Create project.

This creates a blank SuperCollider Bela project, and opens it in your Editor. Notice that this project contains a _main.scd file - this is the code that’s passed to sclang for execution.

Running a SuperCollider project

If your proejct is not already open in the IDE, go to the Project Explorer tab and click the Your projects dropdown. Click the name of your project to open it.

Then, click the Run button to build and run it. Click the Stop button to stop it.

Projects made using SuperCollider + Bela

Fielding, by Till Boverman

The Intimate Earthquake Archive, by Marije Baalman, Jonathan Reus-Brodsky and Sissel Marie Tonn

SuperCollider resources