SuperCollider is an environment and
audio
Audio most commonly refers to sound, as it is transmitted in signal form. It may also refer to:
Sound
*Audio signal, an electrical representation of sound
*Audio frequency, a frequency in the audio spectrum
*Digital audio, representation of sound ...
programming language
A programming language is a system of notation for writing computer programs.
Programming languages are described in terms of their Syntax (programming languages), syntax (form) and semantics (computer science), semantics (meaning), usually def ...
released originally in 1996 by James McCartney for
real-time audio synthesis and
algorithmic composition.
[J. McCartney]
SuperCollider: A new real time synthesis language
in Proc. International Computer Music Conference (ICMC’96), 1996, pp. 257–258.[J. McCartney]
Rethinking the computer music language: SuperCollider
Computer Music Journal, 26 (2002), pp. 61–68.
Since then it has been evolving into a system used and further developed by both scientists and artists working with sound. It is a
dynamic programming language
A dynamic programming language is a type of programming language that allows various operations to be determined and executed at runtime. This is different from the compilation phase. Key decisions about variables, method calls, or data types are ...
providing a framework for
acoustic research
Acoustic Research was a Cambridge, Massachusetts-based company that manufactured high-end audio equipment. The brand is now owned by VOXX. Acoustic Research was known for the AR-3 series of speaker systems, which used the acoustic suspension wo ...
,
algorithmic music,
interactive programming, and
live coding
Live coding, sometimes referred to as on-the-fly programming,Wang G. & Cook P. (2004"On-the-fly Programming: Using Code as an Expressive Musical Instrument" In ''Proceedings of the 2004 International Conference on New Interfaces for Musical Expr ...
.
Originally released under the terms of the
GPL-2.0-or-later in 2002, and from version 3.4 under
GPL-3.0-or-later, SuperCollider is
free and open-source software
Free and open-source software (FOSS) is software available under a license that grants users the right to use, modify, and distribute the software modified or not to everyone free of charge. FOSS is an inclusive umbrella term encompassing free ...
.
Architecture
Starting with version 3, the SuperCollider environment has been split into two components: a
server, ''scsynth''; and a
client, ''sclang''. These components communicate using OSC (
Open Sound Control).
The SC language combines the
object-oriented
Object-oriented programming (OOP) is a programming paradigm based on the concept of '' objects''. Objects can contain data (called fields, attributes or properties) and have actions they can perform (called procedures or methods and impleme ...
structure of
Smalltalk
Smalltalk is a purely object oriented programming language (OOP) that was originally created in the 1970s for educational use, specifically for constructionist learning, but later found use in business. It was created at Xerox PARC by Learni ...
and features from
functional programming language
A programming language is a system of notation for writing computer programs.
Programming languages are described in terms of their Syntax (programming languages), syntax (form) and semantics (computer science), semantics (meaning), usually def ...
s with a
C-family
syntax
In linguistics, syntax ( ) is the study of how words and morphemes combine to form larger units such as phrases and sentences. Central concerns of syntax include word order, grammatical relations, hierarchical sentence structure (constituenc ...
.
The SC Server application supports simple C and C++
plugin API
An application programming interface (API) is a connection between computers or between computer programs. It is a type of software interface, offering a service to other pieces of software. A document or standard that describes how to build ...
s, making it easy to write efficient sound algorithms (
unit generator
Unit generators (or ''ugens'') are the basic formal units in many MUSIC-N-style computer music programming languages. They are sometimes called opcodes (particularly in Csound), though this expression is not considered accurate in that these are ...
s), which can then be combined into graphs of calculations. Because all external control in the server happens via OSC, it is possible to use it with other languages or applications.
The SuperCollider synthesis server (''scsynth'')
SuperCollider's sound generation is bundled into an optimised command-line executable (named ''scsynth''). In most cases it is controlled from within the SuperCollider programming language, but it can be used independently. The audio server has the following features:
*
Open Sound Control access
* Simple
ANSI C
ANSI C, ISO C, and Standard C are successive standards for the C programming language published by the American National Standards Institute (ANSI) and ISO/IEC JTC 1/SC 22/WG 14 of the International Organization for Standardization (ISO) and the ...
and
C++11
C++11 is a version of a joint technical standard, ISO/IEC 14882, by the International Organization for Standardization (ISO) and International Electrotechnical Commission (IEC), for the C++ programming language. C++11 replaced the prior vers ...
plugin
API
An application programming interface (API) is a connection between computers or between computer programs. It is a type of software interface, offering a service to other pieces of software. A document or standard that describes how to build ...
s
* Supports any number of input and output channels, including massively multichannel setups
* Gives access to an
ordered tree structure of synthesis nodes which define the order of execution
* Bus system which allows dynamically restructuring the signal flow
* Buffers for writing and reading
* Calculation at different rates depending on the needs: audio rate, control rate, demand rate
Supernova, an independent implementation of the Server architecture, adds multi-processor support through explicit parallel grouping of synthesis nodes.
The SuperCollider programming language (''sclang'')
The SuperCollider programming language is a
dynamically typed
In computer programming, a type system is a logical system comprising a set of rules that assigns a property called a ''type'' (for example, integer, floating point, string) to every '' term'' (a word, phrase, or other set of symbols). Usua ...
,
garbage-collected,
single-inheritance object-oriented
Object-oriented programming (OOP) is a programming paradigm based on the concept of '' objects''. Objects can contain data (called fields, attributes or properties) and have actions they can perform (called procedures or methods and impleme ...
, and
functional language similar to
Smalltalk
Smalltalk is a purely object oriented programming language (OOP) that was originally created in the 1970s for educational use, specifically for constructionist learning, but later found use in business. It was created at Xerox PARC by Learni ...
,
with a syntax similar to the languages
Lisp
Lisp (historically LISP, an abbreviation of "list processing") is a family of programming languages with a long history and a distinctive, fully parenthesized Polish notation#Explanation, prefix notation.
Originally specified in the late 1950s, ...
or
C. Its architecture strikes a balance between the needs of real-time computing and the flexibility and simplicity of an abstract language. Like many functional languages, it implements
functions as
first-class objects, which may be
composed. Functions and methods can have default argument values and variable length argument lists and can be called with any order of keyword arguments.
Closures are lexical, and
scope is both lexical and dynamic. Further features typical of functional languages are supported, including creating closures via partial application (explicit
currying
In mathematics and computer science, currying is the technique of translating a function that takes multiple arguments into a sequence of families of functions, each taking a single argument.
In the prototypical example, one begins with a functi ...
),
tail call
In computer science, a tail call is a subroutine call performed as the final action of a procedure. If the target of a tail is the same subroutine, the subroutine is said to be tail recursive, which is a special case of direct recursion. Tail recur ...
optimization,
list comprehension
A list comprehension is a syntactic construct available in some programming languages for creating a list based on existing lists. It follows the form of the mathematical '' set-builder notation'' (''set comprehension'') as distinct from the use o ...
s, and
coroutines
Coroutines are computer program components that allow execution to be suspended and resumed, generalizing subroutines for cooperative multitasking. Coroutines are well-suited for implementing familiar program components such as cooperative tasks, ...
. Specifics include the implicit expansion of tuples and the stateless pattern system. Its constant-time message lookup and real-time
garbage collection
Waste collection is a part of the process of waste management. It is the transfer of solid waste from the point of use and disposal to the point of treatment or landfill. Waste collection also includes the curbside collection of recyclable ...
allows large systems to be efficient and to handle signal processing flexibly.
By supporting methods of
reflective
Reflection is the change in direction of a wavefront at an interface between two different media so that the wavefront returns into the medium from which it originated. Common examples include the reflection of light, sound and water waves. The ...
,
conversational, and
literate programming
Literate programming (LP) is a programming paradigm introduced in 1984 by Donald Knuth in which a computer program is given as an explanation of how it works in a natural language, such as English, interspersed (embedded) with snippets of macr ...
, SuperCollider makes it relatively easy to find new sound algorithms and to develop custom software and custom frameworks. Regarding domain specific knowledge, it is both general (e.g., it allows the representation of properties such as time and pitch in variable degrees of abstraction) and has copious example implementations for specific purposes.
GUI system
The SuperCollider language allows users to construct cross-platform graphical user interfaces for applications. The standard
class library with
user interface
In the industrial design field of human–computer interaction, a user interface (UI) is the space where interactions between humans and machines occur. The goal of this interaction is to allow effective operation and control of the machine fro ...
components may be extended by a number of available frameworks. For interactive programming, the system supports programmatic access to rich-text code files. It may be used to generate
vector graphics
Vector graphics are a form of computer graphics in which visual images are created directly from geometric shapes defined on a Cartesian plane, such as points, lines, curves and polygons. The associated mechanisms may include vector displ ...
algorithmically.
Interfacing and system support
Clients
Because the server is controlled using
Open Sound Control (OSC), a variety of applications can be used to control the server. SuperCollider
language environments (see below) are typically used, but other OSC-aware systems can be used such as
Pure Data.
''Third-party'' clients for the SuperCollider server exist, including rsc3, a
Scheme client, hsc3, based on
Haskell
Haskell () is a general-purpose, statically typed, purely functional programming language with type inference and lazy evaluation. Designed for teaching, research, and industrial applications, Haskell pioneered several programming language ...
, ScalaCollider,
based on
Scala, Overtone, based on
Clojure
Clojure (, like ''closure'') is a dynamic programming language, dynamic and functional programming, functional dialect (computing), dialect of the programming language Lisp (programming language), Lisp on the Java (software platform), Java platfo ...
, and
Sonic Pi.
These are distinct from the development environments mentioned below because they do not provide an interface to SuperCollider's programming language, instead they communicate directly with the audio server and provide their own approaches to facilitating user expression.
Supported operating systems

SuperCollider runs on
macOS
macOS, previously OS X and originally Mac OS X, is a Unix, Unix-based operating system developed and marketed by Apple Inc., Apple since 2001. It is the current operating system for Apple's Mac (computer), Mac computers. With ...
,
Linux
Linux ( ) is a family of open source Unix-like operating systems based on the Linux kernel, an kernel (operating system), operating system kernel first released on September 17, 1991, by Linus Torvalds. Linux is typically package manager, pac ...
,
Windows
Windows is a Product lining, product line of Proprietary software, proprietary graphical user interface, graphical operating systems developed and marketed by Microsoft. It is grouped into families and subfamilies that cater to particular sec ...
, and
FreeBSD
FreeBSD is a free-software Unix-like operating system descended from the Berkeley Software Distribution (BSD). The first version was released in 1993 developed from 386BSD, one of the first fully functional and free Unix clones on affordable ...
. For each of these operating systems there are multiple language-editing environments and clients that can be used with SuperCollider (see below).
It has also been demonstrated that SuperCollider can run on
Android and
iOS
Ios, Io or Nio (, ; ; locally Nios, Νιός) is a Greek island in the Cyclades group in the Aegean Sea. Ios is a hilly island with cliffs down to the sea on most sides. It is situated halfway between Naxos and Santorini. It is about long an ...
.
Editing environments

SuperCollider code is most commonly edited and used from within its own cross-platform IDE, which is
Qt-based and supports Linux, Mac, and Windows.
Other
development environments with SuperCollider support include:
*
Emacs
Emacs (), originally named EMACS (an acronym for "Editor Macros"), is a family of text editors that are characterized by their extensibility. The manual for the most widely used variant, GNU Emacs, describes it as "the extensible, customizable, s ...
(Linux, Mac, Windows)
*
Vim (Linux, Mac)
*
Atom
Atoms are the basic particles of the chemical elements. An atom consists of a atomic nucleus, nucleus of protons and generally neutrons, surrounded by an electromagnetically bound swarm of electrons. The chemical elements are distinguished fr ...
(Linux, Mac, Windows)
*
gedit (Linux, Windows)
*
Kate Kate may refer to:
People and fictional characters
* Kate (given name), a list of people and fictional characters with the given name or nickname
* Gyula Káté (born 1982), Hungarian amateur boxer
* Lauren Kate (born 1981), American author o ...
(Linux, Windows)
Code examples
// play a mixture of pink noise and a sine tone of 800 Hz
.play;
// modulate the frequency of the sine tone and the amplitude of the noise signal with another sine signal,
// the frequency of which depends on the horizontal position of the mouse pointer
(
.play;
)
// List iteration: multiply the elements of a collection by their indices
, 2, 5, 10, -3collect ;
// Factorial function
f = ;
// «Pan Sonic emulation - Katodivaihe - lahetys» - Miguel Negrão
(
.play
)
Live coding
As a versatile
dynamic programming language
A dynamic programming language is a type of programming language that allows various operations to be determined and executed at runtime. This is different from the compilation phase. Key decisions about variables, method calls, or data types are ...
, SuperCollider can be used for
live coding
Live coding, sometimes referred to as on-the-fly programming,Wang G. & Cook P. (2004"On-the-fly Programming: Using Code as an Expressive Musical Instrument" In ''Proceedings of the 2004 International Conference on New Interfaces for Musical Expr ...
, i.e. performances which involve the performer modifying and executing code on the fly. Specific kinds of
proxies serve as high level placeholders for synthesis objects which can be swapped in and out or modified at runtime. Environments allow sharing and modification of objects and process declarations over networks. Various extension libraries support different abstraction and access to sound objects, e.g. dewdrop_lib
[One of the numerous user contributed libraries known as "Quarks", and published in th]
SuperCollider Quarks repository
allows for the live creation and modification of pseudo-classes and pseudo-objects.
See also
*
List of music software
This is a list of software for creating, performing, learning, analyzing, researching, broadcasting and editing music. This article only includes software, not services.
For streaming services such as iHeartRadio, Pandora (service), Pandora, Prime ...
*
Comparison of audio synthesis environments
References
External links
*
{{DEFAULTSORT:Supercollider
2002 software
Algorave
Array programming languages
Audio programming languages
Dynamically typed programming languages
Electronic music software
Free audio software
Free music software
Live coding
MacOS multimedia software
Music software plugin architectures
Object-oriented programming languages
Software synthesizers
Software that uses Qt
Creative coding
Articles with example code