CAST: CNMAT Additive Synthesis Tools

Mission: development and distribution of tools for real-time, expressive timbral control.

The CAST cast


Download CAST Software Releases

The CAST client/server architecture:

The CAST synthesizer is a synthesis server. After the synthesizer starts up, it listens for control messages from clients and interprets those messages to produce sound. The only way to control the synthesizer is to send messages from a client. Clients communicate to the synthesizer via OpenSoundControl, a new synthesis control protocol under development at CNMAT.

Here's a (semi-)pictoral description of this architecture:

The Synth Server: <--->  OpenSoundControl <--->  Clients:
demosoftcast                 protocol               - Opcode Max (Macintosh)
HTM                                                 - Tcl/Tk (X)
Timbral prototypes/                                 - Text-based (Unix)
  "datasets"                                        - CGI Scripts
                                                    - Java
                                                    - Matlab
                                                    - Write your own

How To Use CAST

Many features of the synthesis server are determined when the server starts, e.g., sampling rate, UDP port, number of output channels, timbral prototypes in memory, whether sound output will go into a sound file, etc. Some of these parameters are features of the underlying HTM (Hear The Music) kernel; the rest are features of the synth server application itself. You can set these parameters either by providing the appropriate UNIX command-line arguments to softcast or demosoftcast, or by using a graphical interface called synthconfig.

The other features of the synthesis server are "performed" in real-time by clients sending OpenSoundControl messages. (As indicated above, there are a number of clients that can send these messages.) OpenSoundControl is a protocol for formatting messages that can be sent to the synth; it determines what kinds of data you can send and allows you to address messages to a particular object within the synthesizer. To know what objects actually exist within the CAST server and what messages you can send them, read the CAST OSC Implementation page. (Shortcut to the list of transforms.)