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
- Why SuperCollider?
- The building blocks of SuperCollider
- About Bela + SuperCollider
- How Bela and SuperCollider can interact
- The Bela-SuperCollider workflow
- Projects made using SuperCollider + Bela
- 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 processingsclang
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 connectssclang
to thescsynth
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.
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. Supercollider 3.12 and above will not need this additional step as it will already contain the Bela class files.
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