softcast: CAST additive synthesis engine

revised 2/3/98


The "demosoftcast" program is available in CAST release 1.0 in the bin subdirectory of the distribution directory. This evaluation version is restricted to: sample rates less than or equal to 32kHz, 2 voices, 1 output channel (mono) and 64 oscillators per voice. It expires at the beginning of December 1996.

Synthesis Server Options

softcast(1) is availabe as an SGI UNIX program. softcast(1) inherits inherits all the command line options and associated features of htm(1) servers.

Some versions of softcast(1) accept the -ifft option which enables high performance additive synthesis code based on IRCAM's patented fft-1 algorithm. The -voices n flag sets the maximum number of independent voices.

The -display flag results in a real-time display (on the console of the machine running softcast) of partial amplitude and frequencies.

-maxreadpartials n flag constrains the number of partials loaded in from timbral prototype files.

After these initial flags, an optional list of file names is processed. Each file is expected to contain timbral prototypes in one of the following file formats:

For each timbral prototype softcast loads, it prints the file name, the number of bytes of RAM used to store the contents of the file, and the length, in seconds, of the file.

These timbral prototypes form a pool from which synthesis voices can draw. A common, simple example of this is to associate a different prototype with each voice. Another powerful technique uses the same prototype in several voices (heterophony). Also a single voice may interpolate between a set of timbral prototypes (morphing).

Client Control

After softcast(1) starts, it waits for control messages from clients. By default it listens for messages from UDP channel 7005 or from processes on the same machine using the UNIX protocol also on channel 7005. Control messages are formatted using a new synthesis control protocol under development at CNMAT called Open SynthControl. Developing your own client is straightforward as the C source for the new protocol can be used. Clients are already available for:

The following pseudocode describes what the softcast(1) server does:

The synthesis server manages many independently controlled voices, each of which consists of a sequence of transforms that evolve a spectral description unique to that voice.


As well as efficiently computing sinusoidal components, softcast(1) includes many, useful ways of defining and transforming spectral descriptions of sound. These include time varying sinusoidal partials, E.R.B. noise, resonances, vibrato, formants, inharmonicity, filtering, dynamics and spectral interpolation ("morphing"). These control strategies are implemented using a user extensible "plug-in" mechanism called BYO (Bring Your Own). The essence of using softcast is understanding the how BYO functions define and shape sounds and the effect of the control parameters they provide.