concept: generic dsp plugin format
asynth at io.com
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
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 audiosynth.com http://www.audiosynth.com
If you have a PowerMac check out SuperCollider2, a real time synth program:
More information about the music-dsp