The Synthesis ToolKit in C++ (STK) is a set of open source audiosignal processing and algorithmic synthesis classes written in the C++programming language. STK was designed to facilitate rapiddevelopment of music synthesis and audio processing software, with anemphasis on cross-platform functionality, realtime control, ease ofuse, and educational example code. The Synthesis ToolKit is extremelyportable (most classes are platform-independent C++ code), and it'scompletely user-extensible (all source included, no unusual libraries,and no hidden drivers). We like to think that this increases thechances that our programs will still work in another 5-10 years. STKcurrently runs with "realtime" support (audio and MIDI) on Linux,Macintosh OS X, and Windows computer platforms. Generic, non-realtimesupport has been tested under NeXTStep, Sun, and other platforms andshould work with any standard C++ compiler.
The only classes of the Synthesis ToolKit that are platform-dependentconcern sockets, threads, mutexes, and real-time audio and MIDI inputand output. The interface for MIDI input and the simple Tcl/Tkgraphical user interfaces (GUIs) provided is the same, so it's easy toexperiment in real time using either the GUIs or MIDI. The SynthesisToolKit can generate simultaneous SND (AU), WAV, AIFF, and MAT-fileoutput soundfile formats (as well as realtime sound output), so youcan view your results using one of a large variety of sound/signalanalysis tools already available (e.g. Snd, Cool Edit, Matlab).
The Synthesis Toolkit is not one particular program. Rather, it is aset of C++ classes that you can use to create your own programs. Afew example applications are provided to demonstrate some of the waysto use the classes. If you have specific needs, you will probablyhave to either modify the example programs or write a new programaltogether. Further, the example programs don't have a fancy GUIwrapper. If you feel the need to have a "drag and drop" graphicalpatching GUI, you probably don't want to use the ToolKit. Spendinghundreds of hours making platform-dependent graphics code would goagainst one of the fundamental design goals of the ToolKit - platformindependence.
For those instances where a simple GUI with sliders and buttons ishelpful, we use Tcl/Tk (http://dev.scriptics.com) which is freelydistributed for all the supported ToolKit platforms. A number ofTcl/Tk GUI scripts are distributed with the ToolKit release. Forcontrol, the Synthesis Toolkit uses raw MIDI (on supported platforms),and SKINI (Synthesis ToolKit Instrument Network Interface, a MIDI-liketext message synthesis control format).
