Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
SuperCollider
(section)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
==Architecture== Starting with version 3, the SuperCollider environment has been split into two components: a [[Server (computing)|server]], ''scsynth''; and a [[client (computing)|client]], ''sclang''. These components communicate using OSC ([[Open Sound Control]]).<ref name="book">{{cite book|author1=Scott Wilson|url=http://supercolliderbook.net/|title=The SuperCollider Book|author2=David Cottle|author3=Nick Collins|publisher=The MIT Press|year=2011|isbn=978-0-262-23269-2|access-date=2011-05-26|archive-url=https://web.archive.org/web/20110501130100/http://supercolliderbook.net/|archive-date=2011-05-01|url-status=dead}}</ref> The SC language combines the [[Object-oriented design|object-oriented]] structure of [[Smalltalk]] and features from [[Functional programming|functional]] [[programming language]]s with a [[C (programming language)|C]]-family [[Syntax (programming languages)|syntax]].<ref name="book"/> The SC Server application supports simple C and C++ [[Plug-in (computing)|plugin]] [[API]]s, making it easy to write efficient sound algorithms ([[unit generator]]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.<ref name="book"/> === 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:<ref name="book"/> * [[Open Sound Control]] access * Simple [[ANSI C]] and [[C++11]] plugin [[API]]s * Supports any number of input and output channels, including massively multichannel setups<ref>{{cite web|url=http://www.beast.bham.ac.uk/research/mulch.shtml|title=SuperCollider mailing lists|access-date=20 June 2015|url-status=dead|archive-url=https://web.archive.org/web/20091106111225/http://www.beast.bham.ac.uk/research/mulch.shtml|archive-date=6 November 2009}}</ref> * Gives access to an [[Ordered tree data structure|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,<ref>T. Blechmann, [http://lac.linuxaudio.org/2010/papers/32.pdf supernova, a multiprocessor-aware synthesis server for SuperCollider], Proceedings of the Linux Audio Conference, Utrecht 2010.</ref> adds multi-processor support through explicit parallel grouping of synthesis nodes. === The SuperCollider programming language (''sclang'') === The SuperCollider programming language is a [[dynamically typed]], [[Garbage collection (computer science)|garbage-collected]], [[Single inheritance|single-inheritance]] [[Object-oriented programming|object-oriented]], and [[Functional programming|functional]] language similar to [[Smalltalk]],<ref name="sc2002"/> with a syntax similar to the languages [[Lisp (programming language)|Lisp]] or [[C (programming language)|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 [[Function (computer science)|functions]] as [[first class (computing)|first-class]] objects, which may be [[function composition|composed]]. Functions and methods can have default argument values and variable length argument lists and can be called with any order of keyword arguments. [[Closure (computer science)|Closures]] are lexical, and [[scope (programming)|scope]] is both lexical and dynamic. Further features typical of functional languages are supported, including creating closures via partial application (explicit [[currying]]), [[tail call]] optimization, [[list comprehension]]s, and [[coroutines]]. Specifics include the implicit expansion of tuples and the stateless pattern system. Its constant-time message lookup and real-time [[Garbage collection (computer science)|garbage collection]] allows large systems to be efficient and to handle signal processing flexibly.<ref name="book"/> By supporting methods of [[Reflective programming|reflective]], [[Interactive programming|conversational]], and [[literate programming]], SuperCollider makes it relatively easy to find new sound algorithms<ref>J. Rohrhuber, A. de Campo and Renate Wieser. [http://www.wertlos.org/~rohrhuber/articles/AlgorithmsToday.pdf Algorithms Today. Notes on Language Design for Just in Time Programming] {{webarchive|url=https://web.archive.org/web/20110728172850/http://www.wertlos.org/~rohrhuber/articles/AlgorithmsToday.pdf |date=2011-07-28}}. In ''Proceedings of the International Computer Music Conference'', Barcelona, 2005.</ref> 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.<ref name="book"/> ===GUI system=== [[File:ixiQuarks.jpg|thumb|Screenshot of SuperCollider running the ixiQuarks GUI tools.]] The SuperCollider language allows users to construct cross-platform graphical user interfaces for applications. The standard [[class library]] with [[user interface]] 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]] algorithmically.<ref>The vector graphics interface is provided by the Pen class. Various examples can be found in [http://www.fredrikolofsson.com/f0blog/?q=node/316 Audiovisuals with SC] {{Webarchive|url=https://web.archive.org/web/20200609115629/http://www.fredrikolofsson.com/f0blog/?q=node%2F316 |date=2020-06-09}}, blog by Fredrik Olofsson, 02.05.2009 (updated 11.05.2012)</ref>
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)