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
haskell-art@lurk.org
http://lists.lurk.org/mailman/listinfo/haskell-art

Reply via email to