On 2/23/11 1:07 PM, John Lato wrote:
SuperCollider classically was a real-time tuned Smalltalk-like language for sound synthesis. The language allows you to do pretty much any symbolic processing you would expect - of course some things will be easy whereas others will be hard.Here's the score to play a scale from Stephen Travis Pope's book 'Sound and Music Processing in SuperCollider': defaudioout L, R; -- Declareoutputs. deftabletabl1, env1; -- Declare2wavetables--onefor theenvelope. start { -- Playascoreinthestart function -- time instrument dur pitch amp [0.00, ‘chorus_instr, 0.25, 48, 0.5].sched; [0.25, ‘chorus_instr, 0.25, 50, 0.5].sched; [0.50, ‘chorus_instr, 0.25, 52, 0.5].sched; [0.75, ‘chorus_instr, 0.25, 53, 0.5].sched; [1.00, ‘chorus_instr, 0.25, 55, 0.5].sched; } Score and orchestra are the same language - I'm guessing start is the equivalent of main. SC has a GUI toolkit so you can make elements controllable in real-time via sliders and the like. From my (admittedly limited) experience with SC, they're the same language only insofar as you can intermix lines with score and orchestra control, however the orc/sco division seems alive and well. The above code uses the score metaphor. The instrument 'chorus_instr' is created with the orc metaphor (likely a synthdef). The supercollider server understands both, either creating (or modifying) signal processes, or turning them off and on, as instructed, but there are two layers of control. It's certainly useful to be able to mix the two in the same document, but I think there's a useful gulf between signal processing and note scheduling.
fwiw, this distinction was introduced in supercollider 3 server around 2002 [1,2]. the synthesis server (scsynth) is a separate process from the control language (sclang). scsynth is a DSP graph interpreter quite similar to, but more flexible than, e.g. csound or pure data. synth definitions, graphs of unit generators similar to csound instruments, are sent to the server in a binary format and serve as templates that can be instantiated and controlled through the OpenSoundControl protocol. sclang is a smalltalk-like language with single inheritance, a bytecode interpreter and a realtime garbage collector.
versions prior to supercollider 3 server [3] didn't have such a clear separation between synthesis and control; language statements were executed synchronously from within the audio interrupt, but afaik only at buffer (or control) rate, not at the sample rate. this synchronicity even allowed for the DSP graph to be changed in realtime on the unit generator level, something which is not possible anymore with SC3. (i don't have any real experience with SC2, though).
<sk> [1] http://en.wikipedia.org/wiki/SuperCollider [2] http://www.mitpressjournals.org/doi/abs/10.1162/014892602320991383 [3] http://www.audiosynth.com/icmc96paper.html _______________________________________________ haskell-art mailing list [email protected] http://lists.lurk.org/mailman/listinfo/haskell-art
