SuperCollider
From Wikipedia, the free encyclopedia
SuperCollider | |
Developer: | James McCartney and others |
---|---|
OS: | GNU/Linux, Mac OS X |
Use: | Audio programming language |
License: | GNU General Public License |
Website: | http://supercollider.sourceforge.net/ |
SuperCollider[1] is an environment and programming language for real time audio synthesis and algorithmic composition. It was released in 2002 by its author, James McCartney, under the free software GPL license. Since then it has been evolving into a system used and further developed by both scientists and artists working with sound. It is an efficient and expressive dynamic programming language which makes it an interesting framework for acoustic research, algorithmic music and interactive programming.
Contents |
[edit] Architecture
Since version 3 the SuperCollider environment is split into a server, scsynth, and a client, sclang, that communicate using OpenSound Control.
SC Language combines the object oriented structure of Smalltalk and features from functional programming languages with a C programming language family syntax.
The SC Server application supports a simple C plugin API making it easy to write efficient sound algorithms (unit generators) which can then be combined into graphs of calculations. Due to the fact that all external control in the server happens via open sound control, it is possible to access its functionality from other languages or applications. [2]
[edit] Features
[edit] Language Features
- Constant time message lookup
- Real time garbage collection
- Lexical closure
- Functions as first class objects, function composition
- Coroutines
- Default argument values, variable length argument lists and any order keyword arguments
- Both lexical and dynamic scope
- Closure creation via partial application (i.e., explicit currying / schönfinkelling)
- Tail call optimization
- List comprehensions
- Reflective and Literate Programming
- allows to represent properties such as time and pitch in variable degrees of abstraction
[edit] Synthesis Server Features
- OpenSound Control access
- simple ANSI C plugin API
- supports any number of input and output channels
- gives access to an ordered tree structure of synthesis nodes which define the order of execution
- bus system which allows to dynamically restructure the signal flow
- buffers for writing and reading
- calculation at different rates depending on the needs: audio rate, control rate, demand rate
[edit] GUI System
- class system for generation of graphical user interface for applications
- programmatic access to rich text code files
- vector graphics
[edit] Code examples
// play a mixture of pink noise and an 800 Hz sine tone { SinOsc.ar(800, 0, 0.1) + PinkNoise.ar(0.01) }.play; // modulate the sine frequency and the noise amplitude with another sine // whose frequency depends on the horizontal cursor position { var x = SinOsc.ar(MouseX.kr(1, 100)); SinOsc.ar(300 * x + 800, 0, 0.1) + PinkNoise.ar(0.1 * x + 0.1) }.play; // list iteration: create a collection of indices multiplied by their values [1, 2, 5, 10, -3].collect { |item, i| item * i } // factorial function f = { |x| if(x == 0) { 1 } { f.(x-1) * x } }
Many more examples are available on the SuperCollider wiki site [1].
[edit] Live coding
As a versatile dynamic programming language, SuperCollider can be used for live coding, i.e. performances which involve the performer modifying and executing code on-the-fly. A specific kind 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 allows for the live creation and modification of pseudo-classes and -objects.
[edit] System requirements
SC runs under GNU/Linux and Mac OS X, a beta version is available for Microsoft Windows under the name Psycollider. The GNU/Linux version can easily be controlled from GNU Emacs.
SC is available on a Linux Live CD called pure:dyne (a modified version of dyne:bolic).
[edit] Notable users
- Autechre
- Alla Zagaykevych [2]
- Cylob
- Ixi software
- Jem Finer
- The Kallikak Family [3]
- Nick Collins [4] / Klipp AV [5]
- Paul Lansky
- PowerBooks_UnPlugged [6]
- Brian Transeau
- Wako [7]
- Timeblind [8]
- LFSaw [9]
[edit] See also
- pure:dyne - a Linux LiveCD with SuperCollider installed
- Comparison of Audio Synthesis Environments
[edit] References
- ^ The name SuperCollider is said to have its origin from the Superconducting Super Collider in Waxahachie, Texas, which was planned, but never built.
- ^ One example for such a system is rsc, a Scheme implementation for accessing scserver. For other examples see the software listed in the OpenSound Control article.
[edit] External links
- The author's SuperCollider page
- The SourceForge SuperCollider page
- SuperCollider described on the original wikiwikiweb
- Downloading SuperCollider:
- "scsite" downloads page - lists the various downloads with their dates
- Official project page (downloads are quite out-of-date, but the development SVN is here)
- RealizedSound SuperCollider downloads (more up-to-date downloads, with plugins included too)
- SuperCollider community resources:
- Academic papers:
- CocoaCollider - an extension of SuperCollider which includes an Objective-C bridge to allow for use of Cocoa GUI features of Mac OS X.
Categories: Articles with sections needing expansion | Programming languages | Domain-specific programming languages | Dynamically-typed programming languages | Object-oriented programming languages | Curly bracket programming languages | Audio programming languages | Free audio software | Software synthesizers | Music software | Electronic music | Mac OS X software | 2002 software