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