HOME

TheInfoList



OR:

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_libOne 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