SuperCollider

From Wikipedia, the free encyclopedia

Jump to: navigation, search
This article is about the programming language. For other uses, see Supercollider.
SuperCollider
Developed by James McCartney and others
Operating system Linux, Mac OS X, Windows, FreeBSD [1]
Type 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] Supported operating systems

SuperCollider runs under Mac OS X, Linux, Windows and FreeBSD. For each of these operating systems there are multiple language-editing environments and clients that can be used with SuperCollider (see below).

SuperCollider is also available on a Live CD called pure:dyne (a GNU/Linux distribution based on Debian).

[edit] 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:

  • OpenSound Control access
  • Simple ANSI C plugin API
  • Supports any number of input and output channels, including massively multichannel setups[4]
  • 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] Clients

Because the server is controlled using OpenSound Control, 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, and hsc3, based on Haskell.[5] 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.

[edit] The SuperCollider programming language

The SuperCollider programming language is related to Smalltalk but with a C family syntax, and has the following features:

[edit] GUI system

Screenshot of SuperCollider with various user-generated GUI elements
Screenshot of SuperCollider running the ixiQuarks GUI tools
  • Class system for generation of graphical user interface for applications
  • Programmatic access to rich text code files
  • Vector graphics

[edit] Editing environments

The Mac version of SuperCollider is most commonly used from within its own Mac-specific (Cocoa) interface; and the Windows version comes with a (cross-platform) Python-based development environment (named PsyCollider). Alternatively, SuperCollider code can be developed and run from a number of common development environments such as:

For each of the above environments, a plugin enables the real-time execution of SuperCollider code and interaction with the audio server.

[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[6]. 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[7]. 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] See also

[edit] References

  1. ^ SourceForge.net: Files
  2. ^ J. McCartney, SuperCollider: A new real time synthesis language, in Proc. International Computer Music Conference (ICMC’96), 1996, pp. 257–258.
  3. ^ J. McCartney, Rethinking the computer music language: SuperCollider, Computer Music Journal, 26 (2002), pp. 61–68.
  4. ^ BEASTmulch tools for multichannel audio
  5. ^ More examples on the SuperCollider wiki
  6. ^ Collins, N., McLean, A., Rohrhuber, J. & Ward, A. (2003), Live Coding Techniques for Laptop Performance, Organised Sound 8(3): pp 321-30. doi:10.1017/S135577180300030X
  7. ^ J. Rohrhuber and A. de Campo. Waiting and uncertainty in computer music networks. In Proceedings of the International Computer Music Conference, Miami, 2004.

[edit] External links

Personal tools