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
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:
scsynthis the audio core of the platform which features hundreds of unit generators (UGens, the SuperCollider term for a plugin) for analysis, synthesis and processing
sclangis 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)
scideis an IDE for SuperCollider. It’s an editor for writing and executing code, and connects
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
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.
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
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.
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
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