SuperCollider 3 Server on Linux
- History
- Architecture
- Server
- Language
- SCEL
- SCUM
- Further Development
- Resources
SuperCollider 3 Server on Linux History Architecture Server - - PowerPoint PPT Presentation
SuperCollider 3 Server on Linux History Architecture Server Language SCEL SCUM Further Development Resources History James McCartney developed SuperCollider on Mac OS 9 and OS X: Synth-O-Matic (1990)
– Synth-O-Matic (1990) – pyrite: MAX object – SuperCollider version 1 (1996), version 2 (1998),
– SuperCollider 3 Server (2002)
– alpha port of the server (2002) – alpha port of the language (2003) – first fully functional version in November 2003
– Bundle: contains timestamp, messages and other
– Message: carries actual information
padded address string padded type string 32 bit float (network byte order)
– small, efficient, portable – embeddable by linking to libscsynth – complete OSC command set – client application independent – JACK driver backend on Linux
– Group: Container for nodes (linked list) – Synth: synthesis graph of unit generators (Ugens)
– Currently SuperCollider includes about 300 UGens
– UGen types (incomplete):
– Binary file format
– allocate, free – read from or write to a soundfile – fill using variety of functions
– Virtual machine model with byte compilation – Constant time method lookup – Realtime garbage collector – Dynamically typed – Closures – Routines (restartable functions, “coroutines”) – ALSA sequencer support on Linux
– single inheritance – root class Object – method invocation by sending messages
– class definitions cannot be added at runtime – global method lookup matrix, similar to C++ vtables – syntax closer to C than Smalltalk
Routine({ #["Hello", "SuperCollider", "world!"].do({ |s| s.postln; rrand(0.5, 2).wait; }); }).play;
SynthDef("whirl", { | out = 0, gate, panfreq | var freq, env, zout; freq = LFSaw.kr(0.3, 0, 24, LFSaw.kr([8, 7.23], 0, 4, 80)).midicps; env = EnvGen.ar( Env.asr(1.0, 1.0, 2.0), gate, levelScale: 0.04, doneAction: 2 ); zout = CombN.ar(SinOsc.ar(freq, 0, env), 0.2, 0.2, 4); Out.ar(out, Mix(Pan2.ar(zout, SinOsc.kr(panfreq)))); }).send(Server.default);
– Groups – Synths – Buses – Buffers
x = Synth(“whirl”, [\gate, 1, \panfreq, 1]); x.set(\panfreq, 0.3); x.release;
– next – reset
– binary message, e.g. + – iteration message, e.g. select
– Pfunc, Prout: Functions and Routines – Pseq: sequence – Prand, Pshuf: random selection – Pn: looping – Pcollect, Pselect, Preject: filters
– creating a Synth with initial parameters – setting parameters of a running Node
– Functions, Routines, Streams – Patterns (EventStreamPlayers)
– singleton class – time base: seconds
– each instance runs in a high-priority thread – instances maintain their temporal relationship
– time base: beats, tempo: beats/second
– JITLib: proxy spaces, live coding – BBCut: algorithmic break beat cutting
– syntax colorization – automatic indentation – autocompletion for symbol names and method
– code evaluation – class and method definition browsing – RTF help file access – Document manipulation from SuperCollider code
– lightweight – portable – flexible layout management – OpenGL integration
– drawing – event handling – window management – OpenGL contexts
– Multislider – Envelope editor – Plot view
– Integration of Christophe Costigan's OpenGL
– Canvas view
– http://www.audiosynth.com
– http://supercollider.sourceforge.net
– http://swiki.hfbk-hamburg.de:8888/MusicTechnology/478
– http://www.create.ucsb.edu/mailman/listinfo/sc-users – http://www.create.ucsb.edu/mailman/listinfo/sc-dev
– http://www.cs.tu-berlin.de/~kerstens/pub