What Are the Main Components of SuperCollider?

Updated

SuperCollider is a platform for audio synthesis and algorithmic composition, used by musicians, artists, and researchers working with sound. It is free and open source software for Windows, MacOS, and Linux, and it is built around three major components: scsynth, sclang, and scide. Understanding how these three fit together is the key to understanding how the whole system works.

The Three Major Components

scsynth — the real-time audio engine

scsynth is the audio engine, implemented as a server. It is the part that actually produces sound in real time. Because it runs as a separate server process, it doesn't care which language or program is telling it what to do — it just responds to commands.

sclang — the interpreted programming language

sclang is an interpreted programming language that acts as a client to the server. This is where you write your code: you describe synths, sequences, and algorithms in sclang, and it sends the resulting instructions to scsynth to be turned into audio.

scide — the editor

scide is an editor for sclang with an integrated help system. It gives you a place to write and run your sclang code while keeping documentation close at hand.

How the Client/Server Architecture Works

The important design decision here is that SuperCollider separates the language from the audio engine. Because of this client/server architecture, it is possible for multiple clients to connect and control what is happening on the server.

That means sclang is not the only way to drive scsynth. Although sclang is the native language and client for the server, there are also several client implementations in other programming languages, such as Python, JavaScript, Haskell, or Scala. If you already work in one of those languages, you can still control the same audio engine.

An Alternative Engine: supernova

SuperCollider also includes an alternative implementation of scsynth called supernova, which has multi-threading support. So when people talk about "the server," there are effectively two implementations to be aware of: the standard scsynth and the multithreaded supernova.

A Quick Example

Here is a short piece of sclang code from the documentation — a simple FM synthesis voice:

{ SinOsc.ar(SinOsc.kr([1, 3]).exprange(100, 2e3), 0, 0.2) }.play

You write this in sclang (for example, in scide), and it is sent to scsynth, which renders it as audio. The documentation also includes a longer example, "Drummer" by Thor Magnusson (2006), which builds a snare, bass drum, and hi-hat from noise and oscillators — a good illustration of how much you can express with a few lines of sclang.

Background and Where to Go Next

SuperCollider was developed by James McCartney and originally released in 1996. In 2002, he released it as free software under the GNU General Public License. Since then, it has been maintained and developed by an active community.

If you want to try it:

  • Downloads — the current version is 3.14.1, available for Mac (universal binary, macOS 11+), Linux (source tarball), and Windows (x64). Other OSes and versions are listed on the Downloads page.
  • Community — a good place to start is the forum at scsynth.org; there is also a Code of Conduct and a list of communities on the communities site.
  • Examples — more code examples are available in the documentation and on sccode.org, including the sc-140 album with code examples.

In short: scsynth makes the sound, sclang tells it what to do, and scide is where you write the instructions — and because the two halves are separate, you can swap in a different client language if you prefer.