OK I've been clued into this thread and will give my 2 cents.

First some error corrections. SuperCollider is a buffer computation 
engine, not sample at a time.
I do have an experimental code generating version that does sample at a 
time, which I talked about at Dartmouth, so perhaps that is where that 
conception comes from. I will probably release it eventually or better, 
a version merged with the block version. The block oriented engine is a 
lot faster.

I do not have anything against Linux and I am not an Apple robot/zombie. 
It has taken me some time to get SC ported to MacOSX. I'm still not done 
with that. I have always said that after that I would look at a linux 
port. I would like to do that.

A note about Cmix: its original author, Paul Lansky has been using 
SuperCollider recently.
see: http://www.music.princeton.edu/~newton/group/past.html

My own idea of what the advantages of SC over MAX, pd, CSound, SAOL are 
these:
SuperCollider is a fully object oriented language like Smalltalk, with 
first class functions/closures and coroutines (like Scheme). If your 
programming experience is only C,C++,Java and you've never used closures 
and coroutines, then there is a level of expressive power there goes 
beyond those languages. Also I think that SuperCollider has the most 
flexible argument passing of any programming language. All arguments may 
be specified either positionally or by keyword, or can default to a 
value, or can be bound from a key-value pair in a current environment. 
You can have variable length argument lists. You can pass too many 
arguments or too few. This lets you be really promiscuous with your use 
of functions.

I used MAX for a long time and after writing a text based language 
object for it, I found that I did all my composition using that and used 
MAX only for the GUI and the I/O. Most complex state oriented algorithms 
can be stated much more briefly
in a sufficiently powerful language, and in addition will be much more 
readable and maintainable than a bunch of boxes and wires. I've 
performed live with MAX. I know all about that.

SuperCollider can build patches algorithmically and with a few lines of 
code define complex patches. By expressing common signal processing  
structures like parallel branches and sequential chains as code, patches 
can be re-dimensioned easily. By not having to express all the redundant 
information in patches with parallel structures, you
can write them more quickly and change them more easily. By being able 
to describe structures using closures, you can build up a library of 
components that cannot just be plugged together, but can functionally 
manipulate the structure.

It would be impossible, practically, to duplicate the SC Patterns 
library in MAX or pd. I know because before there was SuperCollider I 
tried to write something like it in MAX. And it would be pretty hard to 
do so in any language other than one with continuations like Scheme. The 
patterns library is a way of representing any composition that can be 
expressed as a sequence of events, as a lazy evaluated stream, and 
provides ways of manipulating the stream in a functional manner. The 
events contain key-value pairs for all the attributes of an event. The 
dynamic binding of values in events to synthesis instrument arguments 
insulates the composition from details of instrument implementation.

Like any tools there are some things you can do better with some than 
with others. SC has not been good at some things historically like its 
MIDI event handling. There are some areas that SC can do that the others 
can't touch. I believe that, for algorithmic composition, nothing else 
is better.

---
For a look at some docs, there is a set of them in html form from 
version 2.2.7 at:
http://www.audiosynth.com/schtmldocs/index.html
--
--- james mccartney   [EMAIL PROTECTED]   <http://www.audiosynth.com>
SuperCollider - a real time synthesis programming language for the 
PowerMac.
<ftp://www.audiosynth.com/pub/updates/SC2.2.14.sea.hqx>

Reply via email to