Home Information Classes Download Usage Mail List Requirements Links FAQ Tutorial
This release of STK comes with four separate "project" directories:
__WINDOWS_DS__
preprocessor definition and link with the dsound.lib
, winmm.lib
, and Wsock32.lib
libraries. For ASIO support, use the __WINDOWS_ASIO__
preprocessor definition, include all the files in the src/asio/
directory (i.e. asio.h,cpp
, asiodrivers.h,cpp
, ...), and link with the winmm.lib
, and Wsock32.lib
libraries. In addition, the __LITTLE_ENDIAN__
and __WINDOWS_MM__
preprocessor definitions are necessary for all Windows systems (RtMidi uses the Windows MultiMedia MIDI API). A distribution of the release is available with precompiled binaries (using DirectSound) for all the projects. In order for these binaries to function properly, your system must have the DirectX 5.0 (or higher) runtime libraries installed (available from Microsoft). Further, the effects project requires that your soundcard and drivers provide full duplex mode capabilities. Visual C++ .NET project files are provided in each project directory as well should you wish to compile your own binaries. It is important to link with the non-debug libraries when compiling "release" program versions and debug libraries when compiling "debug" program versions.
configure
shell script is included in the distribution for unix-based systems. From the top-level distribution directory, type './configure'
and the script will create Makefiles
in each project directory specific to the characteristics of the host computer. Then from within any given project directory (example demo
), type 'make'
to compile the project. In addition, an STK library can be compiled from within the src
directory.
Several options can be supplied to the configure
script to customize the build behavior:
--disable-realtime
to only compile generic non-realtime classes --enable-debug
to enable various debug output --with-alsa
to choose native ALSA API support (default, linux only) --with-oss
to choose native OSS audio API support (linux only, no native OSS MIDI support) --with-jack
to choose native JACK API support (linux and Macintosh OS-X) --with-core
to choose Core Audio API support (Macintosh OS-X) Note that it is possible to specify as many of the "--with-" options as desired to compile multi-API support. In addition, it is possible to specify the location of the STK rawwaves and the STK include path as follows:
./configure RAWWAVE_PATH="/home/gary/rawwaves/" ./configure INCLUDE_PATH="/home/gary/include/"
For novice STK users, the default configuration should be adequate.
For those who wish to create their own system-specific Makefiles
:
__LINUX_ALSA__
, __UNIX_JACK__
, and/or __LINUX_OSS__
preprocessor definitions, which are used to select the underlying audio system API(s). Because the ALSA library is now integrated into the standard Linux kernel, it is the default audio/MIDI API with STK versions 4.2 and higher. The __LINUX_ALSASEQ__
preprocessor definition must be included for MIDI support. Note that native OSS MIDI support no longer exists in RtMidi. If the __LINUX_OSS__
preprocessor definition is specified, only OSS (version 4.0) audio support will be compiled and RtMidi will still be compiled using the ALSA API (assuming the __LINUX_ALSASEQ__
definition is defined). For this reason, STK now requires the asound
library for realtime support. Realtime programs must also link with the pthread
library. In addition, the __LITTLE_ENDIAN__
preprocessor definition is necessary if compiling on a little-endian system. See the README-Linux file for further system configuration information.
__MACOSX_CORE__
and __UNIX_JACK__
preprocessor definitions, which incorporate the CoreAudio audio/MIDI API and/or the JACK API. Realtime programs must also link with the pthread
library and the CoreAudio
, CoreMIDI
, and CoreFoundation
frameworks (for Core Audio support) and/or the JACK library. See the README-MacOSX file for further system configuration information.
__LITTLE_ENDIAN__
preprocessor definition to your compiler. The demo project will compile without realtime support, allowing the use of SKINI scorefiles for input control and output to a variety of soundfile formats. The following classes cannot be used without realtime support: RtAudio, RtWvIn, RtWvOut, RtDuplex, RtMidi, Socket, Thread, Mutex, TcpWvIn, TcpWvOut. Because of this, it is not possible to compile the effects, ragamatic, and most of the examples projects for non-realtime use.
Tcl/Tk graphical user interfaces (GUI) are provided with this distribution that can generate realtime SKINI messages. Note that the Messager class allows multiple simultaneous socket client connections, together with MIDI and/or piped input. The Md2Skini program (in the demo directory) is mostly obsolete but can be used to create SKINI scorefiles from realtime MIDI input.
In non-realtime mode, it is assumed that input control messages are provided from a SKINI scorefile and that audio output is written to a soundfile (.snd, .wav, .aif, .mat, .raw). A number of SKINI scorefiles are provided in the scores directory of the demo project. Assuming a successful compilation of the demo program, typing:
demo BeeThree -ow myfile.wav -if scores/bookert.ski
from the demo directory will play the scorefile bookert.ski using the STK BeeThree instrument and write the resulting audio data to a WAV formatted soundfile called "myfile.wav" (note that you may need to append ./
to the program name if your default shell setup is not set to look in the current directory). Typing demo
without any arguments will provide a full program usage description.
Control input and audio output options are typically specified as command-line arguments to STK programs. For example, the demo program is invoked as:
demo instrument flags
where instruments include those described above and flags can be any or all of:
Assuming a successful compilation of the demo program, typing:
demo BeeThree -or -if scores/bookert.ski
from the demo directory will play the scorefile bookert.ski using the STK BeeThree instrument and stream the resulting audio data in realtime to the audio output channel of your computer. Typing demo
without any arguments will provide a full program usage description.
wish < tcl/Physical.tcl | demo Clarinet -or -ip
On WindowsXX and Unix platforms, the following operations are necessary to establish a socket connection between the Tcl/Tk GUI and the STK program:
wish < tcl/Physical.tcl
in another DOS shell. Note that it is possible to specify a hostname when establishing the socket connection from the socket client. Thus, the STK socket server program and the Tcl/Tk GUI need not necessarily reside on the same computer.
demo Clarinet -or -im
This will attempt to use the default MIDI port for input. An optional MIDI port number can be specified after the -im
flag. Valid MIDI ports are numbered from 0 (default) and higher. On Linux and Macintosh OS-X systems, it is possible to open a virtual MIDI input port (that other software applications can connect to) by specifying a port identifier of -1.
-n NUMBER
command-line flag and argument. For example, you can play eight BeeThree instruments with realtime output and control them from a MIDI device by typing:
demo BeeThree -n 8 -or -im
The Synthesis ToolKit in C++ (STK) |
©1995-2007 Perry R. Cook and Gary P. Scavone. All Rights Reserved. |