concept: generic dsp plugin format

James McCartney asynth at
Sat Nov 14 10:45:27 EST 1998

At 8:39 AM -0600 11/14/98, Ross Bencina wrote:

>As an aside:
>I'm curious as to how you are achieving sample accurate scheduling... 

buffers are staggered/spliced/mixed by the Spawn ugen which is the
ugen that spawns and mixes events. You can Spawn events 
containing Spawns as well.

>you using vectorised computations? 

Yes. I didn't mention that every spawned event can have its own vector 

>Do you compile your patches into machine
>code before they execute? 

No. all subroutines like CSound. 

>Has anything been published about the
>SuperCollider architecture?

No. Just a too short overview in ICMC proceedings.


The most strict requirement I have is that there be no long setup 
for a unit generator. Something like MAX/MSP where ugens are statically
allocated can spend an arbitrary amount of time initializing itself.
In an environment where ugens are created dynamically this is not 
possible. The advantage of the dynamic method is that you can use 
far more ugens in the course of a piece than you would have been able to
in a static system because your ugens only take up space while they are

Another requirement I have is that all control rate signals be able to be
ramped to audio rate. In order to do this the ugen init routine must
generate the first sample so that there is a valid previous value
when ramping the first buffer. Having the first sample available
for each of its inputs is also often useful for initialization of a 

Because a ugen can allocate an arbtrarily large delay line on the fly
at interrupt level, I needed to write my own memory management system
that could operate at the Mac's interrupt level. I'm not sure how
this might be reflected in a portable plug in architecture.

   --- james mccartney     james at
If you have a PowerMac check out SuperCollider2, a real time synth program:

More information about the music-dsp mailing list