SuperCollider
From Wikipedia, the free encyclopedia
SuperCollider | |
---|---|
Developed by | James McCartney and others |
OS | Linux, Mac OS X, Windows[1] |
Genre | Audio programming language |
License | GNU General Public License |
Website | http://supercollider.sourceforge.net/ |
SuperCollider is an environment and programming language originally released in 1996 by James McCartney for real time audio synthesis and algorithmic composition.[2][3]
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.
Released under the terms of the GNU General Public License in 2002, SuperCollider is free software.
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 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.
[edit] Features
To meet Wikipedia's quality standards, this article or section may require cleanup because it is in a list format that may be better presented using prose. You can help by converting this section to prose, if appropriate. Editing help is available. (December 2007) |
[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] Supported operating systems
SC runs under Linux and Mac OS X, a beta version is available for Microsoft Windows under the name PsyCollider. The Linux version can be controlled from GNU Emacs and gedit.
SC is available on a Live CD called pure:dyne (a modified version of dyne:bolic).
[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 } }
[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] Clients
SuperCollider consists of two separate applications: the server (sound synthesis engine), and the client application to control it. Because the communication uses OpenSound Control, a variety of applications can be used to control the server including systems such as Pure data.
"Third-party" clients for the SuperCollider server exist, including rsc3, a Scheme client, and hsc3, based on Haskell.[4]
[edit] Notable users
This list may require cleanup to meet Wikipedia's quality standards. Please help improve this list. It may be poorly defined, unverified or indiscriminate. (January 2008) |
- Bruce Arnold
- Aphex Twin [5]
- Autechre [6]
- Andre Bartetzki
- Birmingham ElectroAcoustic Sound Theatre
- Bourbonese Qualk
- Anthony Braxton
- Alberto De Campo
- Nick Collins / Klipp AV
- Cylob
- Richard Devine
- Farmers Manual
- Fennesz[citation needed]
- Jem Finer
- Peter Gabriel
- Russell Haswell
- Kevin Hataley
- Hybrid
- Ixi software
- The Kallikak Family
- Richard Karpen
- Paul Koonce
- Ronny Kuivila
- Paul Lansky
- LFSaw
- Sergio Luque
- Robin Maxwell
- Merzbow[citation needed]
- Mileece
- Jim O'Rourke[7]
- Juan Pampin
- Joshua Parmenter
- PowerBooks_UnPlugged
- Curtis Roads
- Jonathan Segel
- Timeblind
- Brian Transeau (BT)
- Martino Traversa
- Wako
- Alla Zagaykevych
- Taal Mala
[edit] See also
[edit] References
- ^ http://sourceforge.net/project/showfiles.php?group_id=54622
- ^ 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.
- ^ More examples on the SuperCollider wiki
- ^ Dartmouth Symposium on the Future of Computer Music Software: A Panel Discussion, Computer Music Journal (2002) Vol. 26, No. 4, Pages 13-30 doi:10.1162/014892602320991347
- ^ Alex Reynolds interview, February 2003 — Grooves (excerpted)
- ^ [ O ] titles at Aquarius Records
[edit] External links
- Official home page
- The SuperCollider Swiki
- SuperCollider users mailing list
- SuperCollider 1 presentation (1998)
- Realtime Software Synthesis for Psychoacoustic Experiments (1998)
- Algorithmic Composition Methods for Breakbeat Science (2003)
- Uncertainty and waiting in Computer Music Networks (2004)