3 Commits
4.0 ... 4.1

Author SHA1 Message Date
Gary Scavone
f25eb5c3d7 Release 4.1 tarball 2013-09-29 23:35:44 +02:00
Stephen Sinclair
71e5c027fb Merge 4.1 into releases 2013-09-29 23:34:55 +02:00
Gary Scavone
2f09fcd019 Version 4.1 2013-09-29 23:04:59 +02:00
548 changed files with 48732 additions and 70947 deletions

40
INSTALL Normal file
View File

@@ -0,0 +1,40 @@
The Synthesis ToolKit in C++ (STK)
By Perry R. Cook and Gary P. Scavone, 1995-2002.
The Synthesis ToolKit in C++ can be used in a variety of ways, depending on your particular needs. Some people just choose the classes they need for a particular project and copy those to their project directory. Others like to compile and link to a library of object files. STK was not designed with one particular style of use in mind.
To configure and compile (on Unix systems):
1. Unpack the STK distribution (tar -xzf stk-4.x.tar.gz).
2. From within the directory containing this file, run configure:
./configure
3. From within each project directory, type "make".
4. To compile a library of objects, type "make" from within the src directory.
Several options can be passed to configure, including:
--disable-realtime = only compile generic non-realtime classes
--enable-debug = enable various debug output
--with-alsa = choose native ALSA API support (linux only)
--enable-midiator = enable native MS-124W MIDI support (linux only)
Typing "./configure --help" will display all the available options. In addition, it is possible to specify the RAWWAVES and INCLUDE paths to configure as (ex. to set to /home/gary/rawwaves and /home/gary/include):
./configure RAWWAVE_PATH="/home/gary/rawwaves/"
./configure INCLUDE_PATH="/home/gary/include/"
The ending "/" is required for the RAWWAVES path. The default behavior will set a relative path that works for the project files included with the distribution (assuming they are not moved).
If you wish to use a different compiler than that selected by configure, specify that compiler in the command line (ex. to use CC):
./configure CXX=CC
In addition, a linux RPM is available from the STK WWW site (http://www-ccrma.stanford.edu/software/stk/).
For Windows Users:
An STK distribution is available which contains precompiled executables. In addition, Visual C++ project files are included for each of the example STK projects.

232
README
View File

@@ -1,115 +1,117 @@
The Synthesis ToolKit in C++ (STK) The Synthesis ToolKit in C++ (STK)
By Perry R. Cook and Gary P. Scavone, 1995-2002. By Perry R. Cook and Gary P. Scavone, 1995-2002.
This distribution of the Synthesis ToolKit in C++ (STK) contains the following: This distribution of the Synthesis ToolKit in C++ (STK) contains the following:
include: STK class header files include: STK class header files
src: STK class source files src: STK class source files
rawwaves: STK audio files (1-channel, 16-bit, big-endian) rawwaves: STK audio files (1-channel, 16-bit, big-endian)
doc: STK documentation doc: STK documentation
projects: example STK programs projects: example STK programs
Please read the Legal and Ethical notes near the bottom of this document. Please read the Legal and Ethical notes near the bottom of this document.
For compiling and installing STK, see the INSTALL file in this directory.
OVERVIEW:
The Synthesis ToolKit in C++ (STK) is a set of audio signal processing and synthesis classes and algorithms written in C++. You can use these classes to create programs that make sounds with a variety of synthesis techniques. This is not a terribly novel concept, except that the Synthesis ToolKit is extremely portable (it's mostly platform-independent C and C++ code), and it's completely user-extensible (no libraries, no hidden drivers, and all source code is included). We like to think that this increases the chances that our programs will still work in another 5-10 years. In fact, the ToolKit has been working continuously for nearly 8 years now. STK currently runs with "realtime" support (audio and MIDI) on SGI (Irix), Linux, and Windows computer platforms. Generic, non-realtime support has been tested under NeXTStep, Sun, and other platforms and should work with any standard C++ compiler. OVERVIEW:
The Synthesis ToolKit is free for non-commercial use. The only parts of the Synthesis ToolKit that are platform-dependent concern real-time audio and MIDI input and output, and that is taken care of with a few special classes. The interface for MIDI input and the simple <A HREF="http://dev.scriptics.com">Tcl/Tk</A> graphical user interfaces (GUIs) provided is the same, so it's easy to experiment in real time using either the GUIs or MIDI. The Synthesis ToolKit can generate simultaneous SND (AU), WAV, AIFF, and MAT-file output soundfile formats (as well as realtime sound output), so you can view your results using one of a large variety of sound/signal analysis tools already available (e.g. <A HREF="http://www-ccrma.stanford.edu/software/snd/">Snd</A>, Cool Edit, Matlab). The Synthesis ToolKit in C++ (STK) is a set of audio signal processing and synthesis classes and algorithms written in C++. You can use these classes to create programs that make sounds with a variety of synthesis techniques. This is not a terribly novel concept, except that the Synthesis ToolKit is extremely portable (it's mostly platform-independent C and C++ code), and it's completely user-extensible (no unusual libraries, no hidden drivers, and all source code is included). We like to think that this increases the chances that our programs will still work in another 5-10 years. In fact, the ToolKit has been working continuously for nearly 8 years now. STK currently runs with "realtime" support (audio and MIDI) on SGI (Irix), Linux, Macintosh OS X, and Windows computer platforms. Generic, non-realtime support has been tested under NeXTStep, Sun, and other platforms and should work with any standard C++ compiler.
The Synthesis Toolkit is not one particular program. Rather, it is a set of C++ classes that you can use to create your own programs. A few example applications are provided to demonstrate some of the ways to use the classes. If you have specific needs, you will probably have to either modify the example programs or write a new program altogether. Further, the example programs don't have a fancy GUI wrapper. If you feel the need to have a "drag and drop" graphical patching GUI, you probably don't want to use the ToolKit. Spending hundreds of hours making platform-dependent graphics code would go against one of the fundamental design goals of the ToolKit - platform independence. The Synthesis ToolKit is free for non-commercial use. The only parts of the Synthesis ToolKit that are platform-dependent concern real-time audio and MIDI input and output, and that is taken care of with a few special classes. The interface for MIDI input and the simple Tcl/Tk graphical user interfaces (GUIs) provided is the same, so it's easy to experiment in real time using either the GUIs or MIDI. The Synthesis ToolKit can generate simultaneous SND (AU), WAV, AIFF, and MAT-file output soundfile formats (as well as realtime sound output), so you can view your results using one of a large variety of sound/signal analysis tools already available (e.g. Snd, Cool Edit, Matlab).
For those instances where a simple GUI with sliders and buttons is helpful, we use <A HREF="http://dev.scriptics.com">Tcl/Tk</A> (which is freely distributed for all the supported ToolKit platforms). A number of Tcl/Tk GUI scripts are distributed with the ToolKit release. For control, the Synthesis Toolkit uses raw MIDI (on supported platforms), and SKINI (Synthesis ToolKit Instrument Network Interface, a MIDI-like text message synthesis control format). The Synthesis Toolkit is not one particular program. Rather, it is a set of C++ classes that you can use to create your own programs. A few example applications are provided to demonstrate some of the ways to use the classes. If you have specific needs, you will probably have to either modify the example programs or write a new program altogether. Further, the example programs don't have a fancy GUI wrapper. If you feel the need to have a "drag and drop" graphical patching GUI, you probably don't want to use the ToolKit. Spending hundreds of hours making platform-dependent graphics code would go against one of the fundamental design goals of the ToolKit - platform independence.
For those instances where a simple GUI with sliders and buttons is helpful, we use Tcl/Tk (http://dev.scriptics.com) which is freely distributed for all the supported ToolKit platforms. A number of Tcl/Tk GUI scripts are distributed with the ToolKit release. For control, the Synthesis Toolkit uses raw MIDI (on supported platforms), and SKINI (Synthesis ToolKit Instrument Network Interface, a MIDI-like text message synthesis control format).
SYSTEM REQUIREMENTS:
See the individual README's (eg. README-linux) for platform specific information and system requirements. In general, you will use either the provided Makefiles (Unix platforms) or the VC++ workspace files to compile the example programs. To use the Tcl/Tk GUIs, you will need Tcl/Tk version 8.0 or higher. SYSTEM REQUIREMENTS:
See the individual README's (eg. README-linux) in the /doc directory for platform specific information and system requirements. In general, you will use the configure script to create Makefiles on unix platforms or the VC++ workspace files to compile the example programs. To use the Tcl/Tk GUIs, you will need Tcl/Tk version 8.0 or higher.
WHAT'S NEW:
STK has undergone several key revisions, changes, and additions since its last release. Despite being available in one form or another since 1996, we still consider STK to be alpha software. Thus, backward compatability has not been a priority. Please read the Release Notes to see what has changed since the last release. WHAT'S NEW:
The control message handling scheme has been simplified greatly through the use of the Messager class. It is now possible to have access to simultaneous piped, socketed, and/or MIDI input control messages. In most cases, this should eliminate the use of the Md2Skini program. Despite being available in one form or another since 1996, we still consider STK to be alpha software. Thus, backward compatability has not been a priority. Please read the Release Notes to see what has changed since the last release.
Realtime audio input capabilities were added to STK with release 3.0, though the behavior of such is very hardware dependent. Under Linux and Irix, audio input and output are possible with very low latency. Using the Windoze DirectSound API, minimum dependable output sound latency seems to be around 20 milliseconds or so, while input sound latency is on the order of a hundred milliseconds or more! The control message handling scheme has been simplified greatly through the use of the Messager class. It is now possible to have access to simultaneous piped, socketed, and/or MIDI input control messages. In most cases, this should eliminate the use of the Md2Skini program.
As mentioned above, it is possible to record the audio ouput of an STK program to .snd, .wav, .raw, .aif, and .mat (Matlab MAT-file) output file types. Though somewhat obsolete, the program Md2Skini can be used to write SKINI scorefiles from realtime MIDI input. Finally, STK should compile with non-realtime functionality on any platform with a generic C++ compiler. Realtime audio input capabilities were added to STK with release 3.0, though the behavior of such is very hardware dependent. Under Linux and Irix, audio input and output are possible with very low latency. Using the Windoze DirectSound API, minimum dependable output sound latency seems to be around 20 milliseconds or so, while input sound latency is on the order of a hundred milliseconds or more!
For those who wish to make a library from the core STK classes, there is a Makefile in the src directory that will accomplish that (Linux and SGI only). As mentioned above, it is possible to record the audio ouput of an STK program to .snd, .wav, .raw, .aif, and .mat (Matlab MAT-file) output file types. Though somewhat obsolete, the program Md2Skini can be used to write SKINI scorefiles from realtime MIDI input. Finally, STK should compile with non-realtime functionality on any platform with a generic C++ compiler.
For those who wish to make a library from the core STK classes, the configure script generates a Makefile in the src directory that will accomplish that (Linux, SGI, and Macintosh OS X only).
DISCLAIMER:
You probably already guessed this, but just to be sure, we don't guarantee anything works. :-) It's free ... what do you expect? If you find a bug, please let us know and we'll try to correct it. You can also make suggestions, but again, no guarantees. Send email to prc@cs.princeton.edu and gary@ccrma.stanford.edu. DISCLAIMER:
You probably already guessed this, but just to be sure, we don't guarantee anything works. :-) It's free ... what do you expect? If you find a bug, please let us know and we'll try to correct it. You can also make suggestions, but again, no guarantees. Send email to prc@cs.princeton.edu and gary@ccrma.stanford.edu.
LEGAL AND ETHICAL:
This software was designed and created to be made publicly available for free, primarily for academic purposes, so if you use it, pass it on with this documentation, and for free. LEGAL AND ETHICAL:
If you make a million dollars with it, give us some. If you make compositions with it, put us in the program notes. This software was designed and created to be made publicly available for free, primarily for academic purposes, so if you use it, pass it on with this documentation, and for free.
Some of the concepts are covered by various patents, some known to us and likely others which are unknown. Many of the ones known to us are administered by the Stanford Office of Technology and Licensing. If you make a million dollars with it, give us some. If you make compositions with it, put us in the program notes.
The good news is that large hunks of the techniques used here are public domain. To avoid subtle legal issues, we'll not state what's freely useable here, but we'll try to note within the various classes where certain things are likely to be protected by patents. Some of the concepts are covered by various patents, some known to us and likely others which are unknown. Many of the ones known to us are administered by the Stanford Office of Technology and Licensing.
The good news is that large hunks of the techniques used here are public domain. To avoid subtle legal issues, we'll not state what's freely useable here, but we'll try to note within the various classes where certain things are likely to be protected by patents.
FURTHER READING:
For complete documentation on this ToolKit, the classes, etc., see the doc directory of the distribution or surf to http://www-ccrma.stanford.edu/software/stk/. Also check the platform specific README's for specific system requirements. FURTHER READING:
For complete documentation on this ToolKit, the classes, etc., see the doc directory of the distribution or surf to http://www-ccrma.stanford.edu/software/stk/. Also check the platform specific README's for specific system requirements.
PERRY'S NOTES FROM THE ORIGINAL DISTRIBUTION:
This whole world was created with no particular hardware in mind. These examples are intended to be tutorial in nature, as a platform for the continuation of my research, and as a possible starting point for a software synthesis system. The basic motivation was to create the necessary unit generators to do the synthesis, processing, and control that I want to do and teach about. Little thought for optimization was given (see Object.cpp), and therefore improvements, especially speed enhancements, should be possible with these classes. It was written with some basic concepts in mind about how to let compilers optimize. PERRY'S NOTES FROM THE ORIGINAL DISTRIBUTION:
Your question at this point might be, "But Perry, with CMix, CMusic, CSound, CShells, CMonkeys, etc. already cluttering the landscape, why a new set of stupid C functions for music synthesis and processing?" The answers lie below. This whole world was created with no particular hardware in mind. These examples are intended to be tutorial in nature, as a platform for the continuation of my research, and as a possible starting point for a software synthesis system. The basic motivation was to create the necessary unit generators to do the synthesis, processing, and control that I want to do and teach about. Little thought for optimization was given (see Object.cpp), and therefore improvements, especially speed enhancements, should be possible with these classes. It was written with some basic concepts in mind about how to let compilers optimize.
1) I needed to port many of the things I've done Your question at this point might be, "But Perry, with CMix, CMusic, CSound, CShells, CMonkeys, etc. already cluttering the landscape, why a new set of stupid C functions for music synthesis and processing?" The answers lie below.
into something which is generic enough to port
further to different machines. 1) I needed to port many of the things I've done
into something which is generic enough to port
2) I really plan to document this stuff, so that further to different machines.
you don't have to be me to figure out what's
going on. (I'll probably be sorry I said this 2) I really plan to document this stuff, so that
in a couple of years, when even I can't figure you don't have to be me to figure out what's
out what I was thinking.) going on. (I'll probably be sorry I said this
in a couple of years, when even I can't figure
3) The classic difficulties most people have in out what I was thinking.)
trying to implement physical models are:
3) The classic difficulties most people have in
A) They have trouble understanding the papers, trying to implement physical models are:
and/or in turning the theory into practice.
A) They have trouble understanding the papers,
B) The Physical Model instruments are a pain to get and/or in turning the theory into practice.
to oscillate, and coming up with stable and
meaningful parameter values is required to B) The Physical Model instruments are a pain to get
get the models to work at all. to oscillate, and coming up with stable and
meaningful parameter values is required to
This set of C++ unit generators and instruments get the models to work at all.
might help to diminish the scores of emails I
get asking what to do with those block diagrams This set of C++ unit generators and instruments
I put in my papers. might help to diminish the scores of emails I
get asking what to do with those block diagrams
4) I wanted to try some new stuff with modal synthesis, I put in my papers.
and implement some classic FM patches as well.
4) I wanted to try some new stuff with modal synthesis,
5) I wanted to reimplement, and newly implement and implement some classic FM patches as well.
more of the intelligent and physical performer
models I've talked about in some of my papers. 5) I wanted to reimplement, and newly implement
But I wanted to do it in a portable way, and in more of the intelligent and physical performer
such a way that I can hook up modules quickly. models I've talked about in some of my papers.
I also wanted to make these instruments connectable But I wanted to do it in a portable way, and in
to such player objects, so folks like Brad Garton such a way that I can hook up modules quickly.
who really think a lot about the players can connect I also wanted to make these instruments connectable
them to my instruments, a lot about which I think. to such player objects, so folks like Brad Garton
who really think a lot about the players can connect
6) More rationalizations to follow . . . them to my instruments, a lot about which I think.
6) More rationalizations to follow . . .

1371
config.guess vendored Executable file

File diff suppressed because it is too large Load Diff

1362
config.sub vendored Normal file

File diff suppressed because it is too large Load Diff

4598
configure vendored Executable file

File diff suppressed because it is too large Load Diff

100
configure.ac Normal file
View File

@@ -0,0 +1,100 @@
# Process this file with autoconf to produce a configure script.
AC_INIT(STK, 4.1, gary@ccrma.stanford.edu, stk)
AC_CONFIG_SRCDIR(src/Stk.cpp)
AC_CONFIG_FILES(src/Makefile projects/demo/Makefile projects/effects/Makefile projects/ragamatic/Makefile projects/examples/Makefile)
# Checks for programs.
AC_PROG_CC
AC_PROG_CXX(CC g++ c++ cxx)
AC_PROG_CXX
AC_PROG_RANLIB
# Checks for libraries.
AC_CHECK_LIB(stdc++, printf, , AC_MSG_ERROR(Stk requires the C++ library!) )
# Checks for header files.
AC_HEADER_STDC
AC_CHECK_HEADERS(fcntl.h sys/ioctl.h sys/time.h termio.h unistd.h)
# Checks for typedefs, structures, and compiler characteristics.
AC_C_CONST
AC_TYPE_SIZE_T
AC_HEADER_TIME
AC_C_BIGENDIAN
AC_EGREP_CPP(yes,
[#ifndef WORDS_BIGENDIAN
yes
#endif
], [AC_SUBST( byte_order, [-D__LITTLE_ENDIAN__] )] )
AC_MSG_CHECKING(for RAWWAVE_PATH argument)
AC_SUBST( rawwaves, $RAWWAVE_PATH )
AC_MSG_RESULT($RAWWAVE_PATH)
AC_MSG_CHECKING(for INCLUDE_PATH argument)
AC_SUBST( include, $INCLUDE_PATH )
AC_MSG_RESULT($INCLUDE_PATH)
# Check for realtime support disable
AC_MSG_CHECKING(whether to compile realtime support)
AC_ARG_ENABLE(realtime, [ --disable-realtime = only compile generic non-realtime classes], [AC_SUBST( realtime, [no] ) AC_SUBST( sound_api, [] )], [AC_SUBST( realtime, [yes] ) ] )
AC_MSG_RESULT($realtime)
if test $realtime = yes; then
AC_CHECK_LIB(pthread, pthread_create, , AC_MSG_ERROR(realtime support requires the pthread library!))
AC_CHECK_FUNCS(gettimeofday select socket)
fi
# Check for debug
AC_MSG_CHECKING(whether to compile debug version)
AC_ARG_ENABLE(debug,
[ --enable-debug = enable various debug output],
[AC_SUBST( debug, [-D_STK_DEBUG_] ) AC_SUBST( cflags, [-g] ) AC_SUBST( object_path, [Debug] ) AC_MSG_RESULT(yes)],
[AC_SUBST( debug, [] ) AC_SUBST( cflags, [-O2] ) AC_SUBST( object_path, [Release] ) AC_MSG_RESULT(no)])
# Check compiler and use -Wall if gnu.
if test $GXX = "yes" ; then
AC_SUBST( warn, [-Wall] )
fi
if test $realtime = yes; then
# Checks for package options and external software
AC_CANONICAL_HOST
AC_MSG_CHECKING(for audio API)
case $host in
*-*-linux*)
AC_ARG_WITH(alsa, [ --with-alsa = choose native ALSA API support (linux only)], [AC_SUBST( sound_api, [-D__LINUX_ALSA__] ) AC_MSG_RESULT(using ALSA) ], [AC_SUBST( sound_api, [-D__LINUX_OSS__] ) AC_MSG_RESULT(using OSS)])
if test $sound_api = -D__LINUX_ALSA__; then
AC_CHECK_LIB(asound, snd_pcm_open, , AC_MSG_ERROR(ALSA support requires the asound library!))
fi
AC_ARG_ENABLE(midiator, [ --enable-midiator = enable native MS-124W MIDI support (linux only)], [AC_SUBST( midiator, [-D__MIDIATOR__] )], [AC_SUBST( midiator, [] )])
;;
*-sgi*)
AC_SUBST( sound_api, [-D__IRIX_AL__] )
AC_MSG_RESULT(using IRIX AL)
AC_CHECK_LIB(audio, alOpenPort, , AC_MSG_ERROR(IRIX audio support requires the audio library!) )
AC_CHECK_LIB(md, mdOpenInPort, , AC_MSG_ERROR(IRIX MIDI support requires the md library!) )
;;
*-apple*)
# Check for CoreAudio and CoreMIDI framework
AC_CHECK_HEADERS(CoreAudio/CoreAudio.h CoreMIDI/CoreMIDI.h CoreServices/CoreServices.h,
[AC_SUBST( sound_api, [-D__MACOSX_CORE__] )],
[AC_MSG_ERROR(CoreAudio and/or CoreMIDI header files not found!)] )
AC_SUBST( frameworks, ["-framework CoreAudio -framework CoreMIDI -framework CoreFoundation"] )
;;
*)
# Default case for unknown realtime systems.
AC_MSG_ERROR(Unknown system type for realtime support ... try --disable-realtime argument!)
;;
esac
fi
# Checks for library functions.
AC_PROG_GCC_TRADITIONAL
AC_CHECK_FUNCS(strstr)
AC_OUTPUT

View File

@@ -1,155 +1,167 @@
STK: A ToolKit of Audio Synthesis Classes and Instruments in C++ STK: A ToolKit of Audio Synthesis Classes and Instruments in C++
By Perry R. Cook and Gary P. Scavone, 1995-2002. By Perry R. Cook and Gary P. Scavone, 1995-2002.
STK Classes - See the HTML documentation in the html directory for complete information. STK Classes - See the HTML documentation in the html directory for complete information.
.- Envelope - ADSR .- Envelope - ADSR
| |
|- Noise - SubNoise |- Noise - SubNoise
| |
|- Table |- Table
| |
|- WvIn - (WaveLoop, RtWvIn, TcpWvIn) |- WvIn - (WaveLoop, RtWvIn, TcpWvIn)
| |
|- WvOut - (RtWvOut, TcpWvOut) |- WvOut - (RtWvOut, TcpWvOut)
| |
|- Filter - (OnePole, OneZero, Delay, TwoPole, TwoZero, PoleZero, Biquad) |- Filter - (OnePole, OneZero, Delay, TwoPole, TwoZero, PoleZero, Biquad)
| | | | | |
| DelayL FormSwep | DelayL FormSwep
| DelayA | DelayA
| |
|- Echo, Chorus, PitShift |- Echo, Chorus, PitShift
| |
|- RtAudio, RtMidi, Socket, Thread |- RtAudio, RtMidi, Socket, Thread
Stk -| Stk -|
|- Reverb - (PRCRev, JCRev, NRev) |- Reverb - (PRCRev, JCRev, NRev)
| |
|- Modulate |- Modulate
| |
|- Messager |- SingWave
| |
|- SKINI |- Voicer
| |
|- ReedTabl, JetTabl, BowTabl |- Messager
| |
| .- FM - (HevyMetl, PercFlut, Rhodey, Wurley, TubeBell, BeeThree, FMVoices) |- SKINI
| | |
| |- Modal - ModalBar |- ReedTabl, JetTabl, BowTabl
| | |
| |- Sampler - Moog | .- FM - (HevyMetl, PercFlut, Rhodey, Wurley, TubeBell, BeeThree, FMVoices)
| | | |
| |- Resonate | |- Modal - ModalBar
| | | |
| |- PluckedTwo - Mandolin | |- VoicForm
.- Instrmnt -| | |
|- Drummer | |- Sampler - Moog
| | |
|- Clarinet, BlowHole, Saxofony, Flute, Brass, BlowBotl, Bowed, Plucked, StifKarp, Sitar | |- Resonate
| | |
|- Shakers | |- PluckedTwo - Mandolin
| .- Instrmnt -|
|- BandedWG |- Drummer
| |
.- Mesh2D |- Clarinet, BlowHole, Saxofony, Flute, Brass, BlowBotl, Bowed, Plucked, StifKarp, Sitar
|
|- Shakers
*********** UNIT GENERATORS ************** |
|- BandedWG
Master Class: Stk.cpp Sample rate, byte-swapping, error handling functionality |
|- Mesh2D
Sources: Envelope.cpp Linearly Goes to Target by Rate |
ADSR.cpp ADSR Flavor of Envelope .- Whistle
Noise.cpp Random Number Generator
SubNoise.cpp Random Numbers each N samples
Table.cpp Lookup Table (assumes given data in big-endian format) *********** UNIT GENERATORS **************
WvIn.cpp Data Input Class (interpolating) for RAW, WAV, SND (AU), AIFF, MAT-file files
WaveLoop.cpp Wavetable looping (subclass of WvIn) Master Class: Stk.cpp Sample rate, byte-swapping, error handling functionality
RtWvIn.cpp Realtime Audio Input Class (subclass of WvIn)
TcpWvIn.cpp Audio Streaming (socket server) Input Class (subclass of WvIn) Sources: Envelope.cpp Linearly Goes to Target by Rate
ADSR.cpp ADSR Flavor of Envelope
Sinks: WvOut.cpp Output Master Class for RAW, WAV, SND (AU), AIFF, MAT-file files Noise.cpp Random Number Generator
RtWvOut.cpp Realtime Output Class (subclass of WvOut) SubNoise.cpp Random Numbers each N samples
TcpWvOut.cpp Audio Streaming (socket client) Output Class (subclass of WvOut) Table.cpp Lookup Table (assumes given data in big-endian format)
WvIn.cpp Data Input Class (interpolating) for RAW, WAV, SND (AU), AIFF, MAT-file files
Duplex: RtDuplex.cpp Synchronous Realtime Audio Input/Output Class WaveLoop.cpp Wavetable looping (subclass of WvIn)
RtWvIn.cpp Realtime Audio Input Class (subclass of WvIn)
Filters: Filter.cpp Filter Master Class TcpWvIn.cpp Audio Streaming (socket server) Input Class (subclass of WvIn)
OneZero.cpp One Zero Filter
OnePole.cpp One Pole Filter Sinks: WvOut.cpp Output Master Class for RAW, WAV, SND (AU), AIFF, MAT-file files
PoleZero.cpp One Pole/One Zero Filter RtWvOut.cpp Realtime Output Class (subclass of WvOut)
TwoZero.cpp Two Zero Filter TcpWvOut.cpp Audio Streaming (socket client) Output Class (subclass of WvOut)
TwoPole.cpp Two Pole Filter
BiQuad.cpp Two Pole/Two Zero Filter Duplex: RtDuplex.cpp Synchronous Realtime Audio Input/Output Class
FormSwep.cpp Sweepable BiQuad Filter (goes to target by rate)
Delay.cpp Non-Interpolating Delay Line Class Filters: Filter.cpp Filter Master Class
DelayL.cpp Linearly Interpolating Delay Line (subclass of Delay) OneZero.cpp One Zero Filter
DelayA.cpp Allpass Interpolating Delay Line (subclass of Delay) OnePole.cpp One Pole Filter
PoleZero.cpp One Pole/One Zero Filter
Non-Linear: JetTabl.cpp Cubic Jet Non-Linearity TwoZero.cpp Two Zero Filter
BowTabl.cpp x^(-3) Bow Non-Linearity TwoPole.cpp Two Pole Filter
ReedTabl.cpp One Breakpoint Saturating Reed Non-Linearity BiQuad.cpp Two Pole/Two Zero Filter
FormSwep.cpp Sweepable BiQuad Filter (goes to target by rate)
Derived: Modulate.cpp Periodic and Random Vibrato: RawWvIn, SubNoise, OnePole Delay.cpp Non-Interpolating Delay Line Class
DelayL.cpp Linearly Interpolating Delay Line (subclass of Delay)
DelayA.cpp Allpass Interpolating Delay Line (subclass of Delay)
********** INSTRUMENTS AND ALGORITHMS **************
Non-Linear: JetTabl.cpp Cubic Jet Non-Linearity
Each Class will be listed either with all the unit generators it uses, BowTabl.cpp x^(-3) Bow Non-Linearity
or the <<Algorithm>> of which it is a flavor. All inherit from Instrmnt, ReedTabl.cpp One Breakpoint Saturating Reed Non-Linearity
which inherits from Stk.
Derived: Modulate.cpp Periodic and Random Vibrato: RawWvIn, SubNoise, OnePole
Simple.cpp Simple Instrument Pulse oscillator + resonant filtered noise SingWave.cpp Looping wave table with randomness: Modulate, WaveLoop, Envelope
Plucked.cpp Basic Plucked String DelayA, OneZero, OnePole, Noise
StifKarp.cpp Plucked String with Stiffness DelayA, DelayL, OneZero, BiQuad, Noise
PluckTwo.cpp Not So Basic Pluck DelayL, DlineA, OneZero ********** INSTRUMENTS AND ALGORITHMS **************
Mandolin.cpp Commuted Mandolin <<flavor of PluckTwo>>
Bowed.cpp So So Bowed String DelayL, BowTabl, OnePole, BiQuad, WaveLoop, ADSR Each Class will be listed either with all the unit generators it uses,
Brass.cpp Not So Bad Brass Instrument DelayA, BiQuad, PoleZero, ADSR, WaveLoop or the <<Algorithm>> of which it is a flavor. All inherit from Instrmnt,
Clarinet.cpp Pretty Good Clarinet DelayL, ReedTabl, OneZero, Envelope, Noise, WaveLoop which inherits from Stk.
BlowHole.cpp Clarinet w/ Tone & Vent Holes DelayL, ReedTabl, OneZero, Envelope, Noise, WaveLoop, PoleZero
Saxofony.cpp A Faux Saxophone DelayL, ReedTabl, OneZero, Envelope, Noise, WaveLoop Simple.cpp Simple Instrument Pulse oscillator + resonant filtered noise
Flute.cpp Pretty Good Flute JetTabl, DelayL, OnePole, PoleZero, Noise, ADSR, WaveLoop Plucked.cpp Basic Plucked String DelayA, OneZero, OnePole, Noise
BlowBotl.cpp Blown Bottle JetTabl, BiQuad, PoleZero, Noise, ADSR, WaveLoop StifKarp.cpp Plucked String with Stiffness DelayA, DelayL, OneZero, BiQuad, Noise
BandedWG.cpp Banded Waveguide Meta-Object Delay, BowTabl, ADSR, BiQuad PluckTwo.cpp Not So Basic Pluck DelayL, DlineA, OneZero
Modal.cpp N Resonances Envelope, WaveLoop, BiQuad, OnePole Mandolin.cpp Commuted Mandolin <<flavor of PluckTwo>>
ModalBar.cpp Various presets 4 Resonance Models Bowed.cpp So So Bowed String DelayL, BowTabl, OnePole, BiQuad, WaveLoop, ADSR
FM.cpp N Operator FM Master ADSR, WaveLoop, TwoZero Brass.cpp Not So Bad Brass Instrument DelayA, BiQuad, PoleZero, ADSR, WaveLoop
HevyMetl.cpp Distorted FM Synthesizer 3 Cascade with FB Modulator Clarinet.cpp Pretty Good Clarinet DelayL, ReedTabl, OneZero, Envelope, Noise, WaveLoop
PercFlut.cpp Percussive Flute 3 Cascade Operators BlowHole.cpp Clarinet w/ Tone & Vent Holes DelayL, ReedTabl, OneZero, Envelope, Noise, WaveLoop, PoleZero
Rhodey.cpp Rhodes-Like Electric Piano 2 Parallel Simple FMs Saxofony.cpp A Faux Saxophone DelayL, ReedTabl, OneZero, Envelope, Noise, WaveLoop
Wurley.cpp Wurlitzer Electric Piano 2 Parallel Simple FMs Flute.cpp Pretty Good Flute JetTabl, DelayL, OnePole, PoleZero, Noise, ADSR, WaveLoop
TubeBell.cpp Classic FM Bell 2 Parallel Simple FMs BlowBotl.cpp Blown Bottle JetTabl, BiQuad, PoleZero, Noise, ADSR, WaveLoop
FMVoices.cpp 3 Formant FM Voice 3 Carriers Share 1 Modulator BandedWG.cpp Banded Waveguide Meta-Object Delay, BowTabl, ADSR, BiQuad
BeeThree.cpp Cheezy Additive Organ 4 Oscillators Additive Modal.cpp N Resonances Envelope, WaveLoop, BiQuad, OnePole
Sampler.cpp Sampling Synthesizer 5 each ADSR, WvIn, WaveLoop, OnePole ModalBar.cpp Various presets 4 Resonance Models
Moog.cpp Swept Filter Sampler with Swept Filter FM.cpp N Operator FM Master ADSR, WaveLoop, TwoZero
Resonate.cpp Filtered Noise ADSR, BiQuad, Noise HevyMetl.cpp Distorted FM Synthesizer 3 Cascade with FB Modulator
Drummer.cpp Drum Synthesizer Bunch of WvIns, and OnePole PercFlut.cpp Percussive Flute 3 Cascade Operators
Shakers.cpp PhISM statistical model for shakers and real-world sound effects Rhodey.cpp Rhodes-Like Electric Piano 2 Parallel Simple FMs
Mesh2D.cpp Two-dimensional, rectilinear digital waveguide mesh. Wurley.cpp Wurlitzer Electric Piano 2 Parallel Simple FMs
TubeBell.cpp Classic FM Bell 2 Parallel Simple FMs
Reverb.cpp Reverberator Effects Processor Master Class for reverberators FMVoices.cpp 3 Formant FM Voice 3 Carriers Share 1 Modulator
JCRev.cpp Chowning Reverberator 3 series allpass units, 4 parallel combs, 2 stereo delays VoicForm.cpp 4 Formant Voice Synthesis FormSwep, SingWave, OnePole, OneZero, Envelope, Noise
NRev.cpp Another famous CCRMA Reverb 8 allpass, 6 parallel comb filters BeeThree.cpp Cheezy Additive Organ 4 Oscillators Additive
PRCRev.cpp Dirt Cheap Reverb by Cook 2 allpass, 2 comb filters Sampler.cpp Sampling Synthesizer 5 each ADSR, WvIn, WaveLoop, OnePole
Flanger.cpp Flanger Effects Processor DelayL, WaveLoop Moog.cpp Swept Filter Sampler with Swept Filter
Chorus.cpp Chorus Effects Processor DelayL, WaveLoop Resonate.cpp Filtered Noise ADSR, BiQuad, Noise
PitShift.cpp Cheap Pitch Shifter DelayL Drummer.cpp Drum Synthesizer Bunch of WvIns, and OnePole
Shakers.cpp PhISM statistical model for shakers and real-world sound effects
Mesh2D.cpp Two-dimensional, rectilinear digital waveguide mesh.
*********** OTHER SUPPORT CLASSES AND FILES ************** Whistle.cpp Hybrid physical/spectral model of a police whistle.
RtAudio.cpp Multi-OS/API audio I/O routines Reverb.cpp Reverberator Effects Processor Master Class for reverberators
RtMidi.cpp Multi-OS/API MIDI I/O routines JCRev.cpp Chowning Reverberator 3 series allpass units, 4 parallel combs, 2 stereo delays
Messager.cpp Pipe, socket, and MIDI control message handling NRev.cpp Another famous CCRMA Reverb 8 allpass, 6 parallel comb filters
PRCRev.cpp Dirt Cheap Reverb by Cook 2 allpass, 2 comb filters
demo.cpp Demonstration program for most synthesis algorithms Flanger.cpp Flanger Effects Processor DelayL, WaveLoop
effects.cpp Effects demonstration program Chorus.cpp Chorus Effects Processor DelayL, WaveLoop
ragamatic.cpp Nirvana just waiting to happen PitShift.cpp Cheap Pitch Shifter DelayL
SKINI.cpp SKINI file/message parser object
SKINI.msg #defines for often used and universal MIDI/SKINI symbols *********** OTHER SUPPORT CLASSES AND FILES **************
SKINI.tbl Table of SKINI messages
RtAudio.cpp Multi-OS/API audio I/O routines
RtMidi.cpp Multi-OS/API MIDI I/O routines
Messager.cpp Pipe, socket, and MIDI control message handling
Voicer.cpp Multi-instrument voice manager
demo.cpp Demonstration program for most synthesis algorithms
effects.cpp Effects demonstration program
ragamatic.cpp Nirvana just waiting to happen
SKINI.cpp SKINI file/message parser object
SKINI.msg #defines for often used and universal MIDI/SKINI symbols
SKINI.tbl Table of SKINI messages

View File

@@ -1,26 +1,26 @@
The Synthesis ToolKit in C++ (STK) The Synthesis ToolKit in C++ (STK)
By Perry R. Cook and Gary P. Scavone, 1995-2002. By Perry R. Cook and Gary P. Scavone, 1995-2002.
Please read the file README for more general STK information. Please read the file README and INSTALL for more general STK information.
Realtime support for Linux is currently using either the Open Sound System (OSS) or the Advanced Linux Sound Architecture (ALSA) sound and MIDI APIs. The free version of OSS works as well (and in some cases better than the commercial OSS version ... such as with my Maestro 2e chipset). In general, the ALSA drivers also seem to perform well. You can read more about ALSA at http://www.alsa-project.org/. ALSA is open source and holds great promise for audio under Linux. The API is selected during compilation using either the __LINUX_ALSA__ or __LINUX_OSS__ definitions. Realtime support for Linux is currently using either the Open Sound System (OSS) or the Advanced Linux Sound Architecture (ALSA) sound and MIDI APIs. The free version of OSS works as well (and in some cases better than the commercial OSS version ... such as with my Maestro 2e chipset). In general, the ALSA drivers also seem to perform well. You can read more about ALSA at http://www.alsa-project.org/. ALSA is open source and holds great promise for audio under Linux. The API is selected during compilation using either the __LINUX_ALSA__ or __LINUX_OSS__ definitions.
STK should compile without much trouble under Linux ... afterall, it is primarily developed on Linux platforms. Since all Linux distributions typically include the GNU makefile utilities, you should be able to use the default Makefile. Typing "make" will initiate the compilation process. STK should compile without much trouble under Linux ... afterall, it is primarily developed on Linux platforms. Since all Linux distributions typically include the GNU makefile utilities, you should be able to use the default Makefile. Typing "make" will initiate the compilation process.
MIDIATOR SERIAL PORT MIDI SUPPORT: MIDIATOR SERIAL PORT MIDI SUPPORT:
STK now has special support for the MIDIator serial port MIDI interface. This is of primary interest to us laptop users, whose computers usually don't have a gameport. If you want to buy one of these devices, make sure you get the MS-124w model (www.midiator.com). For it to work in STK, you must provide the __MIDIATOR__ definition during compilation (in addition to either __LINUX_ALSA__ or __LINUX_OSS__). STK now has special support for the MIDIator serial port MIDI interface. This is of primary interest to us laptop users, whose computers usually don't have a gameport. If you want to buy one of these devices, make sure you get the MS-124w model (www.midiator.com). For it to work in STK, you must provide the __MIDIATOR__ definition during compilation (in addition to either __LINUX_ALSA__ or __LINUX_OSS__).
There are a few things that need to be done on your system to get the MIDIator working. Assuming you wish to attach the MIDIator to serial port 0, add the following lines to your bootup sequence in /etc/rc.d/rc.local: There are a few things that need to be done on your system to get the MIDIator working. Assuming you wish to attach the MIDIator to serial port 0, add the following lines to your bootup sequence in /etc/rc.d/rc.local:
setserial /dev/ttyS0 baud_base 57600 setserial /dev/ttyS0 baud_base 57600
setserial /dev/ttyS0 divisor 1 setserial /dev/ttyS0 divisor 1
You may need to specify the full path to the setserial function, depending on how your PATH variable is set up. Also, you may need to modify the permissions of /dev/ttyS0 (chmod a+rwx). And finally, the MIDIator should be set for "single addresssed" mode (the S/A switch on S and the A/B switch on A), which puts identical output on all 4 MIDI output ports. It is possible to use the MIDIator in a "multi-port" mode, though I'm not currently supporting that in STK. You may need to specify the full path to the setserial function, depending on how your PATH variable is set up. Also, you may need to modify the permissions of /dev/ttyS0 (chmod a+rwx). And finally, the MIDIator should be set for "single addresssed" mode (the S/A switch on S and the A/B switch on A), which puts identical output on all 4 MIDI output ports. It is possible to use the MIDIator in a "multi-port" mode, though I'm not currently supporting that in STK.
NOTE REGARDING PTHREADS: NOTE REGARDING PTHREADS:
There haven't been any problems with threads since the old days of RedHat Linux 5.0. STK uses the MIT pthreads API. There haven't been any problems with threads since the old days of RedHat Linux 5.0. STK uses the MIT pthreads API.

24
doc/README-MacOSX.txt Normal file
View File

@@ -0,0 +1,24 @@
The Synthesis ToolKit in C++ (STK)
By Perry R. Cook and Gary P. Scavone, 1995-2002.
Please read the file README and INSTALL for more general STK information.
Realtime support for Macintosh OS X uses the CoreAudio HAL API and is specified during compilation using the __MACOSX_CORE__ preprocessor definition.
It is necessary to download the OS X developer kit in order to compile STK. STK was successfully tested on OS X version 10.1.
The internal Macintosh audio hardware typically supports a sample rate of 44100 Hz only. Therefore, it is necessary to either specify this rate as a command-line option to the STK example programs or to change the default sample rate inside the Stk.h file before compilation.
There is a potential conflict between the STK Delay class and a Delay() function declared in OSUtils.h (which is included via <CoreServices/CoreServices.h>). In general, this conflict can be avoided via the use of a namespace (an explicit Delay::Delay declaration), though this made the Windows Visual C++ compiler barf. If you use STK classes within a project that includes the OSUtils.h file, you will likely need to make changes in STK classes that use the Delay class.
Tcl/Tk on OS X:
The tcl/tk interpreter does not ship by default with OS X, but must be downloaded from the internet. Once installed, it is suggested that a link be made to the executable from a standard search path (/usr/bin/wish). In any event, it will not be possible to use the supplied startup scripts in the demo directory (i.e. StkDemo.bat) because the tcl/tk script startup sequence is slightly different than for all the other systems. Assuming you have made the link mentioned above, the STK demo program and tcl/tk script can be started by typing:
wish tcl/Demo.tcl | demo Clarinet -or -ip
Initial tests have shown somewhat poor response between changes made in the tcl/tk script and the resulting audio updates.
At this point, it is not recommended to connect by socket from a tcl/tk script to an STK program because tcl/tk does not appear to properly close the socket connection and the STK program is left hanging.

View File

@@ -1,9 +1,7 @@
The Synthesis ToolKit in C++ (STK) The Synthesis ToolKit in C++ (STK)
By Perry R. Cook and Gary P. Scavone, 1995-2002. By Perry R. Cook and Gary P. Scavone, 1995-2002.
Please read the file README for more general STK information. Please read the file README and INSTALL for more general STK information.
Please read the file README.txt for more general STK information. STK has always worked under NeXTStep without realtime audio or MIDI support. In general, STK should compile in this way using any generic C++ compiler. C++ exception handling was added to STK with release 3.2. We managed to get a version of gcc compiled for NeXTStep that can deal with C++ exceptions.
STK has always worked under NeXTStep without realtime audio or MIDI support. In general, STK should compile in this way using any generic C++ compiler. C++ exception handling was added to STK with release 3.2. We managed to get a version of gcc compiled for NeXTStep that can deal with C++ exceptions.

View File

@@ -1,13 +1,13 @@
The Synthesis ToolKit in C++ (STK) The Synthesis ToolKit in C++ (STK)
By Perry R. Cook and Gary P. Scavone, 1995-2002. By Perry R. Cook and Gary P. Scavone, 1995-2002.
Please read the file README for more general STK information. Please read the file README and INSTALL for more general STK information.
When using the Makefiles provided, first try invoking "gmake" (for GNU make). If that doesn't work, try to download the GNU Makefile utilities from the Internet and use STK's default Makefile. If this is not possible, try using Makefile.sgi (make -f Makefile.sgi). The project Makefiles are created by configure. If you have trouble running "make", try invoking "gmake" (for GNU make). If that doesn't work, try to download the GNU Makefile utilities from the Internet.
Another issue that has crept up with this release is proper compiler support for C++ error handling. If you experience problems, you probably don't have a recent version of the C++ compiler. Otherwise, STK should compile and run on SGI platforms without any problems. Release 4.0 of STK is confirmed to compile without difficulty using CC version 7.30. Another issue that has crept up with this release is proper compiler support for C++ error handling. If you experience problems, you probably don't have a recent version of the C++ compiler. Otherwise, STK should compile and run on SGI platforms without any problems. Release 4.0 of STK is confirmed to compile (with various warnings) using CC version 7.30.
NOTE REGARDING PTHREADS: NOTE REGARDING PTHREADS:
Since release 3.1, STK has used the pthread API under Irix. It appears that pthread functionality is standard on SGI, so this change shouldn't cause any problems. If I'm wrong, let me know! Since release 3.1, STK has used the pthread API under Irix. It appears that pthread functionality is standard on SGI, so this change shouldn't cause any problems. If I'm wrong, let me know!

View File

@@ -1,73 +1,74 @@
The Synthesis ToolKit in C++ (STK) The Synthesis ToolKit in C++ (STK)
By Perry R. Cook and Gary P. Scavone, 1995-2002. By Perry R. Cook and Gary P. Scavone, 1995-2002.
Please read the file README for more general STK information. Please read the file README for more general STK information.
DirectX and WindowsNT Issues: DirectX and WindowsNT Issues:
----------------------------- -----------------------------
STK is currently distributed with Visual C++ 6.0 project and workspace files. It has been tested using both Visual C++ 6.0 and Visual C++ .NET. STK is currently distributed with Visual C++ 6.0 project and workspace files. It has been tested using both Visual C++ 6.0 and Visual C++ .NET.
IMPORTANT VC++ NOTE: When compiling "release" versions of STK programs, link to the release multithreaded library. When compiling "debug" versions, link to the debug multithreaded library. Compiler errors will result otherwise. Also, the Microsoft folk are up to their old habits of trying to change standards. The .NET compiler will complain about cerr for some reason. IMPORTANT VC++ NOTE: When compiling "release" versions of STK programs, link to the release multithreaded library. When compiling "debug" versions, link to the debug multithreaded library. Compiler errors will result otherwise. Also, the Microsoft folk are up to their old habits of trying to change standards. The .NET compiler will complain about cerr for some reason.
The STK realtime sound input capabilities under Windoze are only supported using the DirectSoundCapture API. The latency is pretty horrendous, but what do you expect? Also, there is a chance you don't have DirectSoundCapture support on your computer. If not, you should download the DirectX 6.0 (or higher) runtime libraries from Microsoft's WWW site (http://www.microsoft.com/directx/download.asp) in order to run the pre-compiled STK executables for Windoze. The last time I checked, there was no DirectSoundCapture support for WindowsNT ... you'll have to switch to Windows 2000 or XP. I stopped supporting the WinMM audio output code with release 3.2. Both the DirectSound and Steinberg ASIO audio APIs are supported for realtime audio input/output. The Visual C++ project files included with this distribution are configured to use the DirectSound API. In order to use the ASIO API, it is necessary to change the preprocessor definition from __WINDOWS_DS__ to __WINDOWS_ASIO__, as well as include all the files in the /src/asio/ directory (i.e. asio.h, asio.cpp, ...). If you have a good quality soundcard and a native ASIO driver (not emulated), you are likely to get much better input/output response using that.
Realtime sound output under Windoze is supported using the DirectSound (dsound.lib) API. All new versions of WindowsXX come with the DirectSound library, but early versions did not. If you have trouble running the distributed executables, then you probably don't have DirectSound installed on your system. You can download the necessary DirectSound stuff from Microsoft's WWW pages (http://www.microsoft.com/directx/download.asp). When using the DirectSound API for audio input, latency is typically pretty horrendous (should we be surprised?). Also, there is a slight chance you don't have DirectSoundCapture support on your computer. If not, you should download the DirectX 6.0 (or higher) runtime libraries from Microsoft's WWW site (http://www.microsoft.com/directx/download.asp) in order to run the pre-compiled STK executables for Windoze. The last time I checked, there was no DirectSoundCapture support for WindowsNT ... you'll have to switch to Windows 2000 or XP or use an ASIO driver. I stopped supporting the WinMM audio output code with release 3.2.
Realtime MIDI input is supported using the winmm.lib API. Realtime MIDI input is supported using the winmm.lib API.
Visual C++ 6.0 workspaces have been created for the various STK projects. Everything has already been configured for you. The intermediate .obj files will be written to either the "release" or "debug" directories, but the executable files will be written to the main project directories (where they need to be for proper execution). If you should somehow lose or hose the VC++ workspace file for a project, then you will have to do a LOT of configuring to recreate it ... it's probably easier just to download the distribution again from our WWW sites. Anyway, for your benefit and mine, here is a list of things that need to be added to the various "Project Settings": Visual C++ 6.0 workspaces have been created for the various STK projects. Everything has already been configured for you. The intermediate .obj files will be written to either the "Release" or "Debug" directories, but the executable files will be written to the main project directories (where they need to be for proper execution). If you should somehow lose or hose the VC++ workspace file for a project, then you will have to do a LOT of configuring to recreate it ... it's probably easier just to download the distribution again from our WWW sites. Anyway, for your benefit and mine, here is a list of things that need to be added to the various "Project Settings":
1. Under General: Set "Output files:" to <blank> (this will put the executable in the main project directory. 1. Under General: Set "Output files:" to <blank> (this will put the executable in the main project directory.
2. Under C/C++ > Code Generation: Set "Use run-time library:" to Multithreaded (use "debug" versions for the debug configuration). 2. Under C/C++ > Code Generation: Set "Use run-time library:" to Multithreaded (use "debug" versions for the debug configuration).
3. Under Link > General: Add winmm.lib, dsound.lib, and Wsock32.lib to the end of the Object/library modules list. 3. Under Link > General: Add winmm.lib, dsound.lib, and Wsock32.lib to the end of the Object/library modules list.
4. Under C/C++ > Preprocessor: Add "../../include" directory to the "extra include" field. 4. Under C/C++ > Preprocessor: Add "../../include" directory to the "extra include" field.
5. Under C/C++ > Preprocessor: Add "__WINDOWS_DS__" to the definitions field. 5. Under C/C++ > Preprocessor: Add "__WINDOWS_DS__" to the definitions field.
6. Add all the necessary files to the project. 6. Add all the necessary files to the project.
Remember that items 1-5 above need to be done for each project and for each configuration. There might be an easy way to make global changes, but I couldn't figure it out. Remember that items 1-5 above need to be done for each project and for each configuration. There might be an easy way to make global changes, but I couldn't figure it out.
To use the Tcl/Tk GUIs, you will have to install Tcl/Tk. I got version 8.0 and it works very well (and installed easily). The distribution is available on the WWW and is free. To use the Tcl/Tk GUIs, you will have to install Tcl/Tk. I got version 8.0 and it works very well (and installed easily). The distribution is available on the WWW and is free.
In order for socketing to work, it is necessary to have the TCP protocol installed on your computer. This can be done from the "Network" control panel. In order for socketing to work, it is necessary to have the TCP protocol installed on your computer. This can be done from the "Network" control panel.
Finally, to use it all - Finally, to use it all -
PLAY SKINI SCOREFILES IN REALTIME: WINDOWS XP/2000:
demo Clarinet -or < scores/streetsf.ski There is a big advantage in using Windows XP/2000 over 95/98 with STK in that piping works, just as under unix. Also, the scheduler in 2000/XP seems to be much better, so socketed messages don't get clumped together like they do in Windows 95/98. Simply fire up a script file (ex. StkDemo.bat) by either double-clicking on it or typing it within a shell.
USE TCL/TK GUIs FOR REALTIME CONTROL: WINDOWS 95/98:
1. Open a DOS console window and start syntmono (eg. demo Clarinet -or -is). PLAY SKINI SCOREFILES IN REALTIME:
2. Double click on a Tcl/Tk file in TCLSpecs (eg. TCLPhys.tcl) from the Windows Explorer to start the GUI. Select the "communications" menu item and "Socket" and make the connection. demo Clarinet -or < scores/streetsf.ski
3. Start moving the sliders to control the instrument. USE TCL/TK GUIs FOR REALTIME CONTROL:
1. Open a DOS console window and start syntmono (eg. demo Clarinet -or -is).
USE REALTIME MIDI INPUT FOR CONTROL:
2. Double click on a Tcl/Tk file in the tcl/ subdirectory of the demo directory (eg. Demo.tcl) from the Windows Explorer to start the GUI. Select the "communications" menu item and "Socket" and make the connection.
1. Open a DOS console window and start syntmono with MIDI input (eg. demo Clarinet -or -im).
3. Start moving the sliders to control the instrument.
This assumes you already have MIDI setup correctly for your computer.
USE REALTIME MIDI INPUT FOR CONTROL:
WINDOWS 2000/XP:
1. Open a DOS console window and start syntmono with MIDI input (eg. demo Clarinet -or -im).
There is a big advantage in using Windows 2000/XP over 95/98 with STK in that piping works, just as under unix. Also, the scheduler in 2000/XP seems to be much better, so socketed messages don't get clumped together like they do in Windows 95/98. The script files (ex. Demo) can be renamed with .bat extensions, allowing them to work in the same way as in unix systems.
This assumes you already have MIDI setup correctly for your computer.
WINDOWS NT ONLY:
WINDOWS NT ONLY:
Realtime piping seems to work under WindowsNT in much the same way as on Unix platforms. Thus, it is possible to pipe realtime control data to syntmono under WindowsNT as well.
Realtime piping seems to work under WindowsNT in much the same way as on Unix platforms. Thus, it is possible to pipe realtime control data to syntmono under WindowsNT as well. Note, however, that the DirectSoundCapture API does not exist for WindowsNT, so it is necessary to use an ASIO audio driver and the STK ASIO support.

View File

@@ -1,101 +1,118 @@
The Synthesis ToolKit in C++ (STK) The Synthesis ToolKit in C++ (STK)
By Perry R. Cook and Gary P. Scavone, 1995-2002. By Perry R. Cook and Gary P. Scavone, 1995-2002.
v4.0: (April 2002) v4.1: (8 October 2002)
- new documentation and tutorial - Macintosh OS X support added
- several new instruments, including Saxofony, BlowBotl, and StifKarp - new Whistle class
- new Stk base class, replacing Object class - added Voicer, SingWave, and VoicForm classes
- new Filter class structure and methods - improvements/fixes to the banded waveguide instruments
- extensive modifications to WvIn and WvOut class structures and methods - demo program now uses Voicer, allowing polyphony
- looping functionality moved to WaveLoop (subclass of WvIn) - demo tcl/tk scripts changed to use SKINI PitchChange instead of PitchBend
- automatic file type detection in WvIn ... hosed WavWvIn, AifWvIn, RawWavIn, SndWavIn, and MatWvIn subclasses - demo program response to PitchBend modified to octave up/down
- new file type specifier argument in WvOut ... hosed WavWvOut, AifWvOut, RawWavOut, SndWavOut, and MatWvOut subclasses - several RtAudio fixes and improvements (OS X and Windows ASIO support added)
- some simplifications of Messager class (was Controller) - added nextOut() method to Delay classes
- new independent RtAudio class - documentation fixes for Reverb classes
- extensive revisions in code and a significant number of API changes - RAWWAVE_PATH changed to include the "rawwave" directory
- "configure" support added for unix systems
v3.2: (13 November 2000) - multivoice flag (-n NUMBER) added as command line option to demo program
- new control handling class (Controller) - sample rate flag added as command line option to all example programs
- added AIFF file input/output support - socket port number added as command line option to all example programs
- stklib.a Makefile in src directory
- added C++ error handling capabilities v4.0: (April 2002)
- added input/output internet streaming support (StrmWvIn/StrmWvOut) - new documentation and tutorial
- added native ALSA support for linux - several new instruments, including Saxofony, BlowBotl, and StifKarp
- added optional "device" argument to all "Rt" classes (audio and MIDI) and printout of devices when argument is invalid - new Stk base class, replacing Object class
- WvIn classes rewritten to support very big files (incremental load from disk) - new Filter class structure and methods
- changed WvIn/WvOut classes to work with sample frame buffers - extensive modifications to WvIn and WvOut class structures and methods
- fixed looping and negative rate calculations in WvIn classes - looping functionality moved to WaveLoop (subclass of WvIn)
- fixed interpolation bug in RtWvIn - automatic file type detection in WvIn ... hosed WavWvIn, AifWvIn, RawWavIn, SndWavIn, and MatWvIn subclasses
- windoze RtAudio code rewritten (thanks Dave!) - new file type specifier argument in WvOut ... hosed WavWvOut, AifWvOut, RawWavOut, SndWavOut, and MatWvOut subclasses
- simplified byte-swapping functions (in-place swapping) - some simplifications of Messager class (was Controller)
- new FIR filter class (thanks Julius!) - new independent RtAudio class
- "stereo-ized" RagaMatic - extensive revisions in code and a significant number of API changes
- probably a bunch more fixes that I've long since forgotten about
v3.2: (13 November 2000)
- new control handling class (Controller)
v3.1: (13 March 2000) - added AIFF file input/output support
- new RagaMatic project!!! - stklib.a Makefile in src directory
- added "microphone position" to Mandolin in STKdemo - added C++ error handling capabilities
- fixed MIDI system message exclusion under Irix - added input/output internet streaming support (StrmWvIn/StrmWvOut)
- added a few bitmaps for the Shaker instruments - added native ALSA support for linux
- made destructors virtual for Reverb.h, WvIn.h and Simple.h - added optional "device" argument to all "Rt" classes (audio and MIDI) and printout of devices when argument is invalid
- fixed bug setting delay length in DLineA when value too big - WvIn classes rewritten to support very big files (incremental load from disk)
- fixed bug in WinMM realtime code (RTSoundIO) - changed WvIn/WvOut classes to work with sample frame buffers
- added tick() method to BowTabl, JetTabl, and ReedTabl (same as lookup) - fixed looping and negative rate calculations in WvIn classes
- switched to pthread API on SGI platforms - fixed interpolation bug in RtWvIn
- added some defines to Object.h for random number generation, FPU overflow checking, etc... - windoze RtAudio code rewritten (thanks Dave!)
- a lot of minor changes, some bug fixes ... can't remember all of them - simplified byte-swapping functions (in-place swapping)
- new FIR filter class (thanks Julius!)
- "stereo-ized" RagaMatic
v3.0: (10 October 1999) - probably a bunch more fixes that I've long since forgotten about
- new #define flags for OS and realtime dependencies (this will probably cause problems for most everyone, but it was necessary to make future ports easier)
- fixed Linux MIDI input bug
- fixed MIDI status masking problem in Windows v3.1: (13 March 2000)
- OS type defines now in Makefile - new RagaMatic project!!!
- new RAWWAVE_PATH define in Object.h - added "microphone position" to Mandolin in STKdemo
- syntmono pulled out to separate directory and cleaned up - fixed MIDI system message exclusion under Irix
- socketing capabilities under Unix, as well as Windoze - added a few bitmaps for the Shaker instruments
- multiple simultaneous socket client connections to STK servers now possible - made destructors virtual for Reverb.h, WvIn.h and Simple.h
- MD2SKINI now can merge MIDI and piped messages under Irix and Linux (for TCL->MD2SKINI->syntmono control) - fixed bug setting delay length in DLineA when value too big
- defined INT16 and INT32 types and fixed various WvIn and WvOut classes - fixed bug in WinMM realtime code (RTSoundIO)
- updated MatWvIn and MatWvOut for new MAT-file documentation from Matlab - added tick() method to BowTabl, JetTabl, and ReedTabl (same as lookup)
- new demo GUI - switched to pthread API on SGI platforms
- minor fixes to FM behavior - added some defines to Object.h for random number generation, FPU overflow checking, etc...
- added record/duplex capabilities to RTSoundIO (Linux, SGI, and Windoze) - a lot of minor changes, some bug fixes ... can't remember all of them
- fixed bugs in WavWvOut and MatWvOut header specifications
- added RawWvOut class
- new WvIn class with RawWvIn, SndWvIn, WavWvIn, MatWvIn, and RTWvIn subclasses v3.0: (10 October 1999)
- removed RawWave, RawShot, RawInterp, and RawLoop classes (supplanted by RawWvIn) - new #define flags for OS and realtime dependencies (this will probably cause problems for most everyone, but it was necessary to make future ports easier)
- multi-channel data support in WvIn and WvOut classes using MY_MULTI data type (pointer to MY_FLOAT) and the methods mtick() and mlastOutput() - fixed Linux MIDI input bug
- now writing to primary buffer under Windoze when allowed by hardware - fixed MIDI status masking problem in Windows
- cleaned up Object.h a bit - OS type defines now in Makefile
- pulled various utility and thread functions out of syntmono.cpp (to aid readability of the code) - new RAWWAVE_PATH define in Object.h
- syntmono pulled out to separate directory and cleaned up
- socketing capabilities under Unix, as well as Windoze
v2.02: (16 November 1998) - multiple simultaneous socket client connections to STK servers now possible
- created RawWave abstract class, with subclasses of RawLoop (looping rawwave oscillator), RawShot (non-looping, non-interpolating rawwave player ... used to be RawWvIn), and RawInterp (looping or non-looping, interpolating rawwave player ... used to be RawWave). - MD2SKINI now can merge MIDI and piped messages under Irix and Linux (for TCL->MD2SKINI->syntmono control)
- modified DrumSynt to correctly handle sample rates different than 22050 Hz. - defined INT16 and INT32 types and fixed various WvIn and WvOut classes
- modified syntmono parsing vs. tick routine so that some ticking occurs between each message. When multiple messages are waiting to be processed, the time between message updates is inversely proportional to the number of messages in the buffer. - updated MatWvIn and MatWvOut for new MAT-file documentation from Matlab
- fixed DirectSound playback bug in Win distribution. Sound was being played at 8-bit, 22 kHz in all cases. Playback is now 16-bit and dependent on SRATE. - new demo GUI
- fixed bug in MD2SKINI which prevented some NoteOff statements from being output. - minor fixes to FM behavior
- added record/duplex capabilities to RTSoundIO (Linux, SGI, and Windoze)
- fixed bugs in WavWvOut and MatWvOut header specifications
v2.01: (27 July 1998) - added RawWvOut class
- Corrected extraneous ^M line return characters that were incompatible with SGI. - new WvIn class with RawWvIn, SndWvIn, WavWvIn, MatWvIn, and RTWvIn subclasses
- removed RawWave, RawShot, RawInterp, and RawLoop classes (supplanted by RawWvIn)
- multi-channel data support in WvIn and WvOut classes using MY_MULTI data type (pointer to MY_FLOAT) and the methods mtick() and mlastOutput()
v2.0: (20 July 1998) - now writing to primary buffer under Windoze when allowed by hardware
- The first true release by Gary, with unified capabilities across SGI, Linux, and Win platforms. See WWW pages (http://www-ccrma.stanford.edu/CCRMA/Software/STK/) for more info. - cleaned up Object.h a bit
- pulled various utility and thread functions out of syntmono.cpp (to aid readability of the code)
v1.1:
- More linux support and other changes that happened so long ago that I can't remember anymore. Never officially released. v2.02: (16 November 1998)
- created RawWave abstract class, with subclasses of RawLoop (looping rawwave oscillator), RawShot (non-looping, non-interpolating rawwave player ... used to be RawWvIn), and RawInterp (looping or non-looping, interpolating rawwave player ... used to be RawWave).
- modified DrumSynt to correctly handle sample rates different than 22050 Hz.
v1.0: - modified syntmono parsing vs. tick routine so that some ticking occurs between each message. When multiple messages are waiting to be processed, the time between message updates is inversely proportional to the number of messages in the buffer.
- Linux support added with the help of Tim Stilson. Never officially released. - fixed DirectSound playback bug in Win distribution. Sound was being played at 8-bit, 22 kHz in all cases. Playback is now 16-bit and dependent on SRATE.
- fixed bug in MD2SKINI which prevented some NoteOff statements from being output.
v0.8:
v2.01: (27 July 1998)
- Corrected extraneous ^M line return characters that were incompatible with SGI.
v2.0: (20 July 1998)
- The first true release by Gary, with unified capabilities across SGI, Linux, and Win platforms. See WWW pages (http://www-ccrma.stanford.edu/CCRMA/Software/STK/) for more info.
v1.1:
- More linux support and other changes that happened so long ago that I can't remember anymore. Never officially released.
v1.0:
- Linux support added with the help of Tim Stilson. Never officially released.
v0.8:
- One of (if not THE) original distributions for SGI, NeXTStep, and basic Win support. I think this came out in 1996. - One of (if not THE) original distributions for SGI, NeXTStep, and basic Win support. I think this came out in 1996.

View File

@@ -1,391 +1,391 @@
This describes the latest (version 1.1) implementation of SKINI. This describes the latest (version 1.1) implementation of SKINI.
Synthesis toolKit Instrument Network Interface Synthesis toolKit Instrument Network Interface
for the Synthesis Toolkit in C++ by Perry R. Cook. for the Synthesis Toolkit in C++ by Perry R. Cook.
********************************* *********************************
* Too good to be true? * * Too good to be true? *
* Have control and read it too? * * Have control and read it too? *
* A SKINI Haiku. * * A SKINI Haiku. *
********************************* *********************************
Profound thanks to Dan Trueman, Brad Garton, and Profound thanks to Dan Trueman, Brad Garton, and
Gary Scavone for input on this revision. Thanks Gary Scavone for input on this revision. Thanks
also to MIDI, the NeXT MusicKit, ZIPI and all also to MIDI, the NeXT MusicKit, ZIPI and all
the creators and modifiers of these for good bases the creators and modifiers of these for good bases
upon/from which to build and depart. upon/from which to build and depart.
1) MIDI Compatibility 1) MIDI Compatibility
SKINI was designed to be MIDI compatible wherever possible, SKINI was designed to be MIDI compatible wherever possible,
and extend MIDI in incremental, then maybe profound ways. and extend MIDI in incremental, then maybe profound ways.
Differences from MIDI, and motivations, include: Differences from MIDI, and motivations, include:
Text-based messages are used, with meaningful names Text-based messages are used, with meaningful names
wherever possible. This allows any language or system wherever possible. This allows any language or system
capable of formatted printing to generate SKINI. capable of formatted printing to generate SKINI.
Similarly, any system capable of reading in a string Similarly, any system capable of reading in a string
and turning delimited fields into strings, floats, and turning delimited fields into strings, floats,
and ints can consume SKINI for control. More importantly, and ints can consume SKINI for control. More importantly,
humans can actually read, and even write if they want, humans can actually read, and even write if they want,
SKINI files and streams. Use an editor and search/ SKINI files and streams. Use an editor and search/
replace or macros to change a channel or control number. replace or macros to change a channel or control number.
Load a SKINI score into a spread sheet to apply Load a SKINI score into a spread sheet to apply
transformations to time, control parameters, MIDI transformations to time, control parameters, MIDI
velocities, etc. Put a monkey on a special typewriter velocities, etc. Put a monkey on a special typewriter
and get your next great work. Life's too short to debug and get your next great work. Life's too short to debug
bit/nybble packed variable length mumble messages. Disk bit/nybble packed variable length mumble messages. Disk
space gets cheaper, available bandwidth increases, music space gets cheaper, available bandwidth increases, music
takes up so little space and bandwidth compared to video takes up so little space and bandwidth compared to video
and grapics. Live a little. and grapics. Live a little.
Floating point numbers are used wherever possible. Floating point numbers are used wherever possible.
Note Numbers, Velocities, Controller Values, and Note Numbers, Velocities, Controller Values, and
Delta and Absolute Times are all represented and Delta and Absolute Times are all represented and
scanned as ASCII double-precision floats. MIDI byte scanned as ASCII double-precision floats. MIDI byte
values are preserved, so that incoming MIDI bytes values are preserved, so that incoming MIDI bytes
from an interface can be put directly into SKINI from an interface can be put directly into SKINI
messages. 60.0 or 60 is middle C, 127.0 or 127 is messages. 60.0 or 60 is middle C, 127.0 or 127 is
maximum velocity etc. But, unlike MIDI, 60.5 can maximum velocity etc. But, unlike MIDI, 60.5 can
cause a 50cent sharp middle C to be played. As with cause a 50cent sharp middle C to be played. As with
MIDI byte values like velocity, use of the integer and MIDI byte values like velocity, use of the integer and
SKINI-added fractional parts is up to the implementor SKINI-added fractional parts is up to the implementor
of the algorithm being controlled by SKINI messages. of the algorithm being controlled by SKINI messages.
But the extra precision is there to be used or ignored. But the extra precision is there to be used or ignored.
2) WHY SKINI? 2) WHY SKINI?
SKINI was designed to be extensable and hackable for a number SKINI was designed to be extensable and hackable for a number
of applications: imbedded synthesis in a game or VR simulation, of applications: imbedded synthesis in a game or VR simulation,
scoring and mixing tasks, real-time and non-real time applications scoring and mixing tasks, real-time and non-real time applications
which could benefit from controllable sound synthesis, which could benefit from controllable sound synthesis,
JAVA controlled synthesis, or eventually maybe JAVA synthesis, JAVA controlled synthesis, or eventually maybe JAVA synthesis,
etc. SKINI is not intended to be "the mother of scorefiles," etc. SKINI is not intended to be "the mother of scorefiles,"
but since the entire system is based on text representations but since the entire system is based on text representations
of names, floats, and ints, converters from one scorefile of names, floats, and ints, converters from one scorefile
language to SKINI, or back, should be easily created. language to SKINI, or back, should be easily created.
I am basically a bottom-up designer with an awareness of top- I am basically a bottom-up designer with an awareness of top-
down design ideas, so SKINI above all reflects the needs of my down design ideas, so SKINI above all reflects the needs of my
particular research and creative projects as they have arisen and particular research and creative projects as they have arisen and
developed. SKINI 1.1 represents a profound advance beyond developed. SKINI 1.1 represents a profound advance beyond
versions 0.8 and 0.9 (the first versions), future SKINI's might versions 0.8 and 0.9 (the first versions), future SKINI's might
reflect some changes. Compatibility with prior scorefiles reflect some changes. Compatibility with prior scorefiles
will be attempted, but there aren't that many scorefiles out will be attempted, but there aren't that many scorefiles out
there yet. there yet.
3) SKINI MESSAGES 3) SKINI MESSAGES
A basic SKINI message is a line of text. There are only three A basic SKINI message is a line of text. There are only three
required fields, the message type (an ASCII name), the time (either required fields, the message type (an ASCII name), the time (either
delta or absolute), and the channel number. Don't freak out and delta or absolute), and the channel number. Don't freak out and
think that this is MIDI channel 0-15 (which is supported), because think that this is MIDI channel 0-15 (which is supported), because
the channel number is scanned as a long int. Channels could be socket the channel number is scanned as a long int. Channels could be socket
numbers, machine IDs, serial numbers, or even unique tags for each numbers, machine IDs, serial numbers, or even unique tags for each
event in a synthesis. Other fields might be used, as specified in the event in a synthesis. Other fields might be used, as specified in the
SKINI.tbl file. This is described in more detail later. SKINI.tbl file. This is described in more detail later.
Fields in a SKINI line are delimited by spaces, commas, or Fields in a SKINI line are delimited by spaces, commas, or
tabs. The SKINI parser only operates on a line at a time, tabs. The SKINI parser only operates on a line at a time,
so a newline means the message is over. Multiple messages are so a newline means the message is over. Multiple messages are
NOT allowed directly on a single line (by use of the ; for NOT allowed directly on a single line (by use of the ; for
example in C). This could be supported, but it isn't in example in C). This could be supported, but it isn't in
version 1.1. version 1.1.
Message types include standard MIDI types like NoteOn, NoteOff, Message types include standard MIDI types like NoteOn, NoteOff,
ControlChange, etc. MIDI extension message types (messages ControlChange, etc. MIDI extension message types (messages
which look better than MIDI but actually get turned into which look better than MIDI but actually get turned into
MIDI-like messages) include LipTension, StringDamping, etc. MIDI-like messages) include LipTension, StringDamping, etc.
NonMIDI message types include SetPath (sets a path for file NonMIDI message types include SetPath (sets a path for file
use later), and OpenReadFile (for streaming, mixing, and applying use later), and OpenReadFile (for streaming, mixing, and applying
effects to soundfiles along with synthesis, for example). effects to soundfiles along with synthesis, for example).
Other non-MIDI message types include Trilling, HammerOn, etc. (these Other non-MIDI message types include Trilling, HammerOn, etc. (these
translate to gestures, behaviors, and contexts for use by translate to gestures, behaviors, and contexts for use by
intellegent players and instruments using SKINI). Where possible intellegent players and instruments using SKINI). Where possible
I will still use these as MIDI extension messages, so foot I will still use these as MIDI extension messages, so foot
switches, etc. can be used to control them in real time. switches, etc. can be used to control them in real time.
All fields other than type, time, and channel are optional, and the All fields other than type, time, and channel are optional, and the
types and useage of the additional fields is defined in the file types and useage of the additional fields is defined in the file
SKINI.tbl. SKINI.tbl.
The other important file used by SKINI is SKINI.msg, which is a The other important file used by SKINI is SKINI.msg, which is a
set of #defines to make C code more readable, and to allow reasonably set of #defines to make C code more readable, and to allow reasonably
quick re-mapping of control numbers, etc.. All of these defined quick re-mapping of control numbers, etc.. All of these defined
symbols are assigned integer values. For JAVA, the #defines could symbols are assigned integer values. For JAVA, the #defines could
be replaced by declaration and assignment statements, preserving be replaced by declaration and assignment statements, preserving
the look and behavior of the rest of the code. the look and behavior of the rest of the code.
4) C Files Used To Implement SKINI 4) C Files Used To Implement SKINI
SKINI.cpp is an object which can either open a SKINI file, and SKINI.cpp is an object which can either open a SKINI file, and
successively read and parse lines of text as SKINI strings, or successively read and parse lines of text as SKINI strings, or
accept strings from another object and parse them. The latter accept strings from another object and parse them. The latter
functionality would be used by a socket, pipe, or other connection functionality would be used by a socket, pipe, or other connection
receiving SKINI messages a line at a time, usually in real time, receiving SKINI messages a line at a time, usually in real time,
but not restricted to real time. but not restricted to real time.
SKINI.msg should be included by anything wanting to use the SKINI.msg should be included by anything wanting to use the
SKINI.cpp object. This is not mandatory, but use of the __SK_blah_ SKINI.cpp object. This is not mandatory, but use of the __SK_blah_
symbols which are defined in the .msg file will help to ensure symbols which are defined in the .msg file will help to ensure
clarity and consistency when messages are added and changed. clarity and consistency when messages are added and changed.
SKINI.tbl is used only by the SKINI parser object (SKINI.cpp). SKINI.tbl is used only by the SKINI parser object (SKINI.cpp).
In the file SKINI.tbl, an array of structures is declared and In the file SKINI.tbl, an array of structures is declared and
assigned values which instruct the parser as to what the message assigned values which instruct the parser as to what the message
types are, and what the fields mean for those message types. types are, and what the fields mean for those message types.
This table is compiled and linked into applications using SKINI, but This table is compiled and linked into applications using SKINI, but
could be dynamically loaded and changed in a future version of could be dynamically loaded and changed in a future version of
SKINI. SKINI.
5) SKINI Messages and the SKINI Parser: 5) SKINI Messages and the SKINI Parser:
The parser isn't all that smart, but neither am I. Here are the The parser isn't all that smart, but neither am I. Here are the
basic rules governing a valid SKINI message: basic rules governing a valid SKINI message:
a) If the first (non-delimiter (see c)) character in a SKINI a) If the first (non-delimiter (see c)) character in a SKINI
string is '/' that line is treated as a comment and echoed string is '/' that line is treated as a comment and echoed
to stdout. to stdout.
b) If there are no characters on a line, that line is treated b) If there are no characters on a line, that line is treated
as blank and echoed to stdout. Tabs and spaces are treated as blank and echoed to stdout. Tabs and spaces are treated
as non-characters. as non-characters.
c) Spaces, commas, and tabs delimit the fields in a SKINI c) Spaces, commas, and tabs delimit the fields in a SKINI
message line. (We might allow for multiple messages per message line. (We might allow for multiple messages per
line later using the semicolon, but probably not. A series line later using the semicolon, but probably not. A series
of lines with deltaTimes of 0.0 denotes simultaneous events. of lines with deltaTimes of 0.0 denotes simultaneous events.
For read-ability, multiple messages per line doesn't help much, For read-ability, multiple messages per line doesn't help much,
so it's unlikely to be supported later). so it's unlikely to be supported later).
d) The first field must be a SKINI message name. (like NoteOn). d) The first field must be a SKINI message name. (like NoteOn).
These might become case-insensitive in future versions, so don't These might become case-insensitive in future versions, so don't
plan on exciting clever overloading of names (like noTeOn being plan on exciting clever overloading of names (like noTeOn being
different from NoTeON). There can be a number of leading different from NoTeON). There can be a number of leading
spaces or tabs, but don't exceed 32 or so. spaces or tabs, but don't exceed 32 or so.
e) The second field must be a time specification in seconds. e) The second field must be a time specification in seconds.
A time field can be either delta-time (most common and the only one A time field can be either delta-time (most common and the only one
supported in version 0.8), or absolute time. Absolute time supported in version 0.8), or absolute time. Absolute time
messages have an '=' appended to the beginning of the floating messages have an '=' appended to the beginning of the floating
point number with no space. So 0.10000 means delta time of point number with no space. So 0.10000 means delta time of
100 ms, while =0.10000 means absolute time of 100 ms. Absolute 100 ms, while =0.10000 means absolute time of 100 ms. Absolute
time messages make most sense in score files, but could also be time messages make most sense in score files, but could also be
used for (loose) synchronization in a real-time context. Real used for (loose) synchronization in a real-time context. Real
time messages should be time-ordered AND time-correct. That is, time messages should be time-ordered AND time-correct. That is,
if you've sent 100 total delta-time messages of 1.0 seconds, and if you've sent 100 total delta-time messages of 1.0 seconds, and
then send an absolute time message of =90.0 seconds, or if you then send an absolute time message of =90.0 seconds, or if you
send two absolute time messages of =100.0 and =90.0 in that send two absolute time messages of =100.0 and =90.0 in that
order, things will get really fouled up. The SKINI parser order, things will get really fouled up. The SKINI parser
doesn't know about time, however. The WvOut device is the doesn't know about time, however. The WvOut device is the
master time keeper in the Synthesis Toolkit, so it should be master time keeper in the Synthesis Toolkit, so it should be
queried to see if absolute time messages are making sense. queried to see if absolute time messages are making sense.
There's an example of how to do that later in this document. There's an example of how to do that later in this document.
Absolute times are returned by the parser as negative numbers Absolute times are returned by the parser as negative numbers
(since negative deltaTimes are not allowed). (since negative deltaTimes are not allowed).
f) The third field must be an integer channel number. Don't go f) The third field must be an integer channel number. Don't go
crazy and think that this is just MIDI channel 0-15 (which is crazy and think that this is just MIDI channel 0-15 (which is
supported). The channel number is scanned as a long int. Channels supported). The channel number is scanned as a long int. Channels
0-15 are in general to be treated as MIDI channels. After that 0-15 are in general to be treated as MIDI channels. After that
it's wide open. Channels could be socket numbers, machine IDs, it's wide open. Channels could be socket numbers, machine IDs,
serial numbers, or even unique tags for each event in a synthesis. serial numbers, or even unique tags for each event in a synthesis.
A -1 channel can be used as don't care, omni, or other functions A -1 channel can be used as don't care, omni, or other functions
depending on your needs and taste. depending on your needs and taste.
g) All remaining fields are specified in the SKINI.tbl file. g) All remaining fields are specified in the SKINI.tbl file.
In general, there are maximum two more fields, which are either In general, there are maximum two more fields, which are either
SK_INT (long), SK_DBL (double float), or SK_STR (string). The SK_INT (long), SK_DBL (double float), or SK_STR (string). The
latter is the mechanism by which more arguments can be specified latter is the mechanism by which more arguments can be specified
on the line, but the object using SKINI must take that string on the line, but the object using SKINI must take that string
apart (retrived by using getRemainderString()) and scan it. apart (retrived by using getRemainderString()) and scan it.
Any excess fields are stashed in remainderString. Any excess fields are stashed in remainderString.
6) A Short SKINI File: 6) A Short SKINI File:
/* Howdy!!! Welcome to SKINI, by P. Cook 1999 /* Howdy!!! Welcome to SKINI, by P. Cook 1999
NoteOn 0.000082 2 55 82 NoteOn 0.000082 2 55 82
NoteOff 1.000000 2 55 0 NoteOff 1.000000 2 55 0
NoteOn 0.000082 2 69 82 NoteOn 0.000082 2 69 82
StringDetune 0.100000 2 10 StringDetune 0.100000 2 10
StringDetune 0.100000 2 30 StringDetune 0.100000 2 30
StringDetune 0.100000 2 50 StringDetune 0.100000 2 50
NoteOn 0.000000 2 69 82 NoteOn 0.000000 2 69 82
StringDetune 0.100000 2 40 StringDetune 0.100000 2 40
StringDetune 0.100000 2 22 StringDetune 0.100000 2 22
StringDetune 0.100000 2 12 StringDetune 0.100000 2 12
// //
StringDamping 0.000100 2 0.0 StringDamping 0.000100 2 0.0
NoteOn 0.000082 2 55 82 NoteOn 0.000082 2 55 82
NoteOn 0.200000 2 62 82 NoteOn 0.200000 2 62 82
NoteOn 0.100000 2 71 82 NoteOn 0.100000 2 71 82
NoteOn 0.200000 2 79 82 NoteOn 0.200000 2 79 82
NoteOff 1.000000 2 55 82 NoteOff 1.000000 2 55 82
NoteOff 0.000000 2 62 82 NoteOff 0.000000 2 62 82
NoteOff 0.000000 2 71 82 NoteOff 0.000000 2 71 82
NoteOff 0.000000 2 79 82 NoteOff 0.000000 2 79 82
StringDamping =4.000000 2 0.0 StringDamping =4.000000 2 0.0
NoteOn 0.000082 2 55 82 NoteOn 0.000082 2 55 82
NoteOn 0.200000 2 62 82 NoteOn 0.200000 2 62 82
NoteOn 0.100000 2 71 82 NoteOn 0.100000 2 71 82
NoteOn 0.200000 2 79 82 NoteOn 0.200000 2 79 82
NoteOff 1.000000 2 55 82 NoteOff 1.000000 2 55 82
NoteOff 0.000000 2 62 82 NoteOff 0.000000 2 62 82
NoteOff 0.000000 2 71 82 NoteOff 0.000000 2 71 82
NoteOff 0.000000 2 79 82 NoteOff 0.000000 2 79 82
7) The SKINI.tbl File, How Messages are Parsed: 7) The SKINI.tbl File, How Messages are Parsed:
The SKINI.tbl file contains an array of structures which The SKINI.tbl file contains an array of structures which
are accessed by the parser object SKINI.cpp. The struct is: are accessed by the parser object SKINI.cpp. The struct is:
struct SKINISpec { char messageString[32]; struct SKINISpec { char messageString[32];
long type; long type;
long data2; long data2;
long data3; long data3;
}; };
so an assignment of one of these structs looks like: so an assignment of one of these structs looks like:
MessageStr$ ,type, data2, data3, MessageStr$ ,type, data2, data3,
type is the message type sent back from the SKINI line parser. type is the message type sent back from the SKINI line parser.
data<n> is either data<n> is either
NOPE : field not used, specifically, there aren't going NOPE : field not used, specifically, there aren't going
to be any more fields on this line. So if there to be any more fields on this line. So if there
is is NOPE in data2, data3 won't even be checked is is NOPE in data2, data3 won't even be checked
SK_INT : byte (actually scanned as 32 bit signed long int) SK_INT : byte (actually scanned as 32 bit signed long int)
If it's a MIDI data field which is required to If it's a MIDI data field which is required to
be an integer, like a controller number, it's be an integer, like a controller number, it's
0-127. Otherwise) get creative with SK_INTs 0-127. Otherwise) get creative with SK_INTs
SK_DBL : double precision floating point. SKINI uses these SK_DBL : double precision floating point. SKINI uses these
in the MIDI context for note numbers with micro in the MIDI context for note numbers with micro
tuning, velocities, controller values, etc. tuning, velocities, controller values, etc.
SK_STR : only valid in final field. This allows (nearly) SK_STR : only valid in final field. This allows (nearly)
arbitrary message types to be supported by simply arbitrary message types to be supported by simply
scanning the string to EndOfLine and then passing scanning the string to EndOfLine and then passing
it to a more intellegent handler. For example, it to a more intellegent handler. For example,
MIDI SYSEX (system exclusive) messages of up to MIDI SYSEX (system exclusive) messages of up to
256 bytes can be read as space-delimited integers 256 bytes can be read as space-delimited integers
into the 1K SK_STR buffer. Longer bulk dumps, into the 1K SK_STR buffer. Longer bulk dumps,
soundfiles, etc. should be handled as a new soundfiles, etc. should be handled as a new
message type pointing to a FileName, Socket, or message type pointing to a FileName, Socket, or
something else stored in the SK_STR field, or something else stored in the SK_STR field, or
as a new type of multi-line message. as a new type of multi-line message.
Here's a couple of lines from the SKINI.tbl file Here's a couple of lines from the SKINI.tbl file
{"NoteOff" , __SK_NoteOff_, SK_DBL, SK_DBL}, {"NoteOff" , __SK_NoteOff_, SK_DBL, SK_DBL},
{"NoteOn" , __SK_NoteOn_, SK_DBL, SK_DBL}, {"NoteOn" , __SK_NoteOn_, SK_DBL, SK_DBL},
{"ControlChange" , __SK_ControlChange_, SK_INT, SK_DBL}, {"ControlChange" , __SK_ControlChange_, SK_INT, SK_DBL},
{"Volume" , __SK_ControlChange_, __SK_Volume_ , SK_DBL}, {"Volume" , __SK_ControlChange_, __SK_Volume_ , SK_DBL},
{"StringDamping" , __SK_ControlChange_, __SK_StringDamping_, SK_DBL}, {"StringDamping" , __SK_ControlChange_, __SK_StringDamping_, SK_DBL},
{"StringDetune" , __SK_ControlChange_, __SK_StringDetune_, SK_DBL}, {"StringDetune" , __SK_ControlChange_, __SK_StringDetune_, SK_DBL},
The first three are basic MIDI messages. The first two would cause the The first three are basic MIDI messages. The first two would cause the
parser, after recognizing a match of the string "NoteOff" or "NoteOn", parser, after recognizing a match of the string "NoteOff" or "NoteOn",
to set the message type to 128 or 144 (__SK_NoteOff_ and __SK_NoteOn_ to set the message type to 128 or 144 (__SK_NoteOff_ and __SK_NoteOn_
are #defined in the file SKINI.msg to be the MIDI byte value, without are #defined in the file SKINI.msg to be the MIDI byte value, without
channel, of the actual MIDI messages for NoteOn and NoteOff). The parser channel, of the actual MIDI messages for NoteOn and NoteOff). The parser
would then set the time or delta time (this is always done and is would then set the time or delta time (this is always done and is
therefore not described in the SKINI Message Struct). The next two therefore not described in the SKINI Message Struct). The next two
fields would be scanned as double-precision floats and assigned to fields would be scanned as double-precision floats and assigned to
the byteTwo and byteThree variables of the SKINI parser. The remainder the byteTwo and byteThree variables of the SKINI parser. The remainder
of the line is stashed in the remainderString variable. of the line is stashed in the remainderString variable.
The ControlChange spec is basically the same as NoteOn and NoteOff, but The ControlChange spec is basically the same as NoteOn and NoteOff, but
the second data byte is set to an integer (for checking later as to the second data byte is set to an integer (for checking later as to
what MIDI control is being changed). what MIDI control is being changed).
The Volume spec is a MIDI Extension message, which behaves like a The Volume spec is a MIDI Extension message, which behaves like a
ControlChange message with the controller number set explicitly to ControlChange message with the controller number set explicitly to
the value for MIDI Volume (7). Thus the following two lines would the value for MIDI Volume (7). Thus the following two lines would
accomplish the same changing of MIDI volume on channel 2: accomplish the same changing of MIDI volume on channel 2:
ControlChange 0.000000 2 7 64.1 ControlChange 0.000000 2 7 64.1
Volume 0.000000 2 64.1 Volume 0.000000 2 64.1
I like the 2nd line better, thus my motivation for SKINI in the first I like the 2nd line better, thus my motivation for SKINI in the first
place. place.
The StringDamping and StringDetune messages behave the same as The StringDamping and StringDetune messages behave the same as
the Volume message, but use Control Numbers which aren't specifically the Volume message, but use Control Numbers which aren't specifically
nailed-down in MIDI. Note that these Control Numbers are carried nailed-down in MIDI. Note that these Control Numbers are carried
around as long ints, so we're not limited to 0-127. If, however, around as long ints, so we're not limited to 0-127. If, however,
you want to use a MIDI controller to play an instrument, using you want to use a MIDI controller to play an instrument, using
controller numbers in the 0-127 range might make sense. controller numbers in the 0-127 range might make sense.
8) Objects using SKINI 8) Objects using SKINI
Here's a simple example of code which uses the SKINI object Here's a simple example of code which uses the SKINI object
to read a SKINI file and control a single instrument. to read a SKINI file and control a single instrument.
instrument = new Mandolin(50.0); instrument = new Mandolin(50.0);
score = new SKINI(argv[1]); score = new SKINI(argv[1]);
while(score->getType() > 0) { while(score->getType() > 0) {
tempDouble = score->getDelta(); tempDouble = score->getDelta();
if (tempDouble < 0) { if (tempDouble < 0) {
tempDouble = - tempDouble; tempDouble = - tempDouble;
tempDouble = tempDouble - output.getTime(); tempDouble = tempDouble - output.getTime();
if (tempDouble < 0) { if (tempDouble < 0) {
printf("Bad News Here!!! Backward Absolute Time Required.\n"); printf("Bad News Here!!! Backward Absolute Time Required.\n");
tempDouble = 0.0; tempDouble = 0.0;
} }
} }
tempLong = (long) (tempDouble * Stk::sampleRate()); tempLong = (long) (tempDouble * Stk::sampleRate());
for (i=0;i<tempLong;i++) { for (i=0;i<tempLong;i++) {
output.tick(instrument->tick()); output.tick(instrument->tick());
} }
tempDouble3 = score->getByteThree(); tempDouble3 = score->getByteThree();
if (score->getType()== __SK_NoteOn_ ) { if (score->getType()== __SK_NoteOn_ ) {
tempDouble3 *= NORM_MIDI; tempDouble3 *= NORM_MIDI;
if (score->getByteThree() == 0) { if (score->getByteThree() == 0) {
tempDouble3 = 0.5; tempDouble3 = 0.5;
instrument->noteOff(tempDouble3); instrument->noteOff(tempDouble3);
} }
else { else {
tempLong = (int) score->getByteTwo(); tempLong = (int) score->getByteTwo();
tempDouble2 = Midi2Pitch[tempLong]; tempDouble2 = Midi2Pitch[tempLong];
instrument->noteOn(tempDouble2,tempDouble3); instrument->noteOn(tempDouble2,tempDouble3);
} }
} }
else if (score->getType() == __SK_NoteOff_) { else if (score->getType() == __SK_NoteOff_) {
tempDouble3 *= NORM_MIDI; tempDouble3 *= NORM_MIDI;
instrument->noteOff(tempDouble3); instrument->noteOff(tempDouble3);
} }
else if (score->getType() == __SK_ControlChange_) { else if (score->getType() == __SK_ControlChange_) {
tempLong = score->getByteTwoInt(); tempLong = score->getByteTwoInt();
instrument->controlChange(tempLong,temp3.0); instrument->controlChange(tempLong,temp3.0);
} }
score->nextMessage(); score->nextMessage();
} }
When the score (SKINI object) object is created from the When the score (SKINI object) object is created from the
filename in argv[1], the first valid command line is read filename in argv[1], the first valid command line is read
from the file and parsed. from the file and parsed.
The score->getType() retrieves the messageType. If this is The score->getType() retrieves the messageType. If this is
-1, there are no more valid messages in the file and the -1, there are no more valid messages in the file and the
synthesis loop terminates. Otherwise, the message type is synthesis loop terminates. Otherwise, the message type is
returned. returned.
getDelta() retrieves the deltaTime until the current message getDelta() retrieves the deltaTime until the current message
should occur. If this is greater than 0, synthesis occurs should occur. If this is greater than 0, synthesis occurs
until the deltaTime has elapsed. If deltaTime is less than until the deltaTime has elapsed. If deltaTime is less than
zero, the time is interpreted as absolute time and the output zero, the time is interpreted as absolute time and the output
device is queried as to what time it is now. That is used to device is queried as to what time it is now. That is used to
form a deltaTime, and if it's positive we synthesize. If form a deltaTime, and if it's positive we synthesize. If
it's negative, we print an error and pretend this never it's negative, we print an error and pretend this never
happened and we hang around hoping to eventually catch up. happened and we hang around hoping to eventually catch up.
The rest of the code sorts out message types NoteOn, NoteOff The rest of the code sorts out message types NoteOn, NoteOff
(including NoteOn with velocity 0), and ControlChange. The (including NoteOn with velocity 0), and ControlChange. The
code implicitly takes into account the integer type of the code implicitly takes into account the integer type of the
control number, but all other data is treated as double float. control number, but all other data is treated as double float.
The last line reads and parses the next message in the file. The last line reads and parses the next message in the file.

View File

@@ -1,155 +1,155 @@
# Doxyfile 1.2.6 # Doxyfile 1.2.6
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# General configuration options # General configuration options
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
PROJECT_NAME = STK PROJECT_NAME = STK
PROJECT_NUMBER = PROJECT_NUMBER =
OUTPUT_DIRECTORY = . OUTPUT_DIRECTORY = .
OUTPUT_LANGUAGE = English OUTPUT_LANGUAGE = English
EXTRACT_ALL = NO EXTRACT_ALL = NO
EXTRACT_PRIVATE = NO EXTRACT_PRIVATE = NO
EXTRACT_STATIC = YES EXTRACT_STATIC = YES
HIDE_UNDOC_MEMBERS = YES HIDE_UNDOC_MEMBERS = YES
HIDE_UNDOC_CLASSES = YES HIDE_UNDOC_CLASSES = YES
BRIEF_MEMBER_DESC = YES BRIEF_MEMBER_DESC = YES
REPEAT_BRIEF = YES REPEAT_BRIEF = YES
ALWAYS_DETAILED_SEC = NO ALWAYS_DETAILED_SEC = NO
FULL_PATH_NAMES = NO FULL_PATH_NAMES = NO
STRIP_FROM_PATH = STRIP_FROM_PATH =
INTERNAL_DOCS = NO INTERNAL_DOCS = NO
CLASS_DIAGRAMS = YES CLASS_DIAGRAMS = YES
SOURCE_BROWSER = NO SOURCE_BROWSER = NO
INLINE_SOURCES = NO INLINE_SOURCES = NO
STRIP_CODE_COMMENTS = YES STRIP_CODE_COMMENTS = YES
CASE_SENSE_NAMES = YES CASE_SENSE_NAMES = YES
HIDE_SCOPE_NAMES = NO HIDE_SCOPE_NAMES = NO
VERBATIM_HEADERS = YES VERBATIM_HEADERS = YES
SHOW_INCLUDE_FILES = YES SHOW_INCLUDE_FILES = YES
JAVADOC_AUTOBRIEF = NO JAVADOC_AUTOBRIEF = NO
INHERIT_DOCS = YES INHERIT_DOCS = YES
INLINE_INFO = YES INLINE_INFO = YES
SORT_MEMBER_DOCS = NO SORT_MEMBER_DOCS = NO
DISTRIBUTE_GROUP_DOC = NO DISTRIBUTE_GROUP_DOC = NO
TAB_SIZE = 8 TAB_SIZE = 8
ENABLED_SECTIONS = ENABLED_SECTIONS =
GENERATE_TODOLIST = YES GENERATE_TODOLIST = YES
GENERATE_TESTLIST = YES GENERATE_TESTLIST = YES
GENERATE_BUGLIST = YES GENERATE_BUGLIST = YES
ALIASES = ALIASES =
MAX_INITIALIZER_LINES = 30 MAX_INITIALIZER_LINES = 30
OPTIMIZE_OUTPUT_FOR_C = NO OPTIMIZE_OUTPUT_FOR_C = NO
SHOW_USED_FILES = YES SHOW_USED_FILES = YES
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# configuration options related to warning and progress messages # configuration options related to warning and progress messages
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
QUIET = NO QUIET = NO
WARNINGS = YES WARNINGS = YES
WARN_IF_UNDOCUMENTED = YES WARN_IF_UNDOCUMENTED = YES
WARN_FORMAT = "$file:$line: $text" WARN_FORMAT = "$file:$line: $text"
WARN_LOGFILE = WARN_LOGFILE =
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# configuration options related to the input files # configuration options related to the input files
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
INPUT = index.txt information.txt classes.txt download.txt usage.txt maillist.txt system.txt tutorial.txt skini.txt ../../include/ INPUT = . ../../include
FILE_PATTERNS = *.h FILE_PATTERNS = *.txt *.h
RECURSIVE = NO RECURSIVE = YES
EXCLUDE = EXCLUDE =
EXCLUDE_PATTERNS = EXCLUDE_PATTERNS =
EXAMPLE_PATH = EXAMPLE_PATH =
EXAMPLE_PATTERNS = EXAMPLE_PATTERNS =
IMAGE_PATH = IMAGE_PATH =
INPUT_FILTER = INPUT_FILTER =
FILTER_SOURCE_FILES = NO FILTER_SOURCE_FILES = NO
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# configuration options related to the alphabetical class index # configuration options related to the alphabetical class index
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
ALPHABETICAL_INDEX = NO ALPHABETICAL_INDEX = NO
COLS_IN_ALPHA_INDEX = 5 COLS_IN_ALPHA_INDEX = 5
IGNORE_PREFIX = IGNORE_PREFIX =
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# configuration options related to the HTML output # configuration options related to the HTML output
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
GENERATE_HTML = YES GENERATE_HTML = YES
HTML_OUTPUT = ../html HTML_OUTPUT = ../html
HTML_HEADER = header.html HTML_HEADER = header.html
HTML_FOOTER = footer.html HTML_FOOTER = footer.html
HTML_STYLESHEET = HTML_STYLESHEET =
HTML_ALIGN_MEMBERS = YES HTML_ALIGN_MEMBERS = YES
GENERATE_HTMLHELP = NO GENERATE_HTMLHELP = NO
GENERATE_CHI = NO GENERATE_CHI = NO
BINARY_TOC = NO BINARY_TOC = NO
TOC_EXPAND = NO TOC_EXPAND = NO
DISABLE_INDEX = YES DISABLE_INDEX = YES
ENUM_VALUES_PER_LINE = 4 ENUM_VALUES_PER_LINE = 4
GENERATE_TREEVIEW = NO GENERATE_TREEVIEW = NO
TREEVIEW_WIDTH = 250 TREEVIEW_WIDTH = 250
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# configuration options related to the LaTeX output # configuration options related to the LaTeX output
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
GENERATE_LATEX = YES GENERATE_LATEX = YES
LATEX_OUTPUT = latex LATEX_OUTPUT = latex
COMPACT_LATEX = NO COMPACT_LATEX = NO
PAPER_TYPE = letter PAPER_TYPE = letter
EXTRA_PACKAGES = EXTRA_PACKAGES =
LATEX_HEADER = header.tex LATEX_HEADER = header.tex
PDF_HYPERLINKS = YES PDF_HYPERLINKS = YES
USE_PDFLATEX = YES USE_PDFLATEX = YES
LATEX_BATCHMODE = NO LATEX_BATCHMODE = NO
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# configuration options related to the RTF output # configuration options related to the RTF output
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
GENERATE_RTF = NO GENERATE_RTF = NO
RTF_OUTPUT = rtf RTF_OUTPUT = rtf
COMPACT_RTF = NO COMPACT_RTF = NO
RTF_HYPERLINKS = NO RTF_HYPERLINKS = NO
RTF_STYLESHEET_FILE = RTF_STYLESHEET_FILE =
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# configuration options related to the man page output # configuration options related to the man page output
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
GENERATE_MAN = NO GENERATE_MAN = NO
MAN_OUTPUT = man MAN_OUTPUT = man
MAN_EXTENSION = .3 MAN_EXTENSION = .3
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# Configuration options related to the preprocessor # Configuration options related to the preprocessor
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
ENABLE_PREPROCESSING = YES ENABLE_PREPROCESSING = YES
MACRO_EXPANSION = NO MACRO_EXPANSION = NO
EXPAND_ONLY_PREDEF = NO EXPAND_ONLY_PREDEF = NO
SEARCH_INCLUDES = YES SEARCH_INCLUDES = YES
INCLUDE_PATH = INCLUDE_PATH =
INCLUDE_FILE_PATTERNS = INCLUDE_FILE_PATTERNS =
PREDEFINED = PREDEFINED =
EXPAND_AS_DEFINED = EXPAND_AS_DEFINED =
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# Configuration::addtions related to external references # Configuration::addtions related to external references
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
TAGFILES = TAGFILES =
GENERATE_TAGFILE = GENERATE_TAGFILE =
ALLEXTERNALS = NO ALLEXTERNALS = NO
PERL_PATH = /usr/bin/perl PERL_PATH = /usr/bin/perl
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# Configuration options related to the dot tool # Configuration options related to the dot tool
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
HAVE_DOT = NO HAVE_DOT = NO
CLASS_GRAPH = YES CLASS_GRAPH = YES
COLLABORATION_GRAPH = YES COLLABORATION_GRAPH = YES
INCLUDE_GRAPH = YES INCLUDE_GRAPH = YES
INCLUDED_BY_GRAPH = YES INCLUDED_BY_GRAPH = YES
GRAPHICAL_HIERARCHY = YES GRAPHICAL_HIERARCHY = YES
DOT_PATH = DOT_PATH =
MAX_DOT_GRAPH_WIDTH = 1024 MAX_DOT_GRAPH_WIDTH = 1024
MAX_DOT_GRAPH_HEIGHT = 1024 MAX_DOT_GRAPH_HEIGHT = 1024
GENERATE_LEGEND = YES GENERATE_LEGEND = YES
DOT_CLEANUP = YES DOT_CLEANUP = YES
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# Configuration::addtions related to the search engine # Configuration::addtions related to the search engine
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
SEARCHENGINE = NO SEARCHENGINE = NO
CGI_NAME = search.cgi CGI_NAME = search.cgi
CGI_URL = CGI_URL =
DOC_URL = DOC_URL =
DOC_ABSPATH = DOC_ABSPATH =
BIN_ABSPATH = /usr/local/bin/ BIN_ABSPATH = /usr/local/bin/
EXT_DOC_PATHS = EXT_DOC_PATHS =

View File

@@ -1,10 +1,10 @@
/*! \page classes Class Documentation /*! \page classes Class Documentation
<UL> <UL>
<LI><a class="qindex" href="hierarchy.html">Class Hierarchy</a></LI> <LI><a class="qindex" href="hierarchy.html">Class Hierarchy</a></LI>
<LI><a class="qindex" href="annotated.html">Class/Enum List</a></LI> <LI><a class="qindex" href="annotated.html">Class/Enum List</a></LI>
<LI><a class="qindex" href="files.html">File List</a></LI> <LI><a class="qindex" href="files.html">File List</a></LI>
<LI><a class="qindex" href="functions.html">Compound Members</a></LI> <LI><a class="qindex" href="functions.html">Compound Members</a></LI>
</UL> </UL>
*/ */

View File

@@ -1,115 +1,138 @@
/*! \page download Download and Release Notes /*! \page download Download and Release Notes
<B>Version 4.0, 30 April 2002</B><P> <B>Version 4.1, 8 October 2002</B><P>
<A HREF="Release/stk-4.0.tar.gz">STK Version 4.0: Source distribution</A> (1.64 MB tar/gzipped)<BR> <A HREF="http://www-ccrma.stanford.edu/software/stk/release/stk-4.1.tar.gz">STK Version 4.1: Source distribution</A> (1.2 MB tar/gzipped)<BR>
<A HREF="Release/stk-4.0.binaries.tar.gz">STK Version 4.0: Source distribution with precompiled windows binaries</A> (2.26 MB tar/gzipped)<BR> <A HREF="http://www-ccrma.stanford.edu/software/stk/release/stk-4.1.binaries.tar.gz">STK Version 4.1: Source distribution with precompiled windows binaries</A> (1.7 MB tar/gzipped)<BR>
<P> <A HREF="http://www-ccrma.stanford.edu/software/stk/release/stk-4.1-1.i386.rpm">STK Version 4.1: Linux RPM using ALSA API</A> (1.2 MB)<BR>
<A HREF="http://www-ccrma.stanford.edu/software/stk/release/stkmanual.pdf">STK Manual (PDF)</A> (1.2 MB) Note: HTML version in /doc/html/ directory of distribution<BR>
\section notes Release Notes: <P>
\subsection v4 Version 4.0 \section notes Release Notes:
<UL> \subsection v4dot1 Version 4.1
<LI>New documentation and tutorial.</LI>
<LI>Several new instruments, including Saxofony, BlowBotl, and StifKarp.</LI> <UL>
<LI>New Stk base class, replacing Object class.</LI> <LI>Macintosh OS X support added.</LI>
<LI>New Filter class structure and methods.</LI> <LI>New Whistle class.</LI>
<LI>Extensive modifications to WvIn and WvOut class structures and methods.</LI> <LI>Added Voicer, SingWave, and VoicForm classes.</LI>
<LI>Looping functionality moved to WaveLoop (subclass of WvIn).</LI> <LI>Improvements/fixes to the banded waveguide instruments.</LI>
<LI>Automatic file type detection in WvIn ... hosed WavWvIn, AifWvIn, RawWavIn, SndWavIn, and MatWvIn subclasses.</LI> <LI>Demo program now uses Voicer, allowing polyphony.</LI>
<LI>New file type specifier argument in WvOut ... hosed WavWvOut, AifWvOut, RawWavOut, SndWavOut, and MatWvOut subclasses.</LI> <LI>Demo tcl/tk scripts changed to use SKINI PitchChange instead of PitchBend.</LI>
<LI>Some simplifications of Messager class (was Controller).</LI> <LI>Demo program response to PitchBend modified to octave up/down.</LI>
<LI>New independent RtAudio class.</LI> <LI>Several RtAudio fixes and improvements (OS X and Windows ASIO support added).</LI>
<LI>Extensive revisions in code and a significant number of API changes.</LI> <LI>Added nextOut() method to Delay classes.</LI>
</UL> <LI>Documentation fixes for Reverb classes.</LI>
<LI>RAWWAVE_PATH changed to include the "rawwave" directory.</LI>
\subsection v3dot2 Version 3.2 <LI>"configure" support added for unix systems.</LI>
<LI>Multivoice flag (-n NUMBER) added as command line option to demo program.</LI>
<UL> <LI>Sample rate flag added as command line option to example programs.</LI>
<LI>New input control handling class (Controller)</LI> <LI>Socket port number added as command line option to example programs.</LI>
<LI>Added AIFF file input/output support.</LI>
<LI>New C++ error handling capabilities.</LI> </UL>
<LI>New input/output internet streaming support (StrmWvIn/StrmWvOut).</LI>
<LI>Added native ALSA support for linux.</LI> \subsection v4 Version 4.0
<LI>Added optional "device" argument to all "Rt" classes (audio and MIDI) and printout of devices when argument is invalid.</LI>
<LI>WvIn classes rewritten to support very big files (incremental load from disk).</LI> <UL>
<LI>Changed WvIn/WvOut classes to work with sample frame buffers.</LI> <LI>New documentation and tutorial.</LI>
<LI>Fixed looping and negative rate calculations in WvIn classes.</LI> <LI>Several new instruments, including Saxofony, BlowBotl, and StifKarp.</LI>
<LI>Fixed interpolation bug in RtWvIn.</LI> <LI>New Stk base class, replacing Object class.</LI>
<LI>Windoze RtAudio code rewritten (thank Dave!).</LI> <LI>New Filter class structure and methods.</LI>
<LI>Simplified byte-swapping functions (in-place swapping).</LI> <LI>Extensive modifications to WvIn and WvOut class structures and methods.</LI>
<LI>"Stereo-ized" RagaMatic.</LI> <LI>Looping functionality moved to WaveLoop (subclass of WvIn).</LI>
<LI>Miscellaneous renamings.</LI> <LI>Automatic file type detection in WvIn ... hosed WavWvIn, AifWvIn, RawWavIn, SndWavIn, and MatWvIn subclasses.</LI>
<LI>Probably a bunch more fixes that I've long since forgotten about.</LI> <LI>New file type specifier argument in WvOut ... hosed WavWvOut, AifWvOut, RawWavOut, SndWavOut, and MatWvOut subclasses.</LI>
</UL> <LI>Some simplifications of Messager class (was Controller).</LI>
<LI>New independent RtAudio class.</LI>
\subsection v3dot1 Version 3.1 <LI>Extensive revisions in code and a significant number of API changes.</LI>
</UL>
<UL>
<LI>New RagaMatic project ... very cool!!!</LI> \subsection v3dot2 Version 3.2
<LI>Less clipping in the Shakers class.</LI>
<LI>Added "microphone position" to Mandolin in STKdemo.</LI> <UL>
<LI>Fixed MIDI system message exclusion under Irix.</LI> <LI>New input control handling class (Controller)</LI>
<LI>Added a few bitmaps for the Shaker instruments.</LI> <LI>Added AIFF file input/output support.</LI>
<LI>Made destructors virtual for Reverb.h, WvIn.h and Simple.h.</LI> <LI>New C++ error handling capabilities.</LI>
<LI>Fixed bug setting delay length in DLineA when value too big.</LI> <LI>New input/output internet streaming support (StrmWvIn/StrmWvOut).</LI>
<LI>Fixed bug in WinMM realtime code (RTSoundIO).</LI> <LI>Added native ALSA support for linux.</LI>
<LI>Added tick() method to BowTabl, JetTabl, and ReedTabl (same as lookup).</LI> <LI>Added optional "device" argument to all "Rt" classes (audio and MIDI) and printout of devices when argument is invalid.</LI>
<LI>Switched to pthread API on SGI platforms.</LI> <LI>WvIn classes rewritten to support very big files (incremental load from disk).</LI>
<LI>Added some defines to Object.h for random number generation, FPU overflow checking, etc....</LI> <LI>Changed WvIn/WvOut classes to work with sample frame buffers.</LI>
<LI>A few minor changes, some bug fixes ... can't remember all of them.</LI> <LI>Fixed looping and negative rate calculations in WvIn classes.</LI>
</UL> <LI>Fixed interpolation bug in RtWvIn.</LI>
<LI>Windoze RtAudio code rewritten (thank Dave!).</LI>
\subsection v3 Version 3.0 <LI>Simplified byte-swapping functions (in-place swapping).</LI>
<LI>"Stereo-ized" RagaMatic.</LI>
<UL> <LI>Miscellaneous renamings.</LI>
<LI>New #define flags for OS and realtime dependencies (this will probably cause problems for old personal STK code, but it was necessary to make future ports easier).</LI> <LI>Probably a bunch more fixes that I've long since forgotten about.</LI>
<LI>Expanded and cleaned the Shakers class.</LI> </UL>
<LI>New BowedBar algorithm/class.</LI>
<LI>Fixed Linux MIDI input bug.</LI> \subsection v3dot1 Version 3.1
<LI>Fixed MIDI status masking problem in Windows.</LI>
<LI>OS type defines now in Makefile.</LI> <UL>
<LI>New RAWWAVE_PATH define in Object.h.</LI> <LI>New RagaMatic project ... very cool!!!</LI>
<LI>Syntmono project pulled out to separate directory and cleaned up.</LI> <LI>Less clipping in the Shakers class.</LI>
<LI>Socketing capabilities under Unix, as well as Windoze.</LI> <LI>Added "microphone position" to Mandolin in STKdemo.</LI>
<LI>Multiple simultaneous socket client connections to STK servers now possible.</LI> <LI>Fixed MIDI system message exclusion under Irix.</LI>
<LI>MD2SKINI now can merge MIDI and piped messages under Irix and Linux (for TCL->MD2SKINI->syntmono control).</LI> <LI>Added a few bitmaps for the Shaker instruments.</LI>
<LI>Defined INT16 and INT32 types and fixed various WvIn and WvOut classes.</LI> <LI>Made destructors virtual for Reverb.h, WvIn.h and Simple.h.</LI>
<LI>Updated MatWvIn and MatWvOut for new MAT-file documentation from Matlab.</LI> <LI>Fixed bug setting delay length in DLineA when value too big.</LI>
<LI>New demo Tcl/Tk GUI (TclDemo.tcl).</LI> <LI>Fixed bug in WinMM realtime code (RTSoundIO).</LI>
<LI>Minor fixes to FM behavior.</LI> <LI>Added tick() method to BowTabl, JetTabl, and ReedTabl (same as lookup).</LI>
<LI>Added record/duplex capabilities to RTSoundIO (Linux, SGI, and Windoze).</LI> <LI>Switched to pthread API on SGI platforms.</LI>
<LI>Fixed bugs in WavWvOut and MatWvOut header specifications.</LI> <LI>Added some defines to Object.h for random number generation, FPU overflow checking, etc....</LI>
<LI>Added RawWvOut class.</LI> <LI>A few minor changes, some bug fixes ... can't remember all of them.</LI>
<LI>New WvIn class with RawWvIn, SndWvIn, WavWvIn, MatWvIn, and RTWvIn subclasses.</LI> </UL>
<LI>Removed RawWave, RawShot, RawInterp, and RawLoop classes (supplanted by RawWvIn).</LI>
<LI>Multi-channel data support in WvIn and WvOut classes using MY_MULTI data type (pointer to MY_FLOAT) and the methods mtick() and mlastOutput().</LI> \subsection v3 Version 3.0
<LI>Now writing to primary buffer under Windoze when allowed by hardware.</LI>
<LI>Cleaned up Object.h a bit.</LI> <UL>
<LI>Pulled various utility and thread functions out of syntmono.cpp (to aid readability of the code).</LI> <LI>New #define flags for OS and realtime dependencies (this will probably cause problems for old personal STK code, but it was necessary to make future ports easier).</LI>
</UL> <LI>Expanded and cleaned the Shakers class.</LI>
<LI>New BowedBar algorithm/class.</LI>
\subsection v2dot02 Version 2.02 <LI>Fixed Linux MIDI input bug.</LI>
<LI>Fixed MIDI status masking problem in Windows.</LI>
<UL> <LI>OS type defines now in Makefile.</LI>
<LI>Created RawWave abstract class, with subclasses of RawLoop (looping rawwave oscillator), RawShot (non-looping, non-interpolating rawwave player ... used to be RawWvIn), and RawInterp (looping or non-looping, interpolating rawwave player ... used to be RawWave).</LI> <LI>New RAWWAVE_PATH define in Object.h.</LI>
<LI>Modified DrumSynt to correctly handle sample rates different than 22050 Hz.</LI> <LI>Syntmono project pulled out to separate directory and cleaned up.</LI>
<LI>Modified syntmono parsing vs. tick routine so that some ticking occurs between each message. When multiple messages are waiting to be processed, the time between message updates is inversely proportional to the number of messages in the buffer.</LI> <LI>Socketing capabilities under Unix, as well as Windoze.</LI>
<LI>Fixed DirectSound playback bug in WinXX distribution. Sound was being played at 8-bit, 22 kHz in all cases. Playback is now 16-bit and dependent on SRATE.</LI> <LI>Multiple simultaneous socket client connections to STK servers now possible.</LI>
<LI>Fixed bug in MD2SKINI which prevented some NoteOff statements from being output.</LI> <LI>MD2SKINI now can merge MIDI and piped messages under Irix and Linux (for TCL->MD2SKINI->syntmono control).</LI>
<LI>This distribution includes an example STK project, mus151, which demonstrates a means for keeping a user's personal projects separate from the main distribution. This is highly recommended, in order to simplify upgrades to future STK releases.</LI> <LI>Defined INT16 and INT32 types and fixed various WvIn and WvOut classes.</LI>
</UL> <LI>Updated MatWvIn and MatWvOut for new MAT-file documentation from Matlab.</LI>
<LI>New demo Tcl/Tk GUI (TclDemo.tcl).</LI>
\subsection v2 Version 2 <LI>Minor fixes to FM behavior.</LI>
<LI>Added record/duplex capabilities to RTSoundIO (Linux, SGI, and Windoze).</LI>
<UL> <LI>Fixed bugs in WavWvOut and MatWvOut header specifications.</LI>
<LI>Unification of the capabilities of STK across the various platforms. All of the previous SGI functionality has been ported to Linux and Windows, including realtime sound output and MIDI input.</LI> <LI>Added RawWvOut class.</LI>
<LI>MIDI input (with optional time-stamping) supported on SGI, Linux (OSS device drivers only), and Windows operating systems. Time stamping under IRIX and Windows is quantized to milliseconds and under Linux to hundredths of a second.</LI> <LI>New WvIn class with RawWvIn, SndWvIn, WavWvIn, MatWvIn, and RTWvIn subclasses.</LI>
<LI>Various Sound Output Options - .wav, .snd, and .mat (Matlab MAT-file) soundfile outputs are supported on all operating systems. I hacked out the MAT-file structure, so you don't have to include any platform-specific libraries. Realtime sound output is provided as well, except under NeXTStep. </LI> <LI>Removed RawWave, RawShot, RawInterp, and RawLoop classes (supplanted by RawWvIn).</LI>
<LI>Multiple Reverberator Implementations - Reverb subclasses of JCRev and NRev (popular reverberator implementations from CCRMA) have been written. Perry's original reverb implementation still exists as PRCRev. All reverberators now take a T60 initializer argument.</LI> <LI>Multi-channel data support in WvIn and WvOut classes using MY_MULTI data type (pointer to MY_FLOAT) and the methods mtick() and mlastOutput().</LI>
<LI>MD2SKINI - A program which parses a MIDI input stream and spits out SKINI code. The output of MD2SKINI is typically piped into an STK instrument executable (eg. <FONT FACE="Geneva">MD2SKINI | syntmono Clarinet -r -i</FONT>). In addition, you can supply a filename argument to MD2SKINI and have it simultaneously record a SKINI score file for future reuse. <LI>Now writing to primary buffer under Windoze when allowed by hardware.</LI>
<LI>Modifications to <I>Object.h</I> for OS_TYPE compilation dependencies. <I>Makefile</I> automatically determines OS_TYPE when invoked (if you have the GNU makefile utilities installed on your system). <LI>Cleaned up Object.h a bit.</LI>
<LI>A single distribution for all platforms. The Unix and Windows versions have been merged into a single set of classes. Makefiles and Visual C++ workspace/project files are provided for compiling. <LI>Pulled various utility and thread functions out of syntmono.cpp (to aid readability of the code).</LI>
</UL> </UL>
*/ \subsection v2dot02 Version 2.02
<UL>
<LI>Created RawWave abstract class, with subclasses of RawLoop (looping rawwave oscillator), RawShot (non-looping, non-interpolating rawwave player ... used to be RawWvIn), and RawInterp (looping or non-looping, interpolating rawwave player ... used to be RawWave).</LI>
<LI>Modified DrumSynt to correctly handle sample rates different than 22050 Hz.</LI>
<LI>Modified syntmono parsing vs. tick routine so that some ticking occurs between each message. When multiple messages are waiting to be processed, the time between message updates is inversely proportional to the number of messages in the buffer.</LI>
<LI>Fixed DirectSound playback bug in WinXX distribution. Sound was being played at 8-bit, 22 kHz in all cases. Playback is now 16-bit and dependent on SRATE.</LI>
<LI>Fixed bug in MD2SKINI which prevented some NoteOff statements from being output.</LI>
<LI>This distribution includes an example STK project, mus151, which demonstrates a means for keeping a user's personal projects separate from the main distribution. This is highly recommended, in order to simplify upgrades to future STK releases.</LI>
</UL>
\subsection v2 Version 2
<UL>
<LI>Unification of the capabilities of STK across the various platforms. All of the previous SGI functionality has been ported to Linux and Windows, including realtime sound output and MIDI input.</LI>
<LI>MIDI input (with optional time-stamping) supported on SGI, Linux (OSS device drivers only), and Windows operating systems. Time stamping under IRIX and Windows is quantized to milliseconds and under Linux to hundredths of a second.</LI>
<LI>Various Sound Output Options - .wav, .snd, and .mat (Matlab MAT-file) soundfile outputs are supported on all operating systems. I hacked out the MAT-file structure, so you don't have to include any platform-specific libraries. Realtime sound output is provided as well, except under NeXTStep. </LI>
<LI>Multiple Reverberator Implementations - Reverb subclasses of JCRev and NRev (popular reverberator implementations from CCRMA) have been written. Perry's original reverb implementation still exists as PRCRev. All reverberators now take a T60 initializer argument.</LI>
<LI>MD2SKINI - A program which parses a MIDI input stream and spits out SKINI code. The output of MD2SKINI is typically piped into an STK instrument executable (eg. <FONT FACE="Geneva">MD2SKINI | syntmono Clarinet -r -i</FONT>). In addition, you can supply a filename argument to MD2SKINI and have it simultaneously record a SKINI score file for future reuse.
<LI>Modifications to <I>Object.h</I> for OS_TYPE compilation dependencies. <I>Makefile</I> automatically determines OS_TYPE when invoked (if you have the GNU makefile utilities installed on your system).
<LI>A single distribution for all platforms. The Unix and Windows versions have been merged into a single set of classes. Makefiles and Visual C++ workspace/project files are provided for compiling.
</UL>
*/

View File

@@ -1,9 +1,9 @@
<HR> <HR>
<table> <table>
<tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr> <tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr>
<tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr> <tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr>
</table> </table>
</BODY> </BODY>
</HTML> </HTML>

View File

@@ -1,10 +1,10 @@
<HTML> <HTML>
<HEAD> <HEAD>
<TITLE>The Synthesis ToolKit in C++ (STK)</TITLE> <TITLE>The Synthesis ToolKit in C++ (STK)</TITLE>
<LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css"> <LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css">
</HEAD> </HEAD>
<BODY BGCOLOR="#FFFFFF"> <BODY BGCOLOR="#FFFFFF">
<CENTER> <CENTER>
<img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P> <img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P>
<a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER> <a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="links.html">Links</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER>
<HR> <HR>

View File

@@ -1,15 +1,16 @@
/*! \mainpage <I>The Synthesis ToolKit in C++ (STK)</I> /*! \mainpage <I>The Synthesis ToolKit in C++ (STK)</I>
<BODY BGCOLOR="white"> <BODY BGCOLOR="white">
The <B>Synthesis ToolKit in C++ (STK)</B> is a set of audio signal processing and synthesis classes and algorithms written in C++. You can use these classes to create programs that make sounds with a variety of synthesis techniques. This is not a terribly novel concept, except that the Synthesis ToolKit is extremely portable (it's mostly platform-independent C and C++ code), and it's completely user-extensible (no libraries, no hidden drivers, and all source code is included). We like to think that this increases the chances that our programs will still work in another 5-10 years. In fact, the ToolKit has been working continuously for nearly 8 years now. STK currently runs with "realtime" support (audio and MIDI) on SGI (Irix), Linux, and Windows computer platforms. Generic, non-realtime support has been tested under NeXTStep, Sun, and other platforms and should work with any standard C++ compiler. The <B>Synthesis ToolKit in C++ (STK)</B> is a set of audio signal processing and synthesis classes and algorithms written in C++. You can use these classes to create programs that make sounds with a variety of synthesis techniques. This is not a terribly novel concept, except that the Synthesis ToolKit is extremely portable (it's mostly platform-independent C and C++ code), and it's completely user-extensible (no libraries, no hidden drivers, and all source code is included). We like to think that this increases the chances that our programs will still work in another 5-10 years. In fact, the ToolKit has been working continuously for nearly 8 years now. STK currently runs with "realtime" support (audio and MIDI) on SGI (Irix), Linux, and Windows computer platforms. Generic, non-realtime support has been tested under NeXTStep, Sun, and other platforms and should work with any standard C++ compiler.
- \ref information - \ref information
- \ref classes - \ref classes
- \ref download - \ref download
- \ref usage - \ref usage
- \ref maillist - \ref maillist
- \ref system - \ref system
- \ref tutorial - \ref links
- \ref tutorial
*/
*/

View File

@@ -1,50 +1,50 @@
/*! \page information General Information /*! \page information General Information
<H3>References</H3> <H3>References</H3>
<UL> <UL>
<LI><A HREF="Papers/stkicmc99.pdf">ICMC99 Paper</A></LI> <LI><A HREF="Papers/stkicmc99.pdf">ICMC99 Paper</A></LI>
<BR> <BR>
A somewhat recent paper by Perry and Gary about the Synthesis ToolKit in C++. A somewhat recent paper by Perry and Gary about the Synthesis ToolKit in C++.
<P> <P>
<LI><A HREF="Papers/STKsiggraph96.pdf">SIGGRAPH96 Paper</A></LI> <LI><A HREF="Papers/STKsiggraph96.pdf">SIGGRAPH96 Paper</A></LI>
<BR> <BR>
A not-so-recent paper by Perry about the Synthesis ToolKit in C++. A not-so-recent paper by Perry about the Synthesis ToolKit in C++.
<P> <P>
<LI><A HREF="http://www.cs.princeton.edu/~prc/NewWork.html#STK">Perry's STK Web Page</A></LI> <LI><A HREF="http://www.cs.princeton.edu/~prc/NewWork.html#STK">Perry's STK Web Page</A></LI>
<BR> <BR>
This is a link to Perry Cook's STK Web page. He has information about the \ref skini, the protocol used to control STK instruments, as well as a lot of other cool stuff. This is a link to Perry Cook's STK Web page. He has information about the \ref skini, the protocol used to control STK instruments, as well as a lot of other cool stuff.
</UL> </UL>
<H4>What is the <I>Synthesis ToolKit</I>?</H4> <H4>What is the <I>Synthesis ToolKit</I>?</H4>
The Synthesis ToolKit in C++ (STK) is a set of audio signal processing and synthesis classes and algorithms written in C++. You can use these classes to create programs that make sounds with a variety of synthesis techniques. This is not a terribly novel concept, except that the Synthesis ToolKit is extremely portable (it's mostly platform-independent C and C++ code), and it's completely user-extensible (no libraries, no hidden drivers, and all source code is included). We like to think that this increases the chances that our programs will still work in another 5-10 years. In fact, the ToolKit has been working continuously for nearly 8 years now. STK currently runs with "realtime" support (audio and MIDI) on SGI (Irix), Linux, and Windows computer platforms. Generic, non-realtime support has been tested under NeXTStep, Sun, and other platforms and should work with any standard C++ compiler. The Synthesis ToolKit in C++ (STK) is a set of audio signal processing and synthesis classes and algorithms written in C++. You can use these classes to create programs that make sounds with a variety of synthesis techniques. This is not a terribly novel concept, except that the Synthesis ToolKit is extremely portable (it's mostly platform-independent C and C++ code), and it's completely user-extensible (no unusual libraries, no hidden drivers, and all source code is included). We like to think that this increases the chances that our programs will still work in another 5-10 years. In fact, the ToolKit has been working continuously for nearly 8 years now. STK currently runs with "realtime" support (audio and MIDI) on SGI (Irix), Linux, Macintosh OS X, and Windows computer platforms. Generic, non-realtime support has been tested under NeXTStep, Sun, and other platforms and should work with any standard C++ compiler.
The Synthesis ToolKit is free for non-commercial use. The only parts of the Synthesis ToolKit that are platform-dependent concern real-time audio and MIDI input and output, and that is taken care of with a few special classes. The interface for MIDI input and the simple <A HREF="http://dev.scriptics.com">Tcl/Tk</A> graphical user interfaces (GUIs) provided is the same, so it's easy to experiment in real time using either the GUIs or MIDI. The Synthesis ToolKit can generate simultaneous SND (AU), WAV, AIFF, and MAT-file output soundfile formats (as well as realtime sound output), so you can view your results using one of a large variety of sound/signal analysis tools already available (e.g. <A HREF="http://www-ccrma.stanford.edu/software/snd/">Snd</A>, Cool Edit, Matlab). The Synthesis ToolKit is free for non-commercial use. The only parts of the Synthesis ToolKit that are platform-dependent concern real-time audio and MIDI input and output, and that is taken care of with a few special classes. The interface for MIDI input and the simple <A HREF="http://dev.scriptics.com">Tcl/Tk</A> graphical user interfaces (GUIs) provided is the same, so it's easy to experiment in real time using either the GUIs or MIDI. The Synthesis ToolKit can generate simultaneous SND (AU), WAV, AIFF, and MAT-file output soundfile formats (as well as realtime sound output), so you can view your results using one of a large variety of sound/signal analysis tools already available (e.g. <A HREF="http://www-ccrma.stanford.edu/software/snd/">Snd</A>, Cool Edit, Matlab).
<H4>What the <I>Synthesis ToolKit</I> is not.</H4> <H4>What the <I>Synthesis ToolKit</I> is not.</H4>
The Synthesis Toolkit is not one particular program. Rather, it is a set of C++ classes that you can use to create your own programs. A few example applications are provided to demonstrate some of the ways to use the classes. If you have specific needs, you will probably have to either modify the example programs or write a new program altogether. Further, the example programs don't have a fancy GUI wrapper. If you feel the need to have a "drag and drop" graphical patching GUI, you probably don't want to use the ToolKit. Spending hundreds of hours making platform-dependent graphics code would go against one of the fundamental design goals of the ToolKit - platform independence. The Synthesis Toolkit is not one particular program. Rather, it is a set of C++ classes that you can use to create your own programs. A few example applications are provided to demonstrate some of the ways to use the classes. If you have specific needs, you will probably have to either modify the example programs or write a new program altogether. Further, the example programs don't have a fancy GUI wrapper. If you feel the need to have a "drag and drop" graphical patching GUI, you probably don't want to use the ToolKit. Spending hundreds of hours making platform-dependent graphics code would go against one of the fundamental design goals of the ToolKit - platform independence.
For those instances where a simple GUI with sliders and buttons is helpful, we use <A HREF="http://dev.scriptics.com">Tcl/Tk</A> (which is freely distributed for all the supported ToolKit platforms). A number of Tcl/Tk GUI scripts are distributed with the ToolKit release. For control, the Synthesis Toolkit uses raw MIDI (on supported platforms), and SKINI (Synthesis ToolKit Instrument Network Interface, a MIDI-like text message synthesis control format). For those instances where a simple GUI with sliders and buttons is helpful, we use <A HREF="http://dev.scriptics.com">Tcl/Tk</A> (which is freely distributed for all the supported ToolKit platforms). A number of Tcl/Tk GUI scripts are distributed with the ToolKit release. For control, the Synthesis Toolkit uses raw MIDI (on supported platforms), and SKINI (Synthesis ToolKit Instrument Network Interface, a MIDI-like text message synthesis control format).
<H4>A brief history of the <I>Synthesis ToolKit in C++.</I></H4> <H4>A brief history of the <I>Synthesis ToolKit in C++.</I></H4>
Perry Cook began developing a pre-cursor to the Synthesis ToolKit (also called STK) under NeXTStep at the Center for Computer Research in Music and Acoustics (CCRMA) at Stanford University in the early-1990s. With his move to Princeton University in 1996, he ported everything to C++ on SGI hardware, added real-time capabilities, and greatly expanded the synthesis techniques available. With the help of Bill Putnam, Perry also made a port of STK to Windows95. Gary Scavone began using STK extensively in the summer of 1997 and completed a full port of STK to Linux early in 1998. He finished the fully compatable Windows port (using Direct Sound API) in June 1998. Numerous improvements and extensions have been made since then. Perry Cook began developing a pre-cursor to the Synthesis ToolKit (also called STK) under NeXTStep at the Center for Computer Research in Music and Acoustics (CCRMA) at Stanford University in the early-1990s. With his move to Princeton University in 1996, he ported everything to C++ on SGI hardware, added real-time capabilities, and greatly expanded the synthesis techniques available. With the help of Bill Putnam, Perry also made a port of STK to Windows95. Gary Scavone began using STK extensively in the summer of 1997 and completed a full port of STK to Linux early in 1998. He finished the fully compatable Windows port (using Direct Sound API) in June 1998. Numerous improvements and extensions have been made since then.
The Toolkit has been distributed continuously since 1996 via the <A HREF="http://www.music.princeton.edu/psk">Princeton Sound Kitchen</A>, <A HREF="http://www.cs.princeton.edu/~prc">Perry Cook's home page</A> at Princeton, <A HREF="http://www-ccrma.stanford.edu/~gary/">Gary Scavone's home page</A> at Stanford's Center for Computer Research in Music and Acoustics (CCRMA), and the <A HREF="http://www-ccrma.stanford.edu/software/stk">Synthesis ToolKit home page</A>. The ToolKit has been in included in various collections of software. Much of it has also been ported to MAX/MSP on Macintosh computers by Dan Trueman and Luke Dubois of Columbia University, and is distributed as <A HREF="http://music.columbia.edu/PeRColate">PeRColate</A>. Help on real-time sound and MIDI has been provided by Tim Stilson, Bill Putnam, and Gabriel Maldonado. The Toolkit has been distributed continuously since 1996 via the <A HREF="http://www.music.princeton.edu/psk">Princeton Sound Kitchen</A>, <A HREF="http://www.cs.princeton.edu/~prc">Perry Cook's home page</A> at Princeton, <A HREF="http://www-ccrma.stanford.edu/~gary/">Gary Scavone's home page</A> at Stanford's Center for Computer Research in Music and Acoustics (CCRMA), and the <A HREF="http://www-ccrma.stanford.edu/software/stk">Synthesis ToolKit home page</A>. The ToolKit has been in included in various collections of software. Much of it has also been ported to MAX/MSP on Macintosh computers by Dan Trueman and Luke Dubois of Columbia University, and is distributed as <A HREF="http://music.columbia.edu/PeRColate">PeRColate</A>. Help on real-time sound and MIDI has been provided by Tim Stilson, Bill Putnam, and Gabriel Maldonado.
<H4>Legal and Ethical Notes</H4> <H4>Legal and Ethical Notes</H4>
This software was designed and created to be made publicly available for free, primarily for academic purposes, so if you use it, pass it on with this documentation, and for free. If you make a million dollars with it, give us some. If you make compositions with it, put us in the program notes. This software was designed and created to be made publicly available for free, primarily for academic purposes, so if you use it, pass it on with this documentation, and for free. If you make a million dollars with it, give us some. If you make compositions with it, put us in the program notes.
<P> <P>
Some of the concepts are covered by various patents, some known to us and likely others which are unknown. Many of the ones known to us are administered by the Stanford Office of Technology and Licensing. The good news is that large hunks of the techniques used here are public domain. To avoid subtle legal issues, we will not state what's freely useable here, but we will try to note within the various classes where certain things are likely to be protected by patents. Some of the concepts are covered by various patents, some known to us and likely others which are unknown. Many of the ones known to us are administered by the Stanford Office of Technology and Licensing. The good news is that large hunks of the techniques used here are public domain. To avoid subtle legal issues, we will not state what's freely useable here, but we will try to note within the various classes where certain things are likely to be protected by patents.
<H4>Disclaimer</H4> <H4>Disclaimer</H4>
STK is free and we do not guarantee anything. We've been hacking on this code for a while now and most of it seems to work pretty well. But, there surely are some bugs floating around. Sometimes things work fine on one computer platform but not so fine on another. FPU overflows and underflows cause <I>very</I> weird behavior which also depends on the particular CPU and OS. Let us know about bugs you find and we'll do our best to correct them. STK is free and we do not guarantee anything. We've been hacking on this code for a while now and most of it seems to work pretty well. But, there surely are some bugs floating around. Sometimes things work fine on one computer platform but not so fine on another. FPU overflows and underflows cause <I>very</I> weird behavior which also depends on the particular CPU and OS. Let us know about bugs you find and we'll do our best to correct them.
*/ */

11
doc/doxygen/links.txt Normal file
View File

@@ -0,0 +1,11 @@
/*! \page links Miscellaneous Links
- <A HREF="http://www-ccrma.stanford.edu/~gary/rtaudio/">The RtAudio WWW site</A>
- <A HREF="http://kern.humdrum.net/">Kern Scores: A Library of Electronic Musical Scores</A> (with automatic conversion to SKINI format)
- <A HREF="http://www.music.columbia.edu/PeRColate/">PeRColate: A Port of STK for Max/MSP</A>
- <A HREF="http://mathmorphs.swiki.net/32/">A Partial Port of STK to Squeak</A>
*/

View File

@@ -1,12 +1,12 @@
/*! \page maillist The Mail List /*! \page maillist The Mail List
An <A HREF="mailto:stk-request@ccrma.stanford.edu">STK</A> mailing list has been set up to facilitate communication among STK users. Subscribing to this list is your best way of keeping on top of new releases, bug fixes, and various user developments. An <A HREF="mailto:stk-request@ccrma.stanford.edu">STK</A> mailing list has been set up to facilitate communication among STK users. Subscribing to this list is your best way of keeping on top of new releases, bug fixes, and various user developments.
<P> <P>
To join send a message to <A HREF="mailto:stk-request@ccrma.stanford.edu">&lt;stk-request@ccrma.stanford.edu&gt;</A> To join send a message to <A HREF="mailto:stk-request@ccrma.stanford.edu">&lt;stk-request@ccrma.stanford.edu&gt;</A>
with the contents: <TT>subscribe</TT> with the contents: <TT>subscribe</TT>
<P> <P>
To be removed from the list send a message to <A HREF="mailto:stk-request@ccrma.stanford.edu">&lt;stk-request@ccrma.stanford.edu&gt;</A> To be removed from the list send a message to <A HREF="mailto:stk-request@ccrma.stanford.edu">&lt;stk-request@ccrma.stanford.edu&gt;</A>
with the contents: <TT>unsubscribe</TT> with the contents: <TT>unsubscribe</TT>
*/ */

View File

@@ -1,218 +1,218 @@
/*! \page skini Synthesis toolKit Instrument Network Interface (SKINI) /*! \page skini Synthesis toolKit Instrument Network Interface (SKINI)
This describes the latest (version 1.1) implementation of SKINI for the Synthesis Toolkit in C++ (STK) by Perry R. Cook. This describes the latest (version 1.1) implementation of SKINI for the Synthesis Toolkit in C++ (STK) by Perry R. Cook.
\code \code
Too good to be true? Too good to be true?
Have control and read it too? Have control and read it too?
A SKINI haiku. A SKINI haiku.
\endcode \endcode
Profound thanks to Dan Trueman, Brad Garton, and Gary Scavone for input on this revision. Thanks also to MIDI, the NeXT MusicKit, ZIPI and all the creators and modifiers of these for good bases upon/from which to build and depart. Profound thanks to Dan Trueman, Brad Garton, and Gary Scavone for input on this revision. Thanks also to MIDI, the NeXT MusicKit, ZIPI and all the creators and modifiers of these for good bases upon/from which to build and depart.
\section compatibility MIDI Compatibility \section compatibility MIDI Compatibility
SKINI was designed to be MIDI compatible wherever possible, and extend MIDI in incremental, then maybe profound ways. SKINI was designed to be MIDI compatible wherever possible, and extend MIDI in incremental, then maybe profound ways.
Differences from MIDI, and motivations, include: Differences from MIDI, and motivations, include:
- Text-based messages are used, with meaningful names wherever possible. This allows any language or system capable of formatted printing to generate SKINI. Similarly, any system capable of reading in a string and turning delimited fields into strings, floats, and ints can consume SKINI for control. More importantly, humans can actually read, and even write if they want, SKINI files and streams. Use an editor and search/replace or macros to change a channel or control number. Load a SKINI score into a spread sheet to apply transformations to time, control parameters, MIDI velocities, etc. Put a monkey on a special typewriter and get your next great work. Life's too short to debug bit/nybble packed variable length mumble messages. Disk space gets cheaper, available bandwidth increases, music takes up so little space and bandwidth compared to video and grapics. Live a little. - Text-based messages are used, with meaningful names wherever possible. This allows any language or system capable of formatted printing to generate SKINI. Similarly, any system capable of reading in a string and turning delimited fields into strings, floats, and ints can consume SKINI for control. More importantly, humans can actually read, and even write if they want, SKINI files and streams. Use an editor and search/replace or macros to change a channel or control number. Load a SKINI score into a spread sheet to apply transformations to time, control parameters, MIDI velocities, etc. Put a monkey on a special typewriter and get your next great work. Life's too short to debug bit/nybble packed variable length mumble messages. Disk space gets cheaper, available bandwidth increases, music takes up so little space and bandwidth compared to video and grapics. Live a little.
- Floating point numbers are used wherever possible. Note Numbers, Velocities, Controller Values, and Delta and Absolute Times are all represented and scanned as ASCII double-precision floats. MIDI byte values are preserved, so that incoming MIDI bytes from an interface can be put directly into SKINI messages. 60.0 or 60 is middle C, 127.0 or 127 is maximum velocity etc. But, unlike MIDI, 60.5 can cause a 50cent sharp middle C to be played. As with MIDI byte values like velocity, use of the integer and SKINI-added fractional parts is up to the implementor of the algorithm being controlled by SKINI messages. But the extra precision is there to be used or ignored. - Floating point numbers are used wherever possible. Note Numbers, Velocities, Controller Values, and Delta and Absolute Times are all represented and scanned as ASCII double-precision floats. MIDI byte values are preserved, so that incoming MIDI bytes from an interface can be put directly into SKINI messages. 60.0 or 60 is middle C, 127.0 or 127 is maximum velocity etc. But, unlike MIDI, 60.5 can cause a 50cent sharp middle C to be played. As with MIDI byte values like velocity, use of the integer and SKINI-added fractional parts is up to the implementor of the algorithm being controlled by SKINI messages. But the extra precision is there to be used or ignored.
\section why Why SKINI? \section why Why SKINI?
SKINI was designed to be extensable and hackable for a number of applications: imbedded synthesis in a game or VR simulation, scoring and mixing tasks, real-time and non-real time applications which could benefit from controllable sound synthesis, JAVA controlled synthesis, or eventually maybe JAVA synthesis, etc. SKINI is not intended to be "the mother of scorefiles," but since the entire system is based on text representations of names, floats, and ints, converters from one scorefile language to SKINI, or back, should be easily created. SKINI was designed to be extensable and hackable for a number of applications: imbedded synthesis in a game or VR simulation, scoring and mixing tasks, real-time and non-real time applications which could benefit from controllable sound synthesis, JAVA controlled synthesis, or eventually maybe JAVA synthesis, etc. SKINI is not intended to be "the mother of scorefiles," but since the entire system is based on text representations of names, floats, and ints, converters from one scorefile language to SKINI, or back, should be easily created.
I am basically a bottom-up designer with an awareness of top-down design ideas, so SKINI above all reflects the needs of my particular research and creative projects as they have arisen and developed. SKINI 1.1 represents a profound advance beyond versions 0.8 and 0.9 (the first versions), future SKINI's might reflect some changes. Compatibility with prior scorefiles will be attempted, but there aren't that many scorefiles out there yet. I am basically a bottom-up designer with an awareness of top-down design ideas, so SKINI above all reflects the needs of my particular research and creative projects as they have arisen and developed. SKINI 1.1 represents a profound advance beyond versions 0.8 and 0.9 (the first versions), future SKINI's might reflect some changes. Compatibility with prior scorefiles will be attempted, but there aren't that many scorefiles out there yet.
\section messages SKINI Messages \section messages SKINI Messages
A basic SKINI message is a line of text. There are only three required fields, the message type (an ASCII name), the time (either delta or absolute), and the channel number. Don't freak out and think that this is MIDI channel 0-15 (which is supported), because the channel number is scanned as a long int. Channels could be socket numbers, machine IDs, serial numbers, or even unique tags for each event in a synthesis. Other fields might be used, as specified in the SKINI.tbl file. This is described in more detail later. A basic SKINI message is a line of text. There are only three required fields, the message type (an ASCII name), the time (either delta or absolute), and the channel number. Don't freak out and think that this is MIDI channel 0-15 (which is supported), because the channel number is scanned as a long int. Channels could be socket numbers, machine IDs, serial numbers, or even unique tags for each event in a synthesis. Other fields might be used, as specified in the SKINI.tbl file. This is described in more detail later.
Fields in a SKINI line are delimited by spaces, commas, or tabs. The SKINI parser only operates on a line at a time, so a newline means the message is over. Multiple messages are NOT allowed directly on a single line (by use of the ; for example in C). This could be supported, but it isn't in version 1.1. Fields in a SKINI line are delimited by spaces, commas, or tabs. The SKINI parser only operates on a line at a time, so a newline means the message is over. Multiple messages are NOT allowed directly on a single line (by use of the ; for example in C). This could be supported, but it isn't in version 1.1.
Message types include standard MIDI types like NoteOn, NoteOff, ControlChange, etc. MIDI extension message types (messages which look better than MIDI but actually get turned into MIDI-like messages) include LipTension, StringDamping, etc. Non-MIDI message types include SetPath (sets a path for file use later), and OpenReadFile (for streaming, mixing, and applying effects to soundfiles along with synthesis, for example). Other non-MIDI message types include Trilling, HammerOn, etc. (these translate to gestures, behaviors, and contexts for use by intellegent players and instruments using SKINI). Where possible I will still use these as MIDI extension messages, so foot switches, etc. can be used to control them in real time. Message types include standard MIDI types like NoteOn, NoteOff, ControlChange, etc. MIDI extension message types (messages which look better than MIDI but actually get turned into MIDI-like messages) include LipTension, StringDamping, etc. Non-MIDI message types include SetPath (sets a path for file use later), and OpenReadFile (for streaming, mixing, and applying effects to soundfiles along with synthesis, for example). Other non-MIDI message types include Trilling, HammerOn, etc. (these translate to gestures, behaviors, and contexts for use by intellegent players and instruments using SKINI). Where possible I will still use these as MIDI extension messages, so foot switches, etc. can be used to control them in real time.
All fields other than type, time, and channel are optional, and the types and useage of the additional fields is defined in the file SKINI.tbl. All fields other than type, time, and channel are optional, and the types and useage of the additional fields is defined in the file SKINI.tbl.
The other important file used by SKINI is SKINI.msg, which is a set of #defines to make C code more readable, and to allow reasonably quick re-mapping of control numbers, etc.. All of these defined symbols are assigned integer values. For Java, the #defines could be replaced by declaration and assignment statements, preserving the look and behavior of the rest of the code. The other important file used by SKINI is SKINI.msg, which is a set of #defines to make C code more readable, and to allow reasonably quick re-mapping of control numbers, etc.. All of these defined symbols are assigned integer values. For Java, the #defines could be replaced by declaration and assignment statements, preserving the look and behavior of the rest of the code.
\section cfiles C Files Used To Implement SKINI \section cfiles C Files Used To Implement SKINI
SKINI.cpp is an object which can either open a SKINI file, and successively read and parse lines of text as SKINI strings, or accept strings from another object and parse them. The latter functionality would be used by a socket, pipe, or other connection receiving SKINI messages a line at a time, usually in real time, but not restricted to real time. SKINI.cpp is an object which can either open a SKINI file, and successively read and parse lines of text as SKINI strings, or accept strings from another object and parse them. The latter functionality would be used by a socket, pipe, or other connection receiving SKINI messages a line at a time, usually in real time, but not restricted to real time.
SKINI.msg should be included by anything wanting to use the SKINI.cpp object. This is not mandatory, but use of the __SK_blah_ symbols which are defined in the .msg file will help to ensure clarity and consistency when messages are added and changed. SKINI.msg should be included by anything wanting to use the SKINI.cpp object. This is not mandatory, but use of the __SK_blah_ symbols which are defined in the .msg file will help to ensure clarity and consistency when messages are added and changed.
SKINI.tbl is used only by the SKINI parser object (SKINI.cpp). In the file SKINI.tbl, an array of structures is declared and assigned values which instruct the parser as to what the message types are, and what the fields mean for those message types. This table is compiled and linked into applications using SKINI, but could be dynamically loaded and changed in a future version of SKINI. SKINI.tbl is used only by the SKINI parser object (SKINI.cpp). In the file SKINI.tbl, an array of structures is declared and assigned values which instruct the parser as to what the message types are, and what the fields mean for those message types. This table is compiled and linked into applications using SKINI, but could be dynamically loaded and changed in a future version of SKINI.
\section parser SKINI Messages and the SKINI Parser: \section parser SKINI Messages and the SKINI Parser:
The parser isn't all that smart, but neither am I. Here are the basic rules governing a valid SKINI message: The parser isn't all that smart, but neither am I. Here are the basic rules governing a valid SKINI message:
- If the first (non-delimiter ... see below) character in a SKINI string is '/' that line is treated as a comment and echoed to stdout. - If the first (non-delimiter ... see below) character in a SKINI string is '/' that line is treated as a comment and echoed to stdout.
- If there are no characters on a line, that line is treated as blank and echoed to stdout. Tabs and spaces are treated as non-characters. - If there are no characters on a line, that line is treated as blank and echoed to stdout. Tabs and spaces are treated as non-characters.
- Spaces, commas, and tabs delimit the fields in a SKINI message line. (We might allow for multiple messages per line later using the semicolon, but probably not. A series of lines with deltaTimes of 0.0 denotes simultaneous events. For read-ability, multiple messages per line doesn't help much, so it's unlikely to be supported later). - Spaces, commas, and tabs delimit the fields in a SKINI message line. (We might allow for multiple messages per line later using the semicolon, but probably not. A series of lines with deltaTimes of 0.0 denotes simultaneous events. For read-ability, multiple messages per line doesn't help much, so it's unlikely to be supported later).
- The first field must be a SKINI message name (like NoteOn). These might become case-insensitive in future versions, so don't plan on exciting clever overloading of names (like noTeOn being different from NoTeON). There can be a number of leading spaces or tabs, but don't exceed 32 or so. - The first field must be a SKINI message name (like NoteOn). These might become case-insensitive in future versions, so don't plan on exciting clever overloading of names (like noTeOn being different from NoTeON). There can be a number of leading spaces or tabs, but don't exceed 32 or so.
- The second field must be a time specification in seconds. A time field can be either delta-time (most common and the only one supported in version 0.8), or absolute time. Absolute time messages have an '=' appended to the beginning of the floating point number with no space. So 0.10000 means delta time of 100 ms, while =0.10000 means absolute time of 100 ms. Absolute time messages make most sense in score files, but could also be used for (loose) synchronization in a real-time context. Real-time messages should be time-ordered AND time-correct. That is, if you've sent 100 total delta-time messages of 1.0 seconds, and then send an absolute time message of =90.0 seconds, or if you send two absolute time messages of =100.0 and =90.0 in that order, things will get really fouled up. The SKINI parser doesn't know about time, however. The WvOut device is the master time keeper in the Synthesis Toolkit, so it should be queried to see if absolute time messages are making sense. There's an example of how to do that later in this document. Absolute times are returned by the parser as negative numbers (since negative deltaTimes are not allowed). - The second field must be a time specification in seconds. A time field can be either delta-time (most common and the only one supported in version 0.8), or absolute time. Absolute time messages have an '=' appended to the beginning of the floating point number with no space. So 0.10000 means delta time of 100 ms, while =0.10000 means absolute time of 100 ms. Absolute time messages make most sense in score files, but could also be used for (loose) synchronization in a real-time context. Real-time messages should be time-ordered AND time-correct. That is, if you've sent 100 total delta-time messages of 1.0 seconds, and then send an absolute time message of =90.0 seconds, or if you send two absolute time messages of =100.0 and =90.0 in that order, things will get really fouled up. The SKINI parser doesn't know about time, however. The WvOut device is the master time keeper in the Synthesis Toolkit, so it should be queried to see if absolute time messages are making sense. There's an example of how to do that later in this document. Absolute times are returned by the parser as negative numbers (since negative deltaTimes are not allowed).
- The third field must be an integer channel number. Don't go crazy and think that this is just MIDI channel 0-15 (which is supported). The channel number is scanned as a long int. Channels 0-15 are in general to be treated as MIDI channels. After that it's wide open. Channels could be socket numbers, machine IDs, serial numbers, or even unique tags for each event in a synthesis. A -1 channel can be used as don't care, omni, or other functions depending on your needs and taste. - The third field must be an integer channel number. Don't go crazy and think that this is just MIDI channel 0-15 (which is supported). The channel number is scanned as a long int. Channels 0-15 are in general to be treated as MIDI channels. After that it's wide open. Channels could be socket numbers, machine IDs, serial numbers, or even unique tags for each event in a synthesis. A -1 channel can be used as don't care, omni, or other functions depending on your needs and taste.
- All remaining fields are specified in the SKINI.tbl file. In general, there are maximum two more fields, which are either SK_INT (long), SK_DBL (double float), or SK_STR (string). The latter is the mechanism by which more arguments can be specified on the line, but the object using SKINI must take that string apart (retrived by using getRemainderString()) and scan it. Any excess fields are stashed in remainderString. - All remaining fields are specified in the SKINI.tbl file. In general, there are maximum two more fields, which are either SK_INT (long), SK_DBL (double float), or SK_STR (string). The latter is the mechanism by which more arguments can be specified on the line, but the object using SKINI must take that string apart (retrived by using getRemainderString()) and scan it. Any excess fields are stashed in remainderString.
\section file A Short SKINI File: \section file A Short SKINI File:
\code \code
/* Howdy!!! Welcome to SKINI, by P. Cook 1999 /* Howdy!!! Welcome to SKINI, by P. Cook 1999
NoteOn 0.000082 2 55 82 NoteOn 0.000082 2 55 82
NoteOff 1.000000 2 55 0 NoteOff 1.000000 2 55 0
NoteOn 0.000082 2 69 82 NoteOn 0.000082 2 69 82
StringDetune 0.100000 2 10 StringDetune 0.100000 2 10
StringDetune 0.100000 2 30 StringDetune 0.100000 2 30
StringDetune 0.100000 2 50 StringDetune 0.100000 2 50
NoteOn 0.000000 2 69 82 NoteOn 0.000000 2 69 82
StringDetune 0.100000 2 40 StringDetune 0.100000 2 40
StringDetune 0.100000 2 22 StringDetune 0.100000 2 22
StringDetune 0.100000 2 12 StringDetune 0.100000 2 12
// //
StringDamping 0.000100 2 0.0 StringDamping 0.000100 2 0.0
NoteOn 0.000082 2 55 82 NoteOn 0.000082 2 55 82
NoteOn 0.200000 2 62 82 NoteOn 0.200000 2 62 82
NoteOn 0.100000 2 71 82 NoteOn 0.100000 2 71 82
NoteOn 0.200000 2 79 82 NoteOn 0.200000 2 79 82
NoteOff 1.000000 2 55 82 NoteOff 1.000000 2 55 82
NoteOff 0.000000 2 62 82 NoteOff 0.000000 2 62 82
NoteOff 0.000000 2 71 82 NoteOff 0.000000 2 71 82
NoteOff 0.000000 2 79 82 NoteOff 0.000000 2 79 82
StringDamping =4.000000 2 0.0 StringDamping =4.000000 2 0.0
NoteOn 0.000082 2 55 82 NoteOn 0.000082 2 55 82
NoteOn 0.200000 2 62 82 NoteOn 0.200000 2 62 82
NoteOn 0.100000 2 71 82 NoteOn 0.100000 2 71 82
NoteOn 0.200000 2 79 82 NoteOn 0.200000 2 79 82
NoteOff 1.000000 2 55 82 NoteOff 1.000000 2 55 82
NoteOff 0.000000 2 62 82 NoteOff 0.000000 2 62 82
NoteOff 0.000000 2 71 82 NoteOff 0.000000 2 71 82
NoteOff 0.000000 2 79 82 NoteOff 0.000000 2 79 82
\endcode \endcode
\section table The SKINI.tbl File and Message Parsing: \section table The SKINI.tbl File and Message Parsing:
The SKINI.tbl file contains an array of structures which are accessed by the parser object SKINI.cpp. The struct is: The SKINI.tbl file contains an array of structures which are accessed by the parser object SKINI.cpp. The struct is:
\code \code
struct SKINISpec { struct SKINISpec {
char messageString[32]; char messageString[32];
long type; long type;
long data2; long data2;
long data3; long data3;
}; };
\endcode \endcode
so an assignment of one of these structs looks like: so an assignment of one of these structs looks like:
\code \code
MessageStr$ ,type, data2, data3, MessageStr$ ,type, data2, data3,
\endcode \endcode
<TT>type</TT> is the message type sent back from the SKINI line parser. <TT>type</TT> is the message type sent back from the SKINI line parser.
<TT>data<n></TT> is either: <TT>data<n></TT> is either:
- NOPE : field not used, specifically, there aren't going to be any more fields on this line. So if there is is NOPE in data2, data3 won't even be checked. - NOPE : field not used, specifically, there aren't going to be any more fields on this line. So if there is is NOPE in data2, data3 won't even be checked.
- SK_INT : byte (actually scanned as 32 bit signed long int). If it's a MIDI data field which is required to be an integer, like a controller number, it's 0-127. Otherwise, get creative with SK_INTs. - SK_INT : byte (actually scanned as 32 bit signed long int). If it's a MIDI data field which is required to be an integer, like a controller number, it's 0-127. Otherwise, get creative with SK_INTs.
- SK_DBL : double precision floating point. SKINI uses these in the MIDI context for note numbers with micro tuning, velocities, controller values, etc. - SK_DBL : double precision floating point. SKINI uses these in the MIDI context for note numbers with micro tuning, velocities, controller values, etc.
- SK_STR : only valid in final field. This allows (nearly) arbitrary message types to be supported by simply scanning the string to EndOfLine and then passing it to a more intellegent handler. For example, MIDI SYSEX (system exclusive) messages of up to 256 bytes can be read as space-delimited integers into the 1K SK_STR buffer. Longer bulk dumps, soundfiles, etc. should be handled as a new message type pointing to a FileName, Socket, or something else stored in the SK_STR field, or as a new type of multi-line message. - SK_STR : only valid in final field. This allows (nearly) arbitrary message types to be supported by simply scanning the string to EndOfLine and then passing it to a more intellegent handler. For example, MIDI SYSEX (system exclusive) messages of up to 256 bytes can be read as space-delimited integers into the 1K SK_STR buffer. Longer bulk dumps, soundfiles, etc. should be handled as a new message type pointing to a FileName, Socket, or something else stored in the SK_STR field, or as a new type of multi-line message.
Here's a couple of lines from the SKINI.tbl file Here's a couple of lines from the SKINI.tbl file
\code \code
{"NoteOff" , __SK_NoteOff_, SK_DBL, SK_DBL}, {"NoteOff" , __SK_NoteOff_, SK_DBL, SK_DBL},
{"NoteOn" , __SK_NoteOn_, SK_DBL, SK_DBL}, {"NoteOn" , __SK_NoteOn_, SK_DBL, SK_DBL},
{"ControlChange" , __SK_ControlChange_, SK_INT, SK_DBL}, {"ControlChange" , __SK_ControlChange_, SK_INT, SK_DBL},
{"Volume" , __SK_ControlChange_, __SK_Volume_ , SK_DBL}, {"Volume" , __SK_ControlChange_, __SK_Volume_ , SK_DBL},
{"StringDamping" , __SK_ControlChange_, __SK_StringDamping_, SK_DBL}, {"StringDamping" , __SK_ControlChange_, __SK_StringDamping_, SK_DBL},
{"StringDetune" , __SK_ControlChange_, __SK_StringDetune_, SK_DBL}, {"StringDetune" , __SK_ControlChange_, __SK_StringDetune_, SK_DBL},
\endcode \endcode
The first three are basic MIDI messages. The first two would cause the parser, after recognizing a match of the string "NoteOff" or "NoteOn", to set the message type to 128 or 144 (__SK_NoteOff_ and __SK_NoteOn_ are #defined in the file SKINI.msg to be the MIDI byte value, without channel, of the actual MIDI messages for NoteOn and NoteOff). The parser would then set the time or delta time (this is always done and is therefore not described in the SKINI Message Struct). The next two fields would be scanned as double-precision floats and assigned to the byteTwo and byteThree variables of the SKINI parser. The remainder of the line is stashed in the remainderString variable. The first three are basic MIDI messages. The first two would cause the parser, after recognizing a match of the string "NoteOff" or "NoteOn", to set the message type to 128 or 144 (__SK_NoteOff_ and __SK_NoteOn_ are #defined in the file SKINI.msg to be the MIDI byte value, without channel, of the actual MIDI messages for NoteOn and NoteOff). The parser would then set the time or delta time (this is always done and is therefore not described in the SKINI Message Struct). The next two fields would be scanned as double-precision floats and assigned to the byteTwo and byteThree variables of the SKINI parser. The remainder of the line is stashed in the remainderString variable.
The ControlChange spec is basically the same as NoteOn and NoteOff, but the second data byte is set to an integer (for checking later as to what MIDI control is being changed). The ControlChange spec is basically the same as NoteOn and NoteOff, but the second data byte is set to an integer (for checking later as to what MIDI control is being changed).
The Volume spec is a MIDI Extension message, which behaves like a ControlChange message with the controller number set explicitly to the value for MIDI Volume (7). Thus the following two lines would accomplish the same changing of MIDI volume on channel 2: The Volume spec is a MIDI Extension message, which behaves like a ControlChange message with the controller number set explicitly to the value for MIDI Volume (7). Thus the following two lines would accomplish the same changing of MIDI volume on channel 2:
\code \code
ControlChange 0.000000 2 7 64.1 ControlChange 0.000000 2 7 64.1
Volume 0.000000 2 64.1 Volume 0.000000 2 64.1
\endcode \endcode
I like the 2nd line better, thus my motivation for SKINI in the first place. I like the 2nd line better, thus my motivation for SKINI in the first place.
The StringDamping and StringDetune messages behave the same as the Volume message, but use Control Numbers which aren't specifically nailed-down in MIDI. Note that these Control Numbers are carried around as long ints, so we're not limited to 0-127. If, however, you want to use a MIDI controller to play an instrument, using controller numbers in the 0-127 range might make sense. The StringDamping and StringDetune messages behave the same as the Volume message, but use Control Numbers which aren't specifically nailed-down in MIDI. Note that these Control Numbers are carried around as long ints, so we're not limited to 0-127. If, however, you want to use a MIDI controller to play an instrument, using controller numbers in the 0-127 range might make sense.
\section using Using SKINI: \section using Using SKINI:
Here's a simple example of code which uses the SKINI object to read a SKINI file and control a single instrument. Here's a simple example of code which uses the SKINI object to read a SKINI file and control a single instrument.
\code \code
instrument = new Mandolin(50.0); instrument = new Mandolin(50.0);
score = new SKINI(argv[1]); score = new SKINI(argv[1]);
while(score->getType() > 0) { while(score->getType() > 0) {
tempDouble = score->getDelta(); tempDouble = score->getDelta();
if (tempDouble < 0) { if (tempDouble < 0) {
tempDouble = - tempDouble; tempDouble = - tempDouble;
tempDouble = tempDouble - output.getTime(); tempDouble = tempDouble - output.getTime();
if (tempDouble < 0) { if (tempDouble < 0) {
printf("Bad News Here!!! Backward Absolute Time Required.\n"); printf("Bad News Here!!! Backward Absolute Time Required.\n");
tempDouble = 0.0; tempDouble = 0.0;
} }
} }
tempLong = (long) (tempDouble * Stk::sampleRate()); tempLong = (long) (tempDouble * Stk::sampleRate());
for (i=0;i<tempLong;i++) { for (i=0;i<tempLong;i++) {
output.tick(instrument->tick()); output.tick(instrument->tick());
} }
tempDouble3 = score->getByteThree(); tempDouble3 = score->getByteThree();
if (score->getType()== __SK_NoteOn_ ) { if (score->getType()== __SK_NoteOn_ ) {
tempDouble3 *= NORM_MIDI; tempDouble3 *= NORM_MIDI;
if (score->getByteThree() == 0) { if (score->getByteThree() == 0) {
tempDouble3 = 0.5; tempDouble3 = 0.5;
instrument->noteOff(tempDouble3); instrument->noteOff(tempDouble3);
} }
else { else {
tempLong = (int) score->getByteTwo(); tempLong = (int) score->getByteTwo();
tempDouble2 = Midi2Pitch[tempLong]; tempDouble2 = Midi2Pitch[tempLong];
instrument->noteOn(tempDouble2,tempDouble3); instrument->noteOn(tempDouble2,tempDouble3);
} }
} }
else if (score->getType() == __SK_NoteOff_) { else if (score->getType() == __SK_NoteOff_) {
tempDouble3 *= NORM_MIDI; tempDouble3 *= NORM_MIDI;
instrument->noteOff(tempDouble3); instrument->noteOff(tempDouble3);
} }
else if (score->getType() == __SK_ControlChange_) { else if (score->getType() == __SK_ControlChange_) {
tempLong = score->getByteTwoInt(); tempLong = score->getByteTwoInt();
instrument->controlChange(tempLong,temp3.0); instrument->controlChange(tempLong,temp3.0);
} }
score->nextMessage(); score->nextMessage();
} }
\endcode \endcode
When the score (SKINI object) object is created from the filename in argv[1], the first valid command line is read from the file and parsed. When the score (SKINI object) object is created from the filename in argv[1], the first valid command line is read from the file and parsed.
The score->getType() retrieves the messageType. If this is -1, there are no more valid messages in the file and the synthesis loop terminates. Otherwise, the message type is returned. The score->getType() retrieves the messageType. If this is -1, there are no more valid messages in the file and the synthesis loop terminates. Otherwise, the message type is returned.
getDelta() retrieves the deltaTime until the current message should occur. If this is greater than 0, synthesis occurs until the deltaTime has elapsed. If deltaTime is less than zero, the time is interpreted as absolute time and the output device is queried as to what time it is now. That is used to form a deltaTime, and if it's positive we synthesize. If it's negative, we print an error and pretend this never happened and we hang around hoping to eventually catch up. getDelta() retrieves the deltaTime until the current message should occur. If this is greater than 0, synthesis occurs until the deltaTime has elapsed. If deltaTime is less than zero, the time is interpreted as absolute time and the output device is queried as to what time it is now. That is used to form a deltaTime, and if it's positive we synthesize. If it's negative, we print an error and pretend this never happened and we hang around hoping to eventually catch up.
The rest of the code sorts out message types NoteOn, NoteOff (including NoteOn with velocity 0), and ControlChange. The code implicitly takes into account the integer type of the control number, but all other data is treated as double float. The rest of the code sorts out message types NoteOn, NoteOff (including NoteOn with velocity 0), and ControlChange. The code implicitly takes into account the integer type of the control number, but all other data is treated as double float.
The last line reads and parses the next message in the file. The last line reads and parses the next message in the file.
*/ */

View File

@@ -1,29 +1,43 @@
/*! \page system System Requirements /*! \page system System Requirements
<B>General</B> <B>General:</B>
<UL> <UL>
<LI>A MIDI interface to use MIDI input controls. (NOTE: This may be built into the soundcard on your computer.)</LI> <LI>A MIDI interface to use MIDI input controls. (NOTE: This may be built into the soundcard on your computer.)</LI>
<LI><A HREF="http://dev.scriptics.com">Tcl/Tk</A> version 8.0 or higher to use the simple Tcl/Tk GUIs provided with the STK distribution (available free over the WWW for all supported realtime platforms).</LI> <LI><A HREF="http://dev.scriptics.com">Tcl/Tk</A> version 8.0 or higher to use the simple Tcl/Tk GUIs provided with the STK distribution (available free over the WWW for all supported realtime platforms).</LI>
</UL> </UL>
<B>Linux (specific)</B>
<UL> <B>Linux (specific):</B>
<LI>A soundcard to use realtime audio input/output capabilities. In order to use the <I><B>effects</B></I> project, the soundcard and drivers must support full duplex mode.</LI> <UL>
<LI><A HREF="http://www.opensound.com">OSS</A> or <A HREF="http://www.alsa-project.org/">ALSA</A> device drivers for realtime sound output and MIDI input.</LI> <LI>A soundcard to use realtime audio input/output capabilities. In order to use the <I><B>effects</B></I> project, the soundcard and drivers must support full duplex mode.</LI>
</UL> <LI><A HREF="http://www.opensound.com">OSS</A> or <A HREF="http://www.alsa-project.org/">ALSA</A> device drivers for realtime sound output and MIDI input.</LI>
</UL>
<B>Windows95/98/2000/XP (specific)</B>
<UL> <B>Macintosh OS X (specific):</B>
<LI>A soundcard to use realtime audio input/output capabilities. In order to use the <I><B>effects</B></I> project, the soundcard and drivers must support full duplex mode.</LI> <UL>
<LI><A HREF="http://www.microsoft.com/directx/">DirectX</A> 5.0 (or higher) runtime libraries to use the precompiled binaries.</LI> <LI>A C++ compiler does not ship by default with OS X. It is necessary to download the Developer Kit from the Apple WWW site in order to compile STK.</LI>
<LI>Visual C++ 6.0 for compiling (though a precompiled distribution is available).</LI> <LI>The tcl/tk interpreter does not ship by default with OS X, but must be downloaded from the internet. Once installed, it is suggested that a link be made to the executable from a standard search path (/usr/bin/wish). In any event, it will not be possible to use the supplied startup scripts in the demo directory (i.e. StkDemo.bat) because the tcl/tk script startup sequence is slightly different than for all the other systems. Assuming you have made the link mentioned above, the STK demo program and tcl/tk script can be started by typing:
<LI>For compiling the source (if not already in your system): <UL><LI><A HREF="Misc/dsound.h">dsound.h</A> header file (DirectX 6.1) - put somewhere in your header search path</LI><LI><A HREF="Misc/dsound.lib">dsound.lib</A> library file (DirectX 6.1) - put somewhere in your library search path</LI></UL></LI>
</UL> \code
wish tcl/Demo.tcl | demo Clarinet -or -ip
<B>WindowsNT (specific)</B> \endcode
<UL>
<LI>STK is no longer supported under WindowsNT because DirectX support for NT is minimal. Unless DirectX 5.0 or higher becomes available for NT, STK won't work.</LI> Initial tests have shown somewhat poor response between changes made in the tcl/tk script and the resulting audio updates.</LI>
</UL>
</UL>
<P>
<B>Windows95/98/2000/XP (specific):</B>
<UL>
<LI>A soundcard to use realtime audio input/output capabilities. In order to use the <I><B>effects</B></I> project, the soundcard and drivers must support full duplex mode.</LI>
<LI><A HREF="http://www.microsoft.com/directx/">DirectX</A> 5.0 (or higher) runtime libraries to use the precompiled binaries.</LI>
<LI>Visual C++ 6.0 for compiling (though a precompiled distribution is available).</LI>
<LI>For compiling the source (if not already in your system): <UL><LI><A HREF="Misc/dsound.h">dsound.h</A> header file (DirectX 6.1) - put somewhere in your header search path</LI><LI><A HREF="Misc/dsound.lib">dsound.lib</A> library file (DirectX 6.1) - put somewhere in your library search path</LI></UL></LI>
</UL>
<B>WindowsNT (specific):</B>
<UL>
<LI>DirectX support for NT is inadequate, so it is not possible to use STK under WindowsNT with realtime DirectX support. It may be possible to use STK under WindowsNT with realtime ASIO support, though this has not been tested.</LI>
</UL>
<P>
*/ */

View File

@@ -1,149 +1,156 @@
/*! \page tutorial Tutorial /*! \page tutorial Tutorial
- \ref intro - \ref intro
- \ref start - \ref start
- \ref compile - \ref compile
- \ref rtvsnonrt - \ref rtvsnonrt
\section intro Introduction \section intro Introduction
First and foremost, the Synthesis ToolKit is a set of C++ classes. That means you need to know some basics about programming in C++ to make use of STK (beyond the example programs we provide). STK's "target audience" is people who: First and foremost, the Synthesis ToolKit is a set of C++ classes. That means you need to know some basics about programming in C++ to make use of STK (beyond the example programs we provide). STK's "target audience" is people who:
<UL> <UL>
<LI>already know how to program in C and C++</LI> <LI>already know how to program in C and C++</LI>
<LI>want to create audio DSP and/or synthesis programs</LI> <LI>want to create audio DSP and/or synthesis programs</LI>
<LI>want to save some time by using our unit generators and input/output routines</LI> <LI>want to save some time by using our unit generators and input/output routines</LI>
<LI>know C, but want to learn about synthesis and processing algorithms</LI> <LI>know C, but want to learn about synthesis and processing algorithms</LI>
<LI>wish to teach real-time synthesis and processing, and wish to use some of our classes and examples</LI> <LI>wish to teach real-time synthesis and processing, and wish to use some of our classes and examples</LI>
</UL> </UL>
Most ToolKit programmers will likely end up writing a class or two for their own particular needs, but this task is typically simplified by making use of pre-existing STK classes (filters, oscillators, etc.). Most ToolKit programmers will likely end up writing a class or two for their own particular needs, but this task is typically simplified by making use of pre-existing STK classes (filters, oscillators, etc.).
\section start Getting Started \section start Getting Started
We'll begin our introduction to the Synthesis ToolKit with a simple sine-wave oscillator program. STK doesn't provide a specific oscillator for sine waves. Instead, it provides a generic waveform oscillator class, WaveLoop, which can load a variety of common file types. In this example, we load a sine "table" from an STK RAW file. The class RtWvOut will send "realtime" samples to the audio output hardware on your computer. We'll begin our introduction to the Synthesis ToolKit with a simple sine-wave oscillator program. STK doesn't provide a specific oscillator for sine waves. Instead, it provides a generic waveform oscillator class, WaveLoop, which can load a variety of common file types. In this example, we load a sine "table" from an STK RAW file. The class RtWvOut will send "realtime" samples to the audio output hardware on your computer.
\code \code
// sineosc.cpp // sineosc.cpp
#include "WaveLoop.h" #include "WaveLoop.h"
#include "RtWvOut.h" #include "RtWvOut.h"
int main() int main()
{ {
// Set the global sample rate before creating class instances. // Set the global sample rate before creating class instances.
Stk::setSampleRate( 44100.0 ); Stk::setSampleRate( 44100.0 );
// Define and load the sine wave file // Define and load the sine wave file
WaveLoop *input = new WaveLoop("sinewave.raw", TRUE); WaveLoop *input = new WaveLoop("sinewave.raw", TRUE);
input->setFrequency(440.0); input->setFrequency(440.0);
// Define and open the default realtime output device for one-channel playback // Define and open the default realtime output device for one-channel playback
RtWvOut *output = new RtWvOut(1); RtWvOut *output = new RtWvOut(1);
// Play the oscillator for 40000 samples // Play the oscillator for 40000 samples
for (int i=0; i<40000; i++) { for (int i=0; i<40000; i++) {
output->tick( input->tick() ); output->tick( input->tick() );
} }
// Clean up // Clean up
delete input; delete input;
delete output; delete output;
return 0; return 0;
} }
\endcode \endcode
WaveLoop is a subclass of WvIn, which supports WAV, SND (AU), AIFF, MAT-file (Matlab), and RAW file formats with 8-, 16-, and 32-bit integer and 32- and 64-bit floating-point data types. WvIn provides interpolating, read once ("oneshot") functionality, as well as methods for setting the read rate and read position. WaveLoop is a subclass of WvIn, which supports WAV, SND (AU), AIFF, MAT-file (Matlab), and RAW file formats with 8-, 16-, and 32-bit integer and 32- and 64-bit floating-point data types. WvIn provides interpolating, read once ("oneshot") functionality, as well as methods for setting the read rate and read position.
Nearly all STK classes implement tick() methods which take and/or return sample values. Within the tick() method, the fundamental sample calculations are performed for a given class. Most STK classes consume/generate a single sample per operation and their tick() method takes/returns each sample "by value". In addition, every class implementing a tick() method also provides an overloaded tick() function taking pointer and size arguments which can be used for vectorized computations. Nearly all STK classes implement tick() methods which take and/or return sample values. Within the tick() method, the fundamental sample calculations are performed for a given class. Most STK classes consume/generate a single sample per operation and their tick() method takes/returns each sample "by value". In addition, every class implementing a tick() method also provides an overloaded tick() function taking pointer and size arguments which can be used for vectorized computations.
The WvIn and WvOut classes support multi-channel sample frames. To distinguish single-sample frame operations from multi-channel frame operations, these classes also implement tickFrame() functions. When a tick() method is called for multi-channel data, frame averages are returned or the input sample is distributed across all channels of a sample frame. The WvIn and WvOut classes support multi-channel sample frames. To distinguish single-sample frame operations from multi-channel frame operations, these classes also implement tickFrame() functions. When a tick() method is called for multi-channel data, frame averages are returned or the input sample is distributed across all channels of a sample frame.
Nearly all STK classes inherit from the Stk base class. Stk provides a static sample rate which is queried by subclasses as needed. Because many classes use the current sample rate value during instantiation, it is important that the desired value be set at the beginning of a program. The default STK sample rate is 22050 Hz. Nearly all STK classes inherit from the Stk base class. Stk provides a static sample rate which is queried by subclasses as needed. Because many classes use the current sample rate value during instantiation, it is important that the desired value be set at the beginning of a program. The default STK sample rate is 22050 Hz.
Another primary concept that is somewhat obscurred in this example concerns the data format in which sample values are passed and received. Audio and control signals throughout STK use a floating-point data type, the exact precision of which can be controlled via the MY_FLOAT \#define statement in Stk.h. Thus, the ToolKit can use any normalization scheme desired. The base instruments and algorithms are implemented with a general audio sample dynamic maximum of +/-1.0, and the WvIn and WvOut classes and subclasses scale appropriately for DAC or soundfile input and output. Another primary concept that is somewhat obscurred in this example concerns the data format in which sample values are passed and received. Audio and control signals throughout STK use a floating-point data type, the exact precision of which can be controlled via the MY_FLOAT \#define statement in Stk.h. Thus, the ToolKit can use any normalization scheme desired. The base instruments and algorithms are implemented with a general audio sample dynamic maximum of +/-1.0, and the WvIn and WvOut classes and subclasses scale appropriately for DAC or soundfile input and output.
Finally, STK has some basic C++ error handling functionality built in. Classes which access files and/or hardware are most prone to runtime errors. To properly "catch" such errors, the above example should be rewritten as shown below. Finally, STK has some basic C++ error handling functionality built in. Classes which access files and/or hardware are most prone to runtime errors. To properly "catch" such errors, the above example should be rewritten as shown below.
\code \code
// sineosc.cpp // sineosc.cpp
#include "WaveLoop.h" #include "WaveLoop.h"
#include "RtWvOut.h" #include "RtWvOut.h"
int main() int main()
{ {
// Set the global sample rate before creating class instances. // Set the global sample rate before creating class instances.
Stk::setSampleRate( 44100.0 ); Stk::setSampleRate( 44100.0 );
WaveLoop *input = 0; WaveLoop *input = 0;
RtWvOut *output = 0; RtWvOut *output = 0;
try { try {
// Define and load the sine wave file // Define and load the sine wave file
input = new WaveLoop( "sinewave.raw", TRUE ); input = new WaveLoop( "sinewave.raw", TRUE );
// Define and open the default realtime output device for one-channel playback // Define and open the default realtime output device for one-channel playback
output = new RtWvOut(1); output = new RtWvOut(1);
} }
catch (StkError &) { catch (StkError &) {
goto cleanup; goto cleanup;
} }
input->setFrequency(440.0); input->setFrequency(440.0);
// Play the oscillator for 40000 samples // Play the oscillator for 40000 samples
for (int i=0; i<40000; i++) { for (int i=0; i<40000; i++) {
try { try {
output->tick(input->tick()); output->tick(input->tick());
} }
catch (StkError &) { catch (StkError &) {
goto cleanup; goto cleanup;
} }
} }
cleanup: cleanup:
delete input; delete input;
delete output; delete output;
return 0; return 0;
} }
\endcode \endcode
In this particular case, we simply exit the program if an error occurs (an error message is automatically printed to stderr). A more refined program might attempt to recover from or fix a particular problem and, if successful, continue processing. In this particular case, we simply exit the program if an error occurs (an error message is automatically printed to stderr). A more refined program might attempt to recover from or fix a particular problem and, if successful, continue processing.
\section compile Compiling \section compile Compiling
\subsection compileLinux Linux \subsection compileLinux Linux
In general, you will probably want to use a <TT>Makefile</TT> for your STK programs and projects. For this particular program, however, the following will suffice (on a linux system): In general, you will probably want to use a <TT>Makefile</TT> for your STK programs and projects. For this particular program, however, the following will suffice (on a linux system):
\code \code
g++ -Wall -D__LINUX_OSS__ -D__LITTLE_ENDIAN__ -o sineosc Stk.cpp WvIn.cpp WaveLoop.cpp WvOut.cpp RtWvOut.cpp RtAudio.cpp sineosc.cpp -lpthread g++ -Wall -D__LINUX_OSS__ -D__LITTLE_ENDIAN__ -o sineosc Stk.cpp WvIn.cpp WaveLoop.cpp WvOut.cpp RtWvOut.cpp RtAudio.cpp sineosc.cpp -lpthread
\endcode \endcode
This assumes you've set up a directory that includes the files <TT>sineosc.cpp</TT>, the rawwave file <TT>sinewave.raw</TT>, and the header and source files for the classes Stk, WvIn, WaveLoop, WvOut, RtWvOut, and RtAudio. There are other, more convenient, means for structuring projects that will be discussed later. This assumes you've set up a directory that includes the files <TT>sineosc.cpp</TT>, the rawwave file <TT>sinewave.raw</TT>, and the header and source files for the classes Stk, WvIn, WaveLoop, WvOut, RtWvOut, and RtAudio. There are other, more convenient, means for structuring projects that will be discussed later.
Most linux systems currently come installed with the OSS audio hardware drivers. If your system instead has ALSA audio drivers installed and you wish to make use of native ALSA API calls, a link to the ALSA library must be specified in the above compile statement (<TT>-lasound</TT>) and the preprocessor definition should instead be <TT>__LINUX_ALSA__</TT>. Most linux systems currently come installed with the OSS audio hardware drivers. If your system instead has ALSA audio drivers installed and you wish to make use of native ALSA API calls, a link to the ALSA library must be specified in the above compile statement (<TT>-lasound</TT>) and the preprocessor definition should instead be <TT>__LINUX_ALSA__</TT>.
\subsection compileIrix Irix \subsection compileIrix Irix
The irix (SGI) and linux operating systems are both flavors of unix and thus behave similarly. Making the same assumptions as in the linux case, the following compile statement should work: The irix (SGI) and linux operating systems are both flavors of unix and thus behave similarly. Making the same assumptions as in the linux case, the following compile statement should work:
\code \code
CC -Wall -D__IRIX_AL__ -o sineosc Stk.cpp WvIn.cpp WaveLoop.cpp WvOut.cpp RtWvOut.cpp RtAudio.cpp sineosc.cpp -lpthread CC -Wall -D__IRIX_AL__ -o sineosc Stk.cpp WvIn.cpp WaveLoop.cpp WvOut.cpp RtWvOut.cpp RtAudio.cpp sineosc.cpp -lpthread
\endcode \endcode
\subsection compileWin Windows \subsection compileOSX Macintosh OS X
I have personally only worked with Visual C++ when compiling programs under windoze. I'll assume you've become familiar with Visual C+ and don't need a tutorial on its particular idiosyncrasies. In creating the VC++ project, add the Stk, WvIn, WaveLoop, WvOut, RtWvOut, and RtAudio class files, as well as the <TT>sineosc.cpp</TT> and <TT>sinewave.raw</TT> files. You will also need to link to the DirectSound library (<TT>dsound.lib</TT>), select the multithreaded library, and provide the <TT>__WINDOWS_DS__</TT> and <TT>__LITTLE_ENDIAN__</TT> preprocessor definitions. The Macintosh OS X operating systems is another flavor of unix and thus behaves similarly. Making the same assumptions as in the linux case, the following compile statement should work:
\code
CC -Wall -D__MACOSX_CORE__ -o sineosc Stk.cpp WvIn.cpp WaveLoop.cpp WvOut.cpp RtWvOut.cpp RtAudio.cpp sineosc.cpp -lpthread -framework CoreAudio
\section rtvsnonrt "Realtime" vs. "Non-Realtime" \endcode
Most of the Synthesis ToolKit classes are platform independent. That means that they should compile on any reasonably current C++ compiler. The functionality needed for realtime audio and MIDI input/output, as well as realtime control message acquistion, is inherently platform and operating-system (OS) <I>dependent</I>. STK classes which require specific platform/OS support include RtAudio, RtWvOut, RtWvIn, RtDuplex, RtMidi, TcpWvIn, TcpWvOut, Socket, and Thread. These classes currently can only be compiled on Linux, Irix, and Windows (except Windows NT) systems using the <TT>__LINUX_OSS__</TT>, <TT>__LINUX_ALSA__</TT>, <TT>__IRIX_AL__</TT>, or <TT>__WINDOWS_DS__</TT> preprocessor definitions. \subsection compileWin Windows
Without the "realtime" classes, it is still possible to read SKINI scorefiles for control input and to read and write to/from a variety of audio file formats (WAV, SND, AIFF, MAT-file, and RAW). If compiling for a "little-endian" host processor, the <TT>__LITTLE_ENDIAN__</TT> preprocessor definition should be provided. I have personally only worked with Visual C++ when compiling programs under windoze. I'll assume you've become familiar with Visual C+ and don't need a tutorial on its particular idiosyncrasies. In creating the VC++ project, add the Stk, WvIn, WaveLoop, WvOut, RtWvOut, and RtAudio class files, as well as the <TT>sineosc.cpp</TT> and <TT>sinewave.raw</TT> files. You will also need to link to the DirectSound library (<TT>dsound.lib</TT>), select the multithreaded library, and provide the <TT>__WINDOWS_DS__</TT> and <TT>__LITTLE_ENDIAN__</TT> preprocessor definitions.
\section continued To Be Continued ...
\section rtvsnonrt "Realtime" vs. "Non-Realtime"
*/
Most of the Synthesis ToolKit classes are platform independent. That means that they should compile on any reasonably current C++ compiler. The functionality needed for realtime audio and MIDI input/output, as well as realtime control message acquistion, is inherently platform and operating-system (OS) <I>dependent</I>. STK classes which require specific platform/OS support include RtAudio, RtWvOut, RtWvIn, RtDuplex, RtMidi, TcpWvIn, TcpWvOut, Socket, and Thread. These classes currently can only be compiled on Linux, Irix, Macintosh OS X, and Windows (except Windows NT) systems using the <TT>__LINUX_OSS__</TT>, <TT>__LINUX_ALSA__</TT>, <TT>__IRIX_AL__</TT>, <TT>__MACOSX_CORE__</TT>, or <TT>__WINDOWS_DS__</TT> preprocessor definitions.
Without the "realtime" classes, it is still possible to read SKINI scorefiles for control input and to read and write to/from a variety of audio file formats (WAV, SND, AIFF, MAT-file, and RAW). If compiling for a "little-endian" host processor, the <TT>__LITTLE_ENDIAN__</TT> preprocessor definition should be provided.
\section continued To Be Continued ...
*/

View File

@@ -1,183 +1,221 @@
/*! \page usage Usage Documentation /*! \page usage Usage Documentation
- \ref directory - \ref directory
- \ref compiling - \ref compiling
- \ref control - \ref control
- \ref instruments - \ref instruments
- \ref nort - \ref nort
- \ref rt - \ref rt
- \ref tcl - \ref tcl
- \ref midi - \ref midi
- \ref polyphony
<HR>
<HR>
\section directory Directory Structure:
\section directory Directory Structure:
The top level distribution contains the following directories:
The top level distribution contains the following directories:
<UL>
<LI> The <I><B>src</B></I> directory contains the source .cpp files for almost all the STK unit generator and algorithm classes.</LI><P> <UL>
<LI> The <I><B>src</B></I> directory contains the source .cpp files for all the STK unit generator and algorithm classes.</LI><P>
<LI> The <I><B>include</B></I> directory contains the header files for almost all the STK unit generator and algorithm classes.</LI><P>
<LI> The <I><B>include</B></I> directory contains the header files for all the STK unit generator and algorithm classes.</LI><P>
<LI> The <I><B>rawwaves</B></I> directory contains various raw, monophonic, 16-bit, big-endian soundfiles used with the STK classes.</LI><P>
<LI> The <I><B>rawwaves</B></I> directory contains various raw, monophonic, 16-bit, big-endian soundfiles used with the STK classes.</LI><P>
<LI> The <I><B>doc</B></I> directory contains documentation about STK.</LI><P>
<LI> The <I><B>doc</B></I> directory contains documentation about STK.</LI><P>
<LI> The <I><B>projects</B></I> directory contains various demo and example STK programs.</LI><P>
</UL> <LI> The <I><B>projects</B></I> directory contains various demo and example STK programs.</LI><P>
</UL>
This release of STK comes with four separate "project" directories:
This release of STK comes with four separate "project" directories:
<OL>
<LI> The <I><B>demo</B></I> project is used to demonstrate nearly all of the STK instruments. The <I><B>demo</B></I> program has been written to allow a variety of control input and sound data output options. %Simple graphical user interfaces (GUIs) are also provided.<P></LI> <OL>
<LI> The <I><B>demo</B></I> project is used to demonstrate nearly all of the STK instruments. The <I><B>demo</B></I> program has been written to allow a variety of control input and sound data output options. %Simple graphical user interfaces (GUIs) are also provided.<P></LI>
<LI> The <I><B>effects</B></I> project demonstrates realtime duplex mode (simultaneous audio input and output) operation, when available, as well as various delay-line based effects algorithms.<P></LI>
<LI> The <I><B>effects</B></I> project demonstrates realtime duplex mode (simultaneous audio input and output) operation, when available, as well as various delay-line based effects algorithms.<P></LI>
<LI> The <I><B>ragamatic</B></I> project is just cool. Fire it up and be enlightened.<P></LI>
<LI> The <I><B>ragamatic</B></I> project is just cool. Fire it up and be enlightened.<P></LI>
<LI> The <I><B>examples</B></I> project contains several simple programs which demonstrate audio input/output, as well as the use of the audio internet streaming classes.</LI>
</OL> <LI> The <I><B>examples</B></I> project contains several simple programs which demonstrate audio input/output, as well as the use of the audio internet streaming classes.</LI>
</OL>
\section compiling Compiling:
\section compiling Compiling:
<UL>
<LI><B>Generic (non-realtime):</B> Most STK classes are operating system <I>independent</I> and can be compiled using any current C++ compiler. STK assumes big-endian host byte order by default, so if your system is little-endian (i.e. Intel processor), you must provide the <TT>__LITTLE_ENDIAN__</TT> preprocessor definition to your compiler. The <I><B>demo</B></I> 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 <I>cannot</I> be used without realtime support: RtAudio, RtWvIn, RtWvOut, RtDuplex, RtMidi, Socket, Thread, TcpWvIn, TcpWvOut. Because of this, it is not possible to compile the <I><B>effects</B></I>, <I><B>ragamatic</B></I>, and most of the <I><B>examples</B></I> projects for non-realtime use.</LI> <UL>
<LI><B>Windows95/98/2000/XP:</B> Realtime support is available using either DirectSound or ASIO audio drivers. For DirectSound support, use the <TT>__WINDOWS_DS__</TT> preprocessor definition and link with the <TT>dsound.lib</TT>, <TT>winmm.lib</TT>, and <TT>Wsock32.lib</TT> libraries. For ASIO support, use the <TT>__WINDOWS_ASIO__</TT> preprocessor definition, include all the files in the <TT>src/asio/</TT> directory (i.e. <TT>asio.h,cpp</TT>, <TT>asiodrivers.h,cpp</TT>, ...), and link with the <TT>winmm.lib</TT>, and <TT>Wsock32.lib</TT> libraries. In addition, the <TT>__LITTLE_ENDIAN__</TT> preprocessor definition is necessary for all Windows systems. 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 <A HREF="http://www.microsoft.com/directx/">Microsoft</A>). Further, the <I><B>effects</B></I> project requires that your soundcard and drivers provide full duplex mode capabilities. Visual C++ 6.0 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.</LI>
<LI><B>Linux:</B> Realtime support is enabled with either the <TT>__LINUX_OSS__</TT> or <TT>__LINUX_ALSA__</TT> preprocessor definitions, which are used to select the underlying audio/MIDI system API. Realtime programs must also link with the <TT>pthread</TT> library. When using the ALSA API, it is also necessary to link with the <TT>asound</TT> library. In addition, the <TT>__LITTLE_ENDIAN__</TT> preprocessor definition is necessary if compiling on a little-endian system. Assuming your system has the <A HREF="http://gnu.cetcol.net.co/">GNU</A> Makefile utilities installed, typing <TT>make</TT> within a particular project directory will initiate the compilation process. The <TT>Makefile</TT> will have to be modified to change the default audio/MIDI system API and for big-endian processors. Special support exists under Linux for the MIDIator serial MIDI device, enabled using the __MIDIATOR__ preprocessor definition (together with either the __LINUX_ALSA__ or __LINUX_OSS__ definitions). See the README-Linux file for further system configuration information.</LI>
<LI><B>WindowsNT:</B> DirectX support for NT is inadequate, so it is not possible to use STK under WindowsNT with realtime DirectX support. It may be possible to use STK under WindowsNT with realtime ASIO support, though this has not been tested.</LI>
<LI><B>SGI:</B> Realtime support is enabled with the <TT>__IRIX_AL__</TT> preprocessor definition and linkage with the <TT>audio</TT>, <TT>md</TT>, and <TT>pthread</TT> libraries. If your system has the <A HREF="http://gnu.cetcol.net.co/">GNU</A> Makefile utilities installed, typing <TT>make</TT> (or <TT>gmake</TT>) within a particular project directory will initiate the compilation process. If your system does not have the GNU Makefile utilities, you should first try to download and install them. If this is not possible, a generic Makefile is provided with the <I><B>demo</B></I> project (Makefile.sgi). It can be invoked by typing <TT>make -f Makefile.sgi</TT> within that project directory. STK 4.0 is confirmed to compile using CC version 7.30. There may be problems with old compiler versions.</LI>
<LI><B>Unix Systems:</B> A GNU <TT>configure</TT> shell script is included in the distribution for unix-based systems. From the top-level distribution directory, type <TT>'./configure'</TT> and the script will create <TT>Makefiles</TT> in each project directory specific to the characteristics of the host computer. Then from within any given project directory (example <TT>demo</TT>), type <TT>'make'</TT> to compile the project. In addition, an STK library can be compiled from within the <TT>src</TT> directory.
<LI><B>Windows95/98/2000/XP:</B> Realtime support is enabled with the <TT>__WINDOWS_DS__</TT> preprocessor definition and linkage with the <TT>dsound.lib</TT>, <TT>winmm.lib</TT>, and <TT>Wsock32.lib</TT> libraries. In addition, the <TT>__LITTLE_ENDIAN__</TT> preprocessor definition is necessary for all Windows systems. A distribution of the release is available with precompiled binaries 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 <A HREF="http://www.microsoft.com/directx/">Microsoft</A>). Further, the <I><B>effects</B></I> project requires that your soundcard and drivers provide full duplex mode capabilities. Visual C++ 6.0 project file 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.</LI>
Several options can be supplied to the <TT>configure</TT> script to customize the build behavior:
<LI><B>WindowsNT:</B> I've given up trying to make things work under NT. You'll have to switch to Windows 2000 (which does seem to work).</LI> <UL>
</UL> <LI><TT>--disable-realtime</TT> to only compile generic non-realtime classes</LI>
<LI><TT>--enable-debug</TT> to enable various debug output</LI>
<LI><TT>--enable-midiator</TT> to enable native MS-124W MIDI support (linux only)</LI>
\section control Control Data: <LI><TT>--with-alsa</TT> to choose native ALSA API support (linux only)</LI>
</UL>
All STK programs in this distribution take input control data in the form of <A HREF="skini.html">SKINI</A> or MIDI messages only. The Messager class unifies the various means of acquiring control data under a single, easy to use set of functions. The way that SKINI messages can be sent to the programs is dependent upon the operating system in use, as well as whether the program is running in realtime or not. In general, it is possible to: <P>
In addition, it is possible to specify the location of the STK rawwaves and the STK include path as follows:
<OL> \code
<LI>Redirect or pipe SKINI scorefiles to an executable.</LI> ./configure RAWWAVE_PATH="/home/gary/rawwaves/"
<LI>Pipe realtime SKINI input messages to an executable (not possible under Windows95/98).</LI> ./configure INCLUDE_PATH="/home/gary/include/"
<LI>Socket realtime SKINI input messages to an executable.</LI> \endcode
<LI>Acquire realtime MIDI messages from a MIDI port on your computer.</LI>
</OL> For novice STK users, the default configuration should be adequate.
</UL>
<A HREF="http://dev.scriptics.com">Tcl/Tk</A> graphical user interfaces (GUI) are provided with this distribution which can generate realtime SKINI messages. Note that the Messager class allows multiple simultaneous socket client connections, together with MIDI and/or piped input. The <I><B>Md2Skini</B></I> program (in the <I><B>demo</B></I> directory) is mostly obsolete but can be used to create SKINI scorefiles from realtime MIDI input.
For those who wish to create their own system-specific <TT>Makefiles</TT>:
<UL>
\section instruments Demo: STK Instruments <LI><B>Linux:</B> Realtime support is enabled with either the <TT>__LINUX_OSS__</TT> or <TT>__LINUX_ALSA__</TT> preprocessor definitions, which are used to select the underlying audio/MIDI system API. Realtime programs must also link with the <TT>pthread</TT> library. When using the ALSA API, it is also necessary to link with the <TT>asound</TT> library. In addition, the <TT>__LITTLE_ENDIAN__</TT> preprocessor definition is necessary if compiling on a little-endian system. Special support exists under Linux for the MIDIator serial MIDI device, enabled using the <TT>__MIDIATOR__</TT> preprocessor definition (together with either the <TT>__LINUX_ALSA__</TT> or <TT>__LINUX_OSS__</TT> definitions). See the README-Linux file for further system configuration information.</LI>
The <I><B>demo</B></I> project demonstrates the behavior of all the distributed STK instruments. The instruments available with this release include: <LI><B>Macintosh OS X:</B> Realtime support is enabled with the <TT>__MACOSX_CORE__</TT> preprocessor definitions, which incorporates the CoreAudio audio/MIDI API. Realtime programs must also link with the <TT>pthread</TT> library and the <TT>CoreAudio</TT>, <TT>CoreMIDI</TT>, and <TT>CoreFoundation</TT> frameworks. See the README-MacOSX file for further system configuration information.</LI>
<UL>
<LI>Clarinet: Pretty good physical model of the clarinet</LI> <LI><B>SGI:</B> Realtime support is enabled with the <TT>__IRIX_AL__</TT> preprocessor definition and linkage with the <TT>audio</TT>, <TT>md</TT>, and <TT>pthread</TT> libraries. STK 4.0 (and higher) is confirmed to compile using CC version 7.30. There may be problems with old compiler versions.</LI>
<LI>BlowHole: A clarinet physical model with one tonehole and one register vent</LI>
<LI>Saxofony: A psuedo-conical bore reed instrument which sometimes sounds like a saxophone</LI> <LI><B>Generic (non-realtime):</B> Most STK classes are operating system <I>independent</I> and can be compiled using any current C++ compiler. STK assumes big-endian host byte order by default, so if your system is little-endian (i.e. Intel processor), you must provide the <TT>__LITTLE_ENDIAN__</TT> preprocessor definition to your compiler. The <I><B>demo</B></I> 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 <I>cannot</I> be used without realtime support: RtAudio, RtWvIn, RtWvOut, RtDuplex, RtMidi, Socket, Thread, TcpWvIn, TcpWvOut. Because of this, it is not possible to compile the <I><B>effects</B></I>, <I><B>ragamatic</B></I>, and most of the <I><B>examples</B></I> projects for non-realtime use.</LI>
<LI>Flute: Pretty good physical model of the flute</LI> </UL>
<LI>Brass: Not so bad physical model of a brass instrument</LI>
<LI>BlowBotl: A basic helmholtz resonator and air jet model</LI>
<LI>Bowed: Not hideous physical model of a bowed string instrument</LI> \section control Control Data:
<LI>Plucked: Yer basic plucked string physical model</LI>
<LI>StifKarp: A simple plucked, stiff string physical model</LI> All STK programs in this distribution take input control data in the form of <A HREF="skini.html">SKINI</A> or MIDI messages only. The Messager class unifies the various means of acquiring control data under a single, easy to use set of functions. The way that SKINI messages can be sent to the programs is dependent upon the operating system in use, as well as whether the program is running in realtime or not. In general, it is possible to:
<LI>Sitar: A simple sitar/plucked string physical model</LI>
<LI>Mandolin: Two-string mandolin physical model</LI> <OL>
<LI>Rhodey: Rhodes-like electric piano FM synthesis model</LI> <LI>Redirect or pipe SKINI scorefiles to an executable.</LI>
<LI>Wurley: Wurlitzer-like electric piano FM synthesis model</LI> <LI>Pipe realtime SKINI input messages to an executable (not possible under Windows95/98).</LI>
<LI>TubeBell: FM synthesis model</LI> <LI>Socket realtime SKINI input messages to an executable.</LI>
<LI>HevyMetl: Distorted synthesizer FM synthesis model</LI> <LI>Acquire realtime MIDI messages from a MIDI port on your computer.</LI>
<LI>PercFlut: Percussive flute-like FM synthesis model</LI> </OL>
<LI>BeeThree: Cheezy organ FM synthesis model</LI>
<LI>Moog: Swept filter sampler</LI> <A HREF="http://dev.scriptics.com">Tcl/Tk</A> graphical user interfaces (GUI) are provided with this distribution which can generate realtime SKINI messages. Note that the Messager class allows multiple simultaneous socket client connections, together with MIDI and/or piped input. The <I><B>Md2Skini</B></I> program (in the <I><B>demo</B></I> directory) is mostly obsolete but can be used to create SKINI scorefiles from realtime MIDI input.
<LI>FMVoices: Three-formant FM voice synthesis</LI>
<LI>Resonate: Noise through a BiQuad filter</LI>
<LI>Drummer: Sampling synthesis</LI> \section instruments Demo: STK Instruments
<LI>BandedWG: Banded waveguide meta-object for bowed bars, tibetan bowls, etc.</LI>
<LI>Shakers: Various stochastic event models of shaker instruments</LI> The <I><B>demo</B></I> project demonstrates the behavior of all the distributed STK instruments. The instruments available with this release include:
<LI>ModalBar: Various four-resonance presets (marimba, vibraphone, etc...)</LI> <UL>
<LI>Mesh2D: Two-dimensional, rectilinear digital waveguide mesh</LI> <LI>Clarinet: Pretty good physical model of the clarinet</LI>
</UL> <LI>BlowHole: A clarinet physical model with one tonehole and one register vent</LI>
<LI>Saxofony: A psuedo-conical bore reed instrument which sometimes sounds like a saxophone</LI>
\section nort Demo: Non-Realtime Use <LI>Flute: Pretty good physical model of the flute</LI>
<LI>Brass: Not so bad physical model of a brass instrument</LI>
See the information above with respect to compiling STK for non-realtime use. <LI>BlowBotl: A basic helmholtz resonator and air jet model</LI>
<LI>Bowed: Not hideous physical model of a bowed string instrument</LI>
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 <I>scores</I> directory of the <I><B>demo</B></I> project. Assuming a successful compilation of the <I><B>demo</B></I> program, typing: <LI>Plucked: Yer basic plucked string physical model</LI>
<LI>StifKarp: A simple plucked, stiff string physical model</LI>
\code <LI>Sitar: A simple sitar/plucked string physical model</LI>
cat scores/bookert.ski | demo BeeThree -w myfile.wav <LI>Mandolin: Two-string mandolin physical model</LI>
\endcode <LI>Rhodey: Rhodes-like electric piano FM synthesis model</LI>
<LI>Wurley: Wurlitzer-like electric piano FM synthesis model</LI>
or (on WindowsXX and/or Unix) <LI>TubeBell: FM synthesis model</LI>
<LI>HevyMetl: Distorted synthesizer FM synthesis model</LI>
\code <LI>PercFlut: Percussive flute-like FM synthesis model</LI>
demo BeeThree -w myfile.wav < scores\bookert.ski <LI>BeeThree: Cheezy organ FM synthesis model</LI>
\endcode <LI>Moog: Swept filter sampler</LI>
<LI>FMVoices: Three-formant FM voice synthesis</LI>
from the <I><B>demo</B></I> directory will play the scorefile <I>bookert.ski</I> using the STK BeeThree instrument and write the resulting audio data to a WAV formatted soundfile called "myfile.wav". Typing <TT>demo</TT> without any arguments will provide a full program usage description. <LI>VoicForm: Four-formant resonance filter voice synthesis</LI>
<LI>Resonate: Noise through a BiQuad filter</LI>
<LI>Drummer: Sampling synthesis</LI>
\section rt Demo: Realtime Use <LI>BandedWG: Banded waveguide meta-object for bowed bars, tibetan bowls, etc.</LI>
<LI>Shakers: Various stochastic event models of shaker instruments</LI>
STK realtime audio and MIDI input/output and realtime SKINI control input via socketing support is provided for Linux, SGI, and Windows95/98/2000/XP operating systems. STK realtime SKINI control input via piping is possible under Linux, SGI, and Windows2000/XP only. <LI>ModalBar: Various four-resonance presets (marimba, vibraphone, etc...)</LI>
<P> <LI>Mesh2D: Two-dimensional, rectilinear digital waveguide mesh</LI>
Control input and audio output options are typically specified as command-line arguments to STK programs. For example, the <I><B>demo</B></I> program is invoked as: <LI>Whistle: Hybrid physical/spectral model of a police whistle</LI>
</UL>
\code
demo instrument flags \section nort Demo: Non-Realtime Use
\endcode
See the information above with respect to compiling STK for non-realtime use.
where instruments include those described above and flags can be any or all of:
<UL> 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 <I>scores</I> directory of the <I><B>demo</B></I> project. Assuming a successful compilation of the <I><B>demo</B></I> program, typing:
<LI><I>-or</I> for realtime audio output,</LI>
<LI><I>-ow <file name></I> for WAV soundfile output,</LI> \code
<LI><I>-os <file name></I> for SND (AU) soundfile output,</LI> cat scores/bookert.ski | demo BeeThree -ow myfile.wav
<LI><I>-om <file name></I> for MAT-file output,</LI> \endcode
<LI><I>-ip</I> or <I>-is</I> for realtime SKINI control input via piping or socketing, respectively,</LI>
<LI><I>-im <file name></I> for MIDI control input</LI> or (on WindowsXX and/or Unix)
</UL>
The <-ip> and <-is> flags must be used when piping or socketing realtime SKINI control data to an STK program. The <-im> flag must be used to read MIDI control input from your MIDI port. Note that you can use all three input types simultaneously. \code
demo BeeThree -ow myfile.wav < scores\bookert.ski
Assuming a successful compilation of the <I><B>demo</B></I> program, typing: \endcode
\code from the <I><B>demo</B></I> directory will play the scorefile <I>bookert.ski</I> using the STK BeeThree instrument and write the resulting audio data to a WAV formatted soundfile called "myfile.wav". Typing <TT>demo</TT> without any arguments will provide a full program usage description.
cat scores/bookert.ski | demo BeeThree -or
\endcode
\section rt Demo: Realtime Use
or (on WindowsXX and/or Unix)
STK realtime audio and MIDI input/output and realtime SKINI control input via socketing support is provided for Linux, SGI, Mac OS X, and Windows95/98/2000/XP operating systems. STK realtime SKINI control input via piping is possible under Linux, SGI, Mac OS X, and Windows2000/XP only.
\code <P>
demo BeeThree -or < scores\bookert.ski Control input and audio output options are typically specified as command-line arguments to STK programs. For example, the <I><B>demo</B></I> program is invoked as:
\endcode
\code
from the <I><B>demo</B></I> directory will play the scorefile <I>bookert.ski</I> using the STK BeeThree instrument and stream the resulting audio data in realtime to the audio output channel of your computer. Typing <TT>demo</TT> without any arguments will provide a full program usage description. demo instrument flags
\endcode
\section tcl Realtime Control Input using Tcl/Tk Graphical User Interfaces: where instruments include those described above and flags can be any or all of:
<UL>
There are a number of <A HREF="http://dev.scriptics.com">Tcl/Tk</A> GUIs supplied with the STK projects. These scripts require Tcl/Tk version 8.0 or later, which can be downloaded for free over the WWW. On Unix and Windows2000/XP platforms, you can run the various executable scripts (e.g. StkDemo.bat) provided with each project to start everything up (you may need to symbolically link the wish80 executable to the name <I>wish</I>). The PhysicalDemo script just implements the following command-line sequence: <LI><I>-or</I> for realtime audio output,</LI>
<LI><I>-ow <file name></I> for WAV soundfile output,</LI>
\code <LI><I>-os <file name></I> for SND (AU) soundfile output,</LI>
wish < tcl/Physical.tcl | demo Clarinet -or -ip <LI><I>-om <file name></I> for MAT-file output,</LI>
\endcode <LI><I>-ip</I> for realtime SKINI control input via piping,</LI>
<LI><I>-is <port></I> > for realtime SKINI control input via socketing (with an optional port number),</LI>
On WindowsXX and Unix platforms, the following operations are necessary to establish a socket connection between the Tcl/Tk GUI and the STK program: <LI><I>-im <file name></I> for MIDI control input</LI>
<OL> <LI><I>-s RATE</I> to specify a sample rate</LI>
<LI>Open a DOS shell and start the STK program with the <I>-is</I> flag (ex. <I><B>demo Clarinet -or -is</B></I>).</LI> <LI><I>-n NUMBER</I> to specify multivoice polyphony</LI>
<LI>Open the Tcl/Tk GUI (e.g. tcl/Physical.tcl) by double-clicking on it, or type <TT>wish < tcl/Physical.tcl</TT> in another DOS shell.</LI> </UL>
<LI>Establish the socket connection by selecting <I>Socket</I> under the Communications menu item in the Tcl/Tk GUI.</LI> The <-ip> and <-is> flags must be used when piping or socketing realtime SKINI control data to an STK program. The <-im> flag must be used to read MIDI control input from your MIDI port. Note that you can use all three input types simultaneously.
</OL>
Assuming a successful compilation of the <I><B>demo</B></I> program, typing:
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.
\code
cat scores/bookert.ski | demo BeeThree -or
\section midi Realtime MIDI Control Input: \endcode
On all supported realtime platforms, you can direct realtime MIDI input to the STK Clarinet by typing: or (on WindowsXX and/or Unix)
\code \code
demo Clarinet -or -im demo BeeThree -or < scores\bookert.ski
\endcode \endcode
*/ from the <I><B>demo</B></I> directory will play the scorefile <I>bookert.ski</I> using the STK BeeThree instrument and stream the resulting audio data in realtime to the audio output channel of your computer. Typing <TT>demo</TT> without any arguments will provide a full program usage description.
\section tcl Realtime Control Input using Tcl/Tk Graphical User Interfaces:
There are a number of <A HREF="http://dev.scriptics.com">Tcl/Tk</A> GUIs supplied with the STK projects. These scripts require Tcl/Tk version 8.0 or later, which can be downloaded for free over the WWW. On Unix and Windows2000/XP platforms, you can run the various executable scripts (e.g. StkDemo.bat) provided with each project to start everything up (you may need to symbolically link the wishXX executable to the name <I>wish</I>). The Physical.bat script just implements the following command-line sequence:
\code
wish < tcl/Physical.tcl | demo Clarinet -or -ip
\endcode
On WindowsXX and Unix platforms, the following operations are necessary to establish a socket connection between the Tcl/Tk GUI and the STK program:
<OL>
<LI>Open a DOS shell and start the STK program with the <I>-is</I> flag (ex. <I><B>demo Clarinet -or -is</B></I>).</LI>
<LI>Open the Tcl/Tk GUI (e.g. tcl/Physical.tcl) by double-clicking on it, or type <TT>wish < tcl/Physical.tcl</TT> in another DOS shell.</LI>
<LI>Establish the socket connection by selecting <I>Socket</I> under the Communications menu item in the Tcl/Tk GUI.</LI>
</OL>
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.
\section midi Realtime MIDI Control Input:
On all supported realtime platforms, you can direct realtime MIDI input to the STK Clarinet by typing:
\code
demo Clarinet -or -im
\endcode
\section polyphony Polyphony:
The <I><B>demo</B></I> program supports an arbitrary number of voices via the <TT>-n NUMBER</TT> 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:
\code
demo BeeThree -n 8 -or -im
\endcode
*/

View File

@@ -1,12 +1,12 @@
<HTML> <HTML>
<HEAD> <HEAD>
<TITLE>The Synthesis ToolKit in C++ (STK)</TITLE> <TITLE>The Synthesis ToolKit in C++ (STK)</TITLE>
<LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css"> <LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css">
</HEAD> </HEAD>
<BODY BGCOLOR="#FFFFFF"> <BODY BGCOLOR="#FFFFFF">
<CENTER> <CENTER>
<img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P> <img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P>
<a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER> <a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="links.html">Links</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER>
<HR> <HR>
<!-- Generated by Doxygen 1.2.8.1 --> <!-- Generated by Doxygen 1.2.8.1 -->
<h1>ADSR.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************/</font> <h1>ADSR.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************/</font>
@@ -65,12 +65,12 @@
00086 }; 00086 };
00087 00087
00088 <font class="preprocessor">#endif</font> 00088 <font class="preprocessor">#endif</font>
</font></pre></div><HR> </font></pre></div><HR>
<table> <table>
<tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr> <tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr>
<tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr> <tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr>
</table> </table>
</BODY> </BODY>
</HTML> </HTML>

View File

@@ -1,12 +1,12 @@
<HTML> <HTML>
<HEAD> <HEAD>
<TITLE>The Synthesis ToolKit in C++ (STK)</TITLE> <TITLE>The Synthesis ToolKit in C++ (STK)</TITLE>
<LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css"> <LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css">
</HEAD> </HEAD>
<BODY BGCOLOR="#FFFFFF"> <BODY BGCOLOR="#FFFFFF">
<CENTER> <CENTER>
<img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P> <img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P>
<a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER> <a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="links.html">Links</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER>
<HR> <HR>
<!-- Generated by Doxygen 1.2.8.1 --> <!-- Generated by Doxygen 1.2.8.1 -->
<h1>BandedWG.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************/</font> <h1>BandedWG.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************/</font>
@@ -15,10 +15,10 @@
00032 <font class="preprocessor">#if !defined(__BANDEDWG_H)</font> 00032 <font class="preprocessor">#if !defined(__BANDEDWG_H)</font>
00033 <font class="preprocessor"></font><font class="preprocessor">#define __BANDEDWG_H</font> 00033 <font class="preprocessor"></font><font class="preprocessor">#define __BANDEDWG_H</font>
00034 <font class="preprocessor"></font> 00034 <font class="preprocessor"></font>
00035 <font class="preprocessor">#define MAX_BANDED_MODES 17</font> 00035 <font class="preprocessor">#define MAX_BANDED_MODES 20</font>
00036 <font class="preprocessor"></font> 00036 <font class="preprocessor"></font>
00037 <font class="preprocessor">#include "Instrmnt.h"</font> 00037 <font class="preprocessor">#include "Instrmnt.h"</font>
00038 <font class="preprocessor">#include "Delay.h"</font> 00038 <font class="preprocessor">#include "DelayL.h"</font>
00039 <font class="preprocessor">#include "BowTabl.h"</font> 00039 <font class="preprocessor">#include "BowTabl.h"</font>
00040 <font class="preprocessor">#include "ADSR.h"</font> 00040 <font class="preprocessor">#include "ADSR.h"</font>
00041 <font class="preprocessor">#include "BiQuad.h"</font> 00041 <font class="preprocessor">#include "BiQuad.h"</font>
@@ -61,27 +61,31 @@
00091 <a class="code" href="classBowTabl.html">BowTabl</a> *bowTabl; 00091 <a class="code" href="classBowTabl.html">BowTabl</a> *bowTabl;
00092 <a class="code" href="classADSR.html">ADSR</a> *adsr; 00092 <a class="code" href="classADSR.html">ADSR</a> *adsr;
00093 <a class="code" href="classBiQuad.html">BiQuad</a> *bandpass; 00093 <a class="code" href="classBiQuad.html">BiQuad</a> *bandpass;
00094 <a class="code" href="classDelay.html">Delay</a> *delay; 00094 <a class="code" href="classDelayL.html">DelayL</a> *delay;
00095 MY_FLOAT maxVelocity; 00095 MY_FLOAT maxVelocity;
00096 MY_FLOAT modes[MAX_BANDED_MODES]; 00096 MY_FLOAT modes[MAX_BANDED_MODES];
00097 MY_FLOAT freakency; 00097 MY_FLOAT freakency;
00098 MY_FLOAT baseGain; 00098 MY_FLOAT baseGain;
00099 MY_FLOAT gains[MAX_BANDED_MODES]; 00099 MY_FLOAT gains[MAX_BANDED_MODES];
00100 MY_FLOAT integrationConstant; 00100 MY_FLOAT basegains[MAX_BANDED_MODES];
00101 MY_FLOAT bowVelocity; 00101 MY_FLOAT excitation[MAX_BANDED_MODES];
00102 MY_FLOAT bowTarget; 00102 MY_FLOAT integrationConstant;
00103 MY_FLOAT bowPosition; 00103 MY_FLOAT velocityInput;
00104 <font class="keywordtype">int</font> strikePosition; 00104 MY_FLOAT bowVelocity;
00105 00105 MY_FLOAT bowTarget;
00106 }; 00106 MY_FLOAT bowPosition;
00107 00107 MY_FLOAT strikeAmp;
00108 <font class="preprocessor">#endif</font> 00108 <font class="keywordtype">int</font> strikePosition;
</font></pre></div><HR> 00109
00110 };
<table> 00111
<tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr> 00112 <font class="preprocessor">#endif</font>
<tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr> </font></pre></div><HR>
</table>
<table>
</BODY> <tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr>
<tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr>
</table>
</BODY>
</HTML> </HTML>

View File

@@ -1,12 +1,12 @@
<HTML> <HTML>
<HEAD> <HEAD>
<TITLE>The Synthesis ToolKit in C++ (STK)</TITLE> <TITLE>The Synthesis ToolKit in C++ (STK)</TITLE>
<LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css"> <LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css">
</HEAD> </HEAD>
<BODY BGCOLOR="#FFFFFF"> <BODY BGCOLOR="#FFFFFF">
<CENTER> <CENTER>
<img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P> <img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P>
<a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER> <a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="links.html">Links</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER>
<HR> <HR>
<!-- Generated by Doxygen 1.2.8.1 --> <!-- Generated by Doxygen 1.2.8.1 -->
<h1>BeeThree.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************/</font> <h1>BeeThree.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************/</font>
@@ -30,12 +30,12 @@
00054 }; 00054 };
00055 00055
00056 <font class="preprocessor">#endif</font> 00056 <font class="preprocessor">#endif</font>
</font></pre></div><HR> </font></pre></div><HR>
<table> <table>
<tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr> <tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr>
<tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr> <tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr>
</table> </table>
</BODY> </BODY>
</HTML> </HTML>

View File

@@ -1,12 +1,12 @@
<HTML> <HTML>
<HEAD> <HEAD>
<TITLE>The Synthesis ToolKit in C++ (STK)</TITLE> <TITLE>The Synthesis ToolKit in C++ (STK)</TITLE>
<LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css"> <LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css">
</HEAD> </HEAD>
<BODY BGCOLOR="#FFFFFF"> <BODY BGCOLOR="#FFFFFF">
<CENTER> <CENTER>
<img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P> <img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P>
<a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER> <a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="links.html">Links</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER>
<HR> <HR>
<!-- Generated by Doxygen 1.2.8.1 --> <!-- Generated by Doxygen 1.2.8.1 -->
<h1>BiQuad.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************/</font> <h1>BiQuad.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************/</font>
@@ -59,12 +59,12 @@
00098 }; 00098 };
00099 00099
00100 <font class="preprocessor">#endif</font> 00100 <font class="preprocessor">#endif</font>
</font></pre></div><HR> </font></pre></div><HR>
<table> <table>
<tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr> <tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr>
<tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr> <tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr>
</table> </table>
</BODY> </BODY>
</HTML> </HTML>

View File

@@ -1,12 +1,12 @@
<HTML> <HTML>
<HEAD> <HEAD>
<TITLE>The Synthesis ToolKit in C++ (STK)</TITLE> <TITLE>The Synthesis ToolKit in C++ (STK)</TITLE>
<LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css"> <LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css">
</HEAD> </HEAD>
<BODY BGCOLOR="#FFFFFF"> <BODY BGCOLOR="#FFFFFF">
<CENTER> <CENTER>
<img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P> <img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P>
<a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER> <a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="links.html">Links</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER>
<HR> <HR>
<!-- Generated by Doxygen 1.2.8.1 --> <!-- Generated by Doxygen 1.2.8.1 -->
<h1>BlowBotl.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************/</font> <h1>BlowBotl.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************/</font>
@@ -61,12 +61,12 @@
00075 }; 00075 };
00076 00076
00077 <font class="preprocessor">#endif</font> 00077 <font class="preprocessor">#endif</font>
</font></pre></div><HR> </font></pre></div><HR>
<table> <table>
<tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr> <tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr>
<tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr> <tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr>
</table> </table>
</BODY> </BODY>
</HTML> </HTML>

View File

@@ -1,12 +1,12 @@
<HTML> <HTML>
<HEAD> <HEAD>
<TITLE>The Synthesis ToolKit in C++ (STK)</TITLE> <TITLE>The Synthesis ToolKit in C++ (STK)</TITLE>
<LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css"> <LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css">
</HEAD> </HEAD>
<BODY BGCOLOR="#FFFFFF"> <BODY BGCOLOR="#FFFFFF">
<CENTER> <CENTER>
<img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P> <img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P>
<a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER> <a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="links.html">Links</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER>
<HR> <HR>
<!-- Generated by Doxygen 1.2.8.1 --> <!-- Generated by Doxygen 1.2.8.1 -->
<h1>BlowHole.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************/</font> <h1>BlowHole.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************/</font>
@@ -73,12 +73,12 @@
00106 }; 00106 };
00107 00107
00108 <font class="preprocessor">#endif</font> 00108 <font class="preprocessor">#endif</font>
</font></pre></div><HR> </font></pre></div><HR>
<table> <table>
<tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr> <tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr>
<tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr> <tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr>
</table> </table>
</BODY> </BODY>
</HTML> </HTML>

View File

@@ -1,12 +1,12 @@
<HTML> <HTML>
<HEAD> <HEAD>
<TITLE>The Synthesis ToolKit in C++ (STK)</TITLE> <TITLE>The Synthesis ToolKit in C++ (STK)</TITLE>
<LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css"> <LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css">
</HEAD> </HEAD>
<BODY BGCOLOR="#FFFFFF"> <BODY BGCOLOR="#FFFFFF">
<CENTER> <CENTER>
<img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P> <img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P>
<a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER> <a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="links.html">Links</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER>
<HR> <HR>
<!-- Generated by Doxygen 1.2.8.1 --> <!-- Generated by Doxygen 1.2.8.1 -->
<h1>BowTabl.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************/</font> <h1>BowTabl.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************/</font>
@@ -45,12 +45,12 @@
00060 }; 00060 };
00061 00061
00062 <font class="preprocessor">#endif</font> 00062 <font class="preprocessor">#endif</font>
</font></pre></div><HR> </font></pre></div><HR>
<table> <table>
<tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr> <tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr>
<tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr> <tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr>
</table> </table>
</BODY> </BODY>
</HTML> </HTML>

View File

@@ -1,12 +1,12 @@
<HTML> <HTML>
<HEAD> <HEAD>
<TITLE>The Synthesis ToolKit in C++ (STK)</TITLE> <TITLE>The Synthesis ToolKit in C++ (STK)</TITLE>
<LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css"> <LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css">
</HEAD> </HEAD>
<BODY BGCOLOR="#FFFFFF"> <BODY BGCOLOR="#FFFFFF">
<CENTER> <CENTER>
<img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P> <img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P>
<a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER> <a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="links.html">Links</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER>
<HR> <HR>
<!-- Generated by Doxygen 1.2.8.1 --> <!-- Generated by Doxygen 1.2.8.1 -->
<h1>Bowed.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************/</font> <h1>Bowed.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************/</font>
@@ -64,12 +64,12 @@
00084 }; 00084 };
00085 00085
00086 <font class="preprocessor">#endif</font> 00086 <font class="preprocessor">#endif</font>
</font></pre></div><HR> </font></pre></div><HR>
<table> <table>
<tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr> <tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr>
<tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr> <tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr>
</table> </table>
</BODY> </BODY>
</HTML> </HTML>

View File

@@ -1,12 +1,12 @@
<HTML> <HTML>
<HEAD> <HEAD>
<TITLE>The Synthesis ToolKit in C++ (STK)</TITLE> <TITLE>The Synthesis ToolKit in C++ (STK)</TITLE>
<LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css"> <LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css">
</HEAD> </HEAD>
<BODY BGCOLOR="#FFFFFF"> <BODY BGCOLOR="#FFFFFF">
<CENTER> <CENTER>
<img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P> <img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P>
<a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER> <a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="links.html">Links</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER>
<HR> <HR>
<!-- Generated by Doxygen 1.2.8.1 --> <!-- Generated by Doxygen 1.2.8.1 -->
<h1>Brass.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************/</font> <h1>Brass.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************/</font>
@@ -62,12 +62,12 @@
00081 }; 00081 };
00082 00082
00083 <font class="preprocessor">#endif</font> 00083 <font class="preprocessor">#endif</font>
</font></pre></div><HR> </font></pre></div><HR>
<table> <table>
<tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr> <tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr>
<tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr> <tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr>
</table> </table>
</BODY> </BODY>
</HTML> </HTML>

View File

@@ -1,12 +1,12 @@
<HTML> <HTML>
<HEAD> <HEAD>
<TITLE>The Synthesis ToolKit in C++ (STK)</TITLE> <TITLE>The Synthesis ToolKit in C++ (STK)</TITLE>
<LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css"> <LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css">
</HEAD> </HEAD>
<BODY BGCOLOR="#FFFFFF"> <BODY BGCOLOR="#FFFFFF">
<CENTER> <CENTER>
<img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P> <img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P>
<a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER> <a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="links.html">Links</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER>
<HR> <HR>
<!-- Generated by Doxygen 1.2.8.1 --> <!-- Generated by Doxygen 1.2.8.1 -->
<h1>Chorus.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************/</font> <h1>Chorus.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************/</font>
@@ -56,12 +56,12 @@
00063 00063
00064 <font class="preprocessor">#endif</font> 00064 <font class="preprocessor">#endif</font>
00065 <font class="preprocessor"></font> 00065 <font class="preprocessor"></font>
</pre></div><HR> </pre></div><HR>
<table> <table>
<tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr> <tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr>
<tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr> <tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr>
</table> </table>
</BODY> </BODY>
</HTML> </HTML>

View File

@@ -1,12 +1,12 @@
<HTML> <HTML>
<HEAD> <HEAD>
<TITLE>The Synthesis ToolKit in C++ (STK)</TITLE> <TITLE>The Synthesis ToolKit in C++ (STK)</TITLE>
<LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css"> <LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css">
</HEAD> </HEAD>
<BODY BGCOLOR="#FFFFFF"> <BODY BGCOLOR="#FFFFFF">
<CENTER> <CENTER>
<img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P> <img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P>
<a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER> <a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="links.html">Links</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER>
<HR> <HR>
<!-- Generated by Doxygen 1.2.8.1 --> <!-- Generated by Doxygen 1.2.8.1 -->
<h1>Clarinet.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************/</font> <h1>Clarinet.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************/</font>
@@ -61,12 +61,12 @@
00081 }; 00081 };
00082 00082
00083 <font class="preprocessor">#endif</font> 00083 <font class="preprocessor">#endif</font>
</font></pre></div><HR> </font></pre></div><HR>
<table> <table>
<tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr> <tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr>
<tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr> <tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr>
</table> </table>
</BODY> </BODY>
</HTML> </HTML>

View File

@@ -1,12 +1,12 @@
<HTML> <HTML>
<HEAD> <HEAD>
<TITLE>The Synthesis ToolKit in C++ (STK)</TITLE> <TITLE>The Synthesis ToolKit in C++ (STK)</TITLE>
<LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css"> <LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css">
</HEAD> </HEAD>
<BODY BGCOLOR="#FFFFFF"> <BODY BGCOLOR="#FFFFFF">
<CENTER> <CENTER>
<img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P> <img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P>
<a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER> <a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="links.html">Links</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER>
<HR> <HR>
<!-- Generated by Doxygen 1.2.8.1 --> <!-- Generated by Doxygen 1.2.8.1 -->
<h1>DelayA.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************/</font> <h1>DelayA.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************/</font>
@@ -35,21 +35,26 @@
00052 00052
00054 MY_FLOAT <a class="code" href="classDelay.html#a5">getDelay</a>(<font class="keywordtype">void</font>); 00054 MY_FLOAT <a class="code" href="classDelay.html#a5">getDelay</a>(<font class="keywordtype">void</font>);
00055 00055
00057 MY_FLOAT <a class="code" href="classDelay.html#a9">tick</a>(MY_FLOAT sample); 00057
00058 00060 MY_FLOAT <a class="code" href="classDelay.html#a9">nextOut</a>(<font class="keywordtype">void</font>);
00059 <font class="keyword">protected</font>: 00061
00060 MY_FLOAT alpha; 00063 MY_FLOAT <a class="code" href="classDelay.html#a10">tick</a>(MY_FLOAT sample);
00061 MY_FLOAT coeff;
00062 MY_FLOAT apInput;
00063 };
00064 00064
00065 <font class="preprocessor">#endif</font> 00065 <font class="keyword">protected</font>:
</font></pre></div><HR> 00066 MY_FLOAT alpha;
00067 MY_FLOAT coeff;
<table> 00068 MY_FLOAT apInput;
<tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr> 00069 MY_FLOAT nextOutput;
<tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr> 00070 <font class="keywordtype">bool</font> doNextOut;
</table> 00071 };
00072
</BODY> 00073 <font class="preprocessor">#endif</font>
</font></pre></div><HR>
<table>
<tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr>
<tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr>
</table>
</BODY>
</HTML> </HTML>

View File

@@ -1,12 +1,12 @@
<HTML> <HTML>
<HEAD> <HEAD>
<TITLE>The Synthesis ToolKit in C++ (STK)</TITLE> <TITLE>The Synthesis ToolKit in C++ (STK)</TITLE>
<LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css"> <LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css">
</HEAD> </HEAD>
<BODY BGCOLOR="#FFFFFF"> <BODY BGCOLOR="#FFFFFF">
<CENTER> <CENTER>
<img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P> <img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P>
<a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER> <a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="links.html">Links</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER>
<HR> <HR>
<!-- Generated by Doxygen 1.2.8.1 --> <!-- Generated by Doxygen 1.2.8.1 -->
<h1>DelayL.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************/</font> <h1>DelayL.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************/</font>
@@ -33,20 +33,25 @@
00049 00049
00051 MY_FLOAT <a class="code" href="classDelay.html#a5">getDelay</a>(<font class="keywordtype">void</font>) <font class="keyword">const</font>; 00051 MY_FLOAT <a class="code" href="classDelay.html#a5">getDelay</a>(<font class="keywordtype">void</font>) <font class="keyword">const</font>;
00052 00052
00054 MY_FLOAT <a class="code" href="classDelay.html#a9">tick</a>(MY_FLOAT sample); 00054
00055 00057 MY_FLOAT <a class="code" href="classDelay.html#a9">nextOut</a>(<font class="keywordtype">void</font>);
00056 <font class="keyword">protected</font>: 00058
00057 MY_FLOAT alpha; 00060 MY_FLOAT <a class="code" href="classDelay.html#a10">tick</a>(MY_FLOAT sample);
00058 MY_FLOAT omAlpha; 00061
00059 }; 00062 <font class="keyword">protected</font>:
00060 00063 MY_FLOAT alpha;
00061 <font class="preprocessor">#endif</font> 00064 MY_FLOAT omAlpha;
</font></pre></div><HR> 00065 MY_FLOAT nextOutput;
00066 <font class="keywordtype">bool</font> doNextOut;
<table> 00067 };
<tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr> 00068
<tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr> 00069 <font class="preprocessor">#endif</font>
</table> </font></pre></div><HR>
</BODY> <table>
<tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr>
<tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr>
</table>
</BODY>
</HTML> </HTML>

View File

@@ -1,12 +1,12 @@
<HTML> <HTML>
<HEAD> <HEAD>
<TITLE>The Synthesis ToolKit in C++ (STK)</TITLE> <TITLE>The Synthesis ToolKit in C++ (STK)</TITLE>
<LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css"> <LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css">
</HEAD> </HEAD>
<BODY BGCOLOR="#FFFFFF"> <BODY BGCOLOR="#FFFFFF">
<CENTER> <CENTER>
<img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P> <img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P>
<a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER> <a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="links.html">Links</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER>
<HR> <HR>
<!-- Generated by Doxygen 1.2.8.1 --> <!-- Generated by Doxygen 1.2.8.1 -->
<h1>Delay.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************/</font> <h1>Delay.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************/</font>
@@ -41,25 +41,28 @@
00059 00059
00061 MY_FLOAT <a class="code" href="classFilter.html#a9">lastOut</a>(<font class="keywordtype">void</font>) <font class="keyword">const</font>; 00061 MY_FLOAT <a class="code" href="classFilter.html#a9">lastOut</a>(<font class="keywordtype">void</font>) <font class="keyword">const</font>;
00062 00062
00064 <font class="keyword">virtual</font> MY_FLOAT <a class="code" href="classFilter.html#a10">tick</a>(MY_FLOAT sample); 00064
00065 00067 <font class="keyword">virtual</font> MY_FLOAT <a class="code" href="classDelay.html#a9">nextOut</a>(<font class="keywordtype">void</font>) <font class="keyword">const</font>;
00067 <font class="keyword">virtual</font> MY_FLOAT *<a class="code" href="classFilter.html#a10">tick</a>(MY_FLOAT *vector, <font class="keywordtype">unsigned</font> <font class="keywordtype">int</font> vectorSize);
00068 00068
00069 <font class="keyword">protected</font>: 00070 <font class="keyword">virtual</font> MY_FLOAT <a class="code" href="classFilter.html#a10">tick</a>(MY_FLOAT sample);
00070 <font class="keywordtype">long</font> inPoint; 00071
00071 <font class="keywordtype">long</font> outPoint; 00073 <font class="keyword">virtual</font> MY_FLOAT *<a class="code" href="classFilter.html#a10">tick</a>(MY_FLOAT *vector, <font class="keywordtype">unsigned</font> <font class="keywordtype">int</font> vectorSize);
00072 <font class="keywordtype">long</font> length; 00074
00073 MY_FLOAT delay; 00075 <font class="keyword">protected</font>:
00074 }; 00076 <font class="keywordtype">long</font> inPoint;
00075 00077 <font class="keywordtype">long</font> outPoint;
00076 <font class="preprocessor">#endif</font> 00078 <font class="keywordtype">long</font> length;
00077 <font class="preprocessor"></font> 00079 MY_FLOAT delay;
</pre></div><HR> 00080 };
00081
<table> 00082 <font class="preprocessor">#endif</font>
<tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr> 00083 <font class="preprocessor"></font>
<tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr> </pre></div><HR>
</table>
<table>
</BODY> <tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr>
<tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr>
</table>
</BODY>
</HTML> </HTML>

View File

@@ -1,12 +1,12 @@
<HTML> <HTML>
<HEAD> <HEAD>
<TITLE>The Synthesis ToolKit in C++ (STK)</TITLE> <TITLE>The Synthesis ToolKit in C++ (STK)</TITLE>
<LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css"> <LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css">
</HEAD> </HEAD>
<BODY BGCOLOR="#FFFFFF"> <BODY BGCOLOR="#FFFFFF">
<CENTER> <CENTER>
<img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P> <img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P>
<a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER> <a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="links.html">Links</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER>
<HR> <HR>
<!-- Generated by Doxygen 1.2.8.1 --> <!-- Generated by Doxygen 1.2.8.1 -->
<h1>Drummer.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************/</font> <h1>Drummer.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************/</font>
@@ -45,12 +45,12 @@
00057 }; 00057 };
00058 00058
00059 <font class="preprocessor">#endif</font> 00059 <font class="preprocessor">#endif</font>
</font></pre></div><HR> </font></pre></div><HR>
<table> <table>
<tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr> <tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr>
<tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr> <tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr>
</table> </table>
</BODY> </BODY>
</HTML> </HTML>

View File

@@ -1,12 +1,12 @@
<HTML> <HTML>
<HEAD> <HEAD>
<TITLE>The Synthesis ToolKit in C++ (STK)</TITLE> <TITLE>The Synthesis ToolKit in C++ (STK)</TITLE>
<LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css"> <LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css">
</HEAD> </HEAD>
<BODY BGCOLOR="#FFFFFF"> <BODY BGCOLOR="#FFFFFF">
<CENTER> <CENTER>
<img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P> <img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P>
<a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER> <a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="links.html">Links</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER>
<HR> <HR>
<!-- Generated by Doxygen 1.2.8.1 --> <!-- Generated by Doxygen 1.2.8.1 -->
<h1>Echo.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************/</font> <h1>Echo.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************/</font>
@@ -47,12 +47,12 @@
00051 00051
00052 <font class="preprocessor">#endif</font> 00052 <font class="preprocessor">#endif</font>
00053 <font class="preprocessor"></font> 00053 <font class="preprocessor"></font>
</pre></div><HR> </pre></div><HR>
<table> <table>
<tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr> <tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr>
<tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr> <tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr>
</table> </table>
</BODY> </BODY>
</HTML> </HTML>

View File

@@ -1,12 +1,12 @@
<HTML> <HTML>
<HEAD> <HEAD>
<TITLE>The Synthesis ToolKit in C++ (STK)</TITLE> <TITLE>The Synthesis ToolKit in C++ (STK)</TITLE>
<LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css"> <LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css">
</HEAD> </HEAD>
<BODY BGCOLOR="#FFFFFF"> <BODY BGCOLOR="#FFFFFF">
<CENTER> <CENTER>
<img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P> <img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P>
<a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER> <a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="links.html">Links</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER>
<HR> <HR>
<!-- Generated by Doxygen 1.2.8.1 --> <!-- Generated by Doxygen 1.2.8.1 -->
<h1>Envelope.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************/</font> <h1>Envelope.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************/</font>
@@ -53,12 +53,12 @@
00066 }; 00066 };
00067 00067
00068 <font class="preprocessor">#endif</font> 00068 <font class="preprocessor">#endif</font>
</font></pre></div><HR> </font></pre></div><HR>
<table> <table>
<tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr> <tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr>
<tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr> <tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr>
</table> </table>
</BODY> </BODY>
</HTML> </HTML>

View File

@@ -1,12 +1,12 @@
<HTML> <HTML>
<HEAD> <HEAD>
<TITLE>The Synthesis ToolKit in C++ (STK)</TITLE> <TITLE>The Synthesis ToolKit in C++ (STK)</TITLE>
<LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css"> <LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css">
</HEAD> </HEAD>
<BODY BGCOLOR="#FFFFFF"> <BODY BGCOLOR="#FFFFFF">
<CENTER> <CENTER>
<img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P> <img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P>
<a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER> <a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="links.html">Links</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER>
<HR> <HR>
<!-- Generated by Doxygen 1.2.8.1 --> <!-- Generated by Doxygen 1.2.8.1 -->
<h1>FMVoices.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************/</font> <h1>FMVoices.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************/</font>
@@ -39,12 +39,12 @@
00063 }; 00063 };
00064 00064
00065 <font class="preprocessor">#endif</font> 00065 <font class="preprocessor">#endif</font>
</font></pre></div><HR> </font></pre></div><HR>
<table> <table>
<tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr> <tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr>
<tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr> <tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr>
</table> </table>
</BODY> </BODY>
</HTML> </HTML>

View File

@@ -1,12 +1,12 @@
<HTML> <HTML>
<HEAD> <HEAD>
<TITLE>The Synthesis ToolKit in C++ (STK)</TITLE> <TITLE>The Synthesis ToolKit in C++ (STK)</TITLE>
<LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css"> <LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css">
</HEAD> </HEAD>
<BODY BGCOLOR="#FFFFFF"> <BODY BGCOLOR="#FFFFFF">
<CENTER> <CENTER>
<img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P> <img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P>
<a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER> <a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="links.html">Links</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER>
<HR> <HR>
<!-- Generated by Doxygen 1.2.8.1 --> <!-- Generated by Doxygen 1.2.8.1 -->
<h1>FM.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************/</font> <h1>FM.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************/</font>
@@ -74,12 +74,12 @@
00101 }; 00101 };
00102 00102
00103 <font class="preprocessor">#endif</font> 00103 <font class="preprocessor">#endif</font>
</font></pre></div><HR> </font></pre></div><HR>
<table> <table>
<tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr> <tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr>
<tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr> <tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr>
</table> </table>
</BODY> </BODY>
</HTML> </HTML>

View File

@@ -1,12 +1,12 @@
<HTML> <HTML>
<HEAD> <HEAD>
<TITLE>The Synthesis ToolKit in C++ (STK)</TITLE> <TITLE>The Synthesis ToolKit in C++ (STK)</TITLE>
<LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css"> <LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css">
</HEAD> </HEAD>
<BODY BGCOLOR="#FFFFFF"> <BODY BGCOLOR="#FFFFFF">
<CENTER> <CENTER>
<img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P> <img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P>
<a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER> <a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="links.html">Links</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER>
<HR> <HR>
<!-- Generated by Doxygen 1.2.8.1 --> <!-- Generated by Doxygen 1.2.8.1 -->
<h1>Filter.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************/</font> <h1>Filter.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************/</font>
@@ -61,12 +61,12 @@
00110 }; 00110 };
00111 00111
00112 <font class="preprocessor">#endif</font> 00112 <font class="preprocessor">#endif</font>
</font></pre></div><HR> </font></pre></div><HR>
<table> <table>
<tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr> <tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr>
<tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr> <tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr>
</table> </table>
</BODY> </BODY>
</HTML> </HTML>

View File

@@ -1,12 +1,12 @@
<HTML> <HTML>
<HEAD> <HEAD>
<TITLE>The Synthesis ToolKit in C++ (STK)</TITLE> <TITLE>The Synthesis ToolKit in C++ (STK)</TITLE>
<LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css"> <LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css">
</HEAD> </HEAD>
<BODY BGCOLOR="#FFFFFF"> <BODY BGCOLOR="#FFFFFF">
<CENTER> <CENTER>
<img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P> <img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P>
<a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER> <a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="links.html">Links</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER>
<HR> <HR>
<!-- Generated by Doxygen 1.2.8.1 --> <!-- Generated by Doxygen 1.2.8.1 -->
<h1>Flute.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************/</font> <h1>Flute.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************/</font>
@@ -75,12 +75,12 @@
00098 }; 00098 };
00099 00099
00100 <font class="preprocessor">#endif</font> 00100 <font class="preprocessor">#endif</font>
</font></pre></div><HR> </font></pre></div><HR>
<table> <table>
<tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr> <tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr>
<tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr> <tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr>
</table> </table>
</BODY> </BODY>
</HTML> </HTML>

View File

@@ -1,12 +1,12 @@
<HTML> <HTML>
<HEAD> <HEAD>
<TITLE>The Synthesis ToolKit in C++ (STK)</TITLE> <TITLE>The Synthesis ToolKit in C++ (STK)</TITLE>
<LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css"> <LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css">
</HEAD> </HEAD>
<BODY BGCOLOR="#FFFFFF"> <BODY BGCOLOR="#FFFFFF">
<CENTER> <CENTER>
<img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P> <img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P>
<a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER> <a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="links.html">Links</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER>
<HR> <HR>
<!-- Generated by Doxygen 1.2.8.1 --> <!-- Generated by Doxygen 1.2.8.1 -->
<h1>FormSwep.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************/</font> <h1>FormSwep.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************/</font>
@@ -61,12 +61,12 @@
00091 }; 00091 };
00092 00092
00093 <font class="preprocessor">#endif</font> 00093 <font class="preprocessor">#endif</font>
</font></pre></div><HR> </font></pre></div><HR>
<table> <table>
<tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr> <tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr>
<tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr> <tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr>
</table> </table>
</BODY> </BODY>
</HTML> </HTML>

View File

@@ -1,12 +1,12 @@
<HTML> <HTML>
<HEAD> <HEAD>
<TITLE>The Synthesis ToolKit in C++ (STK)</TITLE> <TITLE>The Synthesis ToolKit in C++ (STK)</TITLE>
<LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css"> <LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css">
</HEAD> </HEAD>
<BODY BGCOLOR="#FFFFFF"> <BODY BGCOLOR="#FFFFFF">
<CENTER> <CENTER>
<img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P> <img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P>
<a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER> <a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="links.html">Links</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER>
<HR> <HR>
<!-- Generated by Doxygen 1.2.8.1 --> <!-- Generated by Doxygen 1.2.8.1 -->
<h1>HevyMetl.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************/</font> <h1>HevyMetl.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************/</font>
@@ -30,12 +30,12 @@
00050 }; 00050 };
00051 00051
00052 <font class="preprocessor">#endif</font> 00052 <font class="preprocessor">#endif</font>
</font></pre></div><HR> </font></pre></div><HR>
<table> <table>
<tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr> <tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr>
<tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr> <tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr>
</table> </table>
</BODY> </BODY>
</HTML> </HTML>

View File

@@ -1,12 +1,12 @@
<HTML> <HTML>
<HEAD> <HEAD>
<TITLE>The Synthesis ToolKit in C++ (STK)</TITLE> <TITLE>The Synthesis ToolKit in C++ (STK)</TITLE>
<LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css"> <LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css">
</HEAD> </HEAD>
<BODY BGCOLOR="#FFFFFF"> <BODY BGCOLOR="#FFFFFF">
<CENTER> <CENTER>
<img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P> <img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P>
<a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER> <a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="links.html">Links</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER>
<HR> <HR>
<!-- Generated by Doxygen 1.2.8.1 --> <!-- Generated by Doxygen 1.2.8.1 -->
<h1>Instrmnt.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************/</font> <h1>Instrmnt.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************/</font>
@@ -45,12 +45,12 @@
00051 }; 00051 };
00052 00052
00053 <font class="preprocessor">#endif</font> 00053 <font class="preprocessor">#endif</font>
</font></pre></div><HR> </font></pre></div><HR>
<table> <table>
<tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr> <tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr>
<tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr> <tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr>
</table> </table>
</BODY> </BODY>
</HTML> </HTML>

View File

@@ -1,12 +1,12 @@
<HTML> <HTML>
<HEAD> <HEAD>
<TITLE>The Synthesis ToolKit in C++ (STK)</TITLE> <TITLE>The Synthesis ToolKit in C++ (STK)</TITLE>
<LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css"> <LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css">
</HEAD> </HEAD>
<BODY BGCOLOR="#FFFFFF"> <BODY BGCOLOR="#FFFFFF">
<CENTER> <CENTER>
<img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P> <img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P>
<a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER> <a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="links.html">Links</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER>
<HR> <HR>
<!-- Generated by Doxygen 1.2.8.1 --> <!-- Generated by Doxygen 1.2.8.1 -->
<h1>JCRev.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************/</font> <h1>JCRev.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************/</font>
@@ -21,11 +21,9 @@
00023 <font class="keyword">class </font><a class="code" href="classJCRev.html">JCRev</a> : <font class="keyword">public</font> <a class="code" href="classReverb.html">Reverb</a> 00023 <font class="keyword">class </font><a class="code" href="classJCRev.html">JCRev</a> : <font class="keyword">public</font> <a class="code" href="classReverb.html">Reverb</a>
00024 { 00024 {
00025 <font class="keyword">public</font>: 00025 <font class="keyword">public</font>:
00026 <font class="comment">// Class constructor taking a T60 decay time argument.</font> 00027 <a class="code" href="classJCRev.html#a0">JCRev</a>(MY_FLOAT T60);
00027 JCRev(MY_FLOAT T60);
00028 00028
00029 <font class="comment">// Class destructor.</font> 00030 <a class="code" href="classJCRev.html#a1">~JCRev</a>();
00030 ~JCRev();
00031 00031
00033 <font class="keywordtype">void</font> <a class="code" href="classReverb.html#a2">clear</a>(); 00033 <font class="keywordtype">void</font> <a class="code" href="classReverb.html#a2">clear</a>();
00034 00034
@@ -43,12 +41,12 @@
00047 00047
00048 <font class="preprocessor">#endif</font> 00048 <font class="preprocessor">#endif</font>
00049 <font class="preprocessor"></font> 00049 <font class="preprocessor"></font>
</pre></div><HR> </pre></div><HR>
<table> <table>
<tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr> <tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr>
<tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr> <tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr>
</table> </table>
</BODY> </BODY>
</HTML> </HTML>

View File

@@ -1,12 +1,12 @@
<HTML> <HTML>
<HEAD> <HEAD>
<TITLE>The Synthesis ToolKit in C++ (STK)</TITLE> <TITLE>The Synthesis ToolKit in C++ (STK)</TITLE>
<LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css"> <LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css">
</HEAD> </HEAD>
<BODY BGCOLOR="#FFFFFF"> <BODY BGCOLOR="#FFFFFF">
<CENTER> <CENTER>
<img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P> <img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P>
<a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER> <a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="links.html">Links</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER>
<HR> <HR>
<!-- Generated by Doxygen 1.2.8.1 --> <!-- Generated by Doxygen 1.2.8.1 -->
<h1>JetTabl.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************/</font> <h1>JetTabl.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************/</font>
@@ -36,12 +36,12 @@
00042 }; 00042 };
00043 00043
00044 <font class="preprocessor">#endif</font> 00044 <font class="preprocessor">#endif</font>
</font></pre></div><HR> </font></pre></div><HR>
<table> <table>
<tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr> <tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr>
<tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr> <tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr>
</table> </table>
</BODY> </BODY>
</HTML> </HTML>

View File

@@ -1,12 +1,12 @@
<HTML> <HTML>
<HEAD> <HEAD>
<TITLE>The Synthesis ToolKit in C++ (STK)</TITLE> <TITLE>The Synthesis ToolKit in C++ (STK)</TITLE>
<LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css"> <LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css">
</HEAD> </HEAD>
<BODY BGCOLOR="#FFFFFF"> <BODY BGCOLOR="#FFFFFF">
<CENTER> <CENTER>
<img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P> <img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P>
<a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER> <a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="links.html">Links</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER>
<HR> <HR>
<!-- Generated by Doxygen 1.2.8.1 --> <!-- Generated by Doxygen 1.2.8.1 -->
<h1>Mandolin.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************/</font> <h1>Mandolin.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************/</font>
@@ -46,12 +46,12 @@
00069 }; 00069 };
00070 00070
00071 <font class="preprocessor">#endif</font> 00071 <font class="preprocessor">#endif</font>
</font></pre></div><HR> </font></pre></div><HR>
<table> <table>
<tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr> <tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr>
<tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr> <tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr>
</table> </table>
</BODY> </BODY>
</HTML> </HTML>

View File

@@ -1,12 +1,12 @@
<HTML> <HTML>
<HEAD> <HEAD>
<TITLE>The Synthesis ToolKit in C++ (STK)</TITLE> <TITLE>The Synthesis ToolKit in C++ (STK)</TITLE>
<LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css"> <LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css">
</HEAD> </HEAD>
<BODY BGCOLOR="#FFFFFF"> <BODY BGCOLOR="#FFFFFF">
<CENTER> <CENTER>
<img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P> <img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P>
<a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER> <a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="links.html">Links</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER>
<HR> <HR>
<!-- Generated by Doxygen 1.2.8.1 --> <!-- Generated by Doxygen 1.2.8.1 -->
<h1>Mesh2D.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************/</font> <h1>Mesh2D.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************/</font>
@@ -78,12 +78,12 @@
00103 }; 00103 };
00104 00104
00105 <font class="preprocessor">#endif</font> 00105 <font class="preprocessor">#endif</font>
</font></pre></div><HR> </font></pre></div><HR>
<table> <table>
<tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr> <tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr>
<tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr> <tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr>
</table> </table>
</BODY> </BODY>
</HTML> </HTML>

View File

@@ -1,12 +1,12 @@
<HTML> <HTML>
<HEAD> <HEAD>
<TITLE>The Synthesis ToolKit in C++ (STK)</TITLE> <TITLE>The Synthesis ToolKit in C++ (STK)</TITLE>
<LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css"> <LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css">
</HEAD> </HEAD>
<BODY BGCOLOR="#FFFFFF"> <BODY BGCOLOR="#FFFFFF">
<CENTER> <CENTER>
<img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P> <img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P>
<a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER> <a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="links.html">Links</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER>
<HR> <HR>
<!-- Generated by Doxygen 1.2.8.1 --> <!-- Generated by Doxygen 1.2.8.1 -->
<h1>Messager.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************/</font> <h1>Messager.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************/</font>
@@ -20,31 +20,30 @@
00041 00041
00042 <font class="preprocessor">#define MESSAGE_LENGTH 128</font> 00042 <font class="preprocessor">#define MESSAGE_LENGTH 128</font>
00043 <font class="preprocessor"></font><font class="preprocessor">#define MAX_MESSAGES 25</font> 00043 <font class="preprocessor"></font><font class="preprocessor">#define MAX_MESSAGES 25</font>
00044 <font class="preprocessor"></font> 00044 <font class="preprocessor"></font><font class="preprocessor">#define STK_MIDI 0x0001</font>
00045 <font class="preprocessor">#if defined(__STK_REALTIME__)</font> 00045 <font class="preprocessor"></font><font class="preprocessor">#define STK_PIPE 0x0002</font>
00046 <font class="preprocessor"></font> 00046 <font class="preprocessor"></font><font class="preprocessor">#define STK_SOCKET 0x0004</font>
00047 <font class="preprocessor">#include "Thread.h"</font> 00047 <font class="preprocessor"></font>
00048 <font class="preprocessor">#include "Socket.h"</font> 00048 <font class="preprocessor">#if defined(__STK_REALTIME__)</font>
00049 <font class="preprocessor">#include "RtMidi.h"</font> 00049 <font class="preprocessor"></font>
00050 00050 <font class="preprocessor">#include "Thread.h"</font>
00051 <font class="preprocessor">#define STK_MIDI 0x0001</font> 00051 <font class="preprocessor">#include "Socket.h"</font>
00052 <font class="preprocessor"></font><font class="preprocessor">#define STK_PIPE 0x0002</font> 00052 <font class="preprocessor">#include "RtMidi.h"</font>
00053 <font class="preprocessor"></font><font class="preprocessor">#define STK_SOCKET 0x0004</font> 00053
00054 <font class="preprocessor"></font> 00054 <font class="keyword">extern</font> <font class="stringliteral">"C"</font> THREAD_RETURN THREAD_TYPE stdinHandler(<font class="keywordtype">void</font> * ptr);
00055 <font class="keyword">extern</font> <font class="stringliteral">"C"</font> THREAD_RETURN THREAD_TYPE stdinHandler(<font class="keywordtype">void</font> * ptr); 00055
00056 00056 <font class="preprocessor">#if (defined(__OS_IRIX__) || defined(__OS_LINUX__) || defined(__OS_MACOSX__))</font>
00057 <font class="preprocessor">#if (defined(__OS_IRIX__) || defined(__OS_LINUX__))</font> 00057 <font class="preprocessor"></font><font class="preprocessor"> #include &lt;sys/types.h&gt;</font>
00058 <font class="preprocessor"></font><font class="preprocessor"> #include &lt;sys/types.h&gt;</font> 00058 <font class="preprocessor"> #include &lt;sys/time.h&gt;</font>
00059 <font class="preprocessor"> #include &lt;sys/time.h&gt;</font> 00059 <font class="preprocessor">#endif</font>
00060 <font class="preprocessor">#endif</font> 00060 <font class="preprocessor"></font>
00061 <font class="preprocessor"></font> 00061 <font class="preprocessor">#endif // __STK_REALTIME__</font>
00062 <font class="preprocessor">#endif // __STK_REALTIME__</font> 00062 <font class="preprocessor"></font>
00063 <font class="preprocessor"></font> 00063 <font class="keyword">class </font><a class="code" href="classMessager.html">Messager</a> : <font class="keyword">public</font> <a class="code" href="classStk.html">Stk</a>
00064 <font class="keyword">class </font><a class="code" href="classMessager.html">Messager</a> : <font class="keyword">public</font> <a class="code" href="classStk.html">Stk</a> 00064 {
00065 { 00065 <font class="keyword">public</font>:
00066 <font class="keyword">public</font>: 00067
00068 00075 <a class="code" href="classMessager.html#a0">Messager</a>(<font class="keywordtype">int</font> inputMask = 0, <font class="keywordtype">int</font> port = 2001);
00075 <a class="code" href="classMessager.html#a0">Messager</a>(<font class="keywordtype">int</font> inputMask = 0);
00076 00076
00078 <a class="code" href="classMessager.html#a1">~Messager</a>(); 00078 <a class="code" href="classMessager.html#a1">~Messager</a>();
00079 00079
@@ -104,12 +103,12 @@
00145 }; 00145 };
00146 00146
00147 <font class="preprocessor">#endif // defined(__MESSAGER_H)</font> 00147 <font class="preprocessor">#endif // defined(__MESSAGER_H)</font>
</font></pre></div><HR> </font></pre></div><HR>
<table> <table>
<tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr> <tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr>
<tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr> <tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr>
</table> </table>
</BODY> </BODY>
</HTML> </HTML>

View File

@@ -1,12 +1,12 @@
<HTML> <HTML>
<HEAD> <HEAD>
<TITLE>The Synthesis ToolKit in C++ (STK)</TITLE> <TITLE>The Synthesis ToolKit in C++ (STK)</TITLE>
<LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css"> <LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css">
</HEAD> </HEAD>
<BODY BGCOLOR="#FFFFFF"> <BODY BGCOLOR="#FFFFFF">
<CENTER> <CENTER>
<img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P> <img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P>
<a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER> <a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="links.html">Links</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER>
<HR> <HR>
<!-- Generated by Doxygen 1.2.8.1 --> <!-- Generated by Doxygen 1.2.8.1 -->
<h1>ModalBar.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************/</font> <h1>ModalBar.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************/</font>
@@ -36,12 +36,12 @@
00058 }; 00058 };
00059 00059
00060 <font class="preprocessor">#endif</font> 00060 <font class="preprocessor">#endif</font>
</font></pre></div><HR> </font></pre></div><HR>
<table> <table>
<tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr> <tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr>
<tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr> <tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr>
</table> </table>
</BODY> </BODY>
</HTML> </HTML>

View File

@@ -1,12 +1,12 @@
<HTML> <HTML>
<HEAD> <HEAD>
<TITLE>The Synthesis ToolKit in C++ (STK)</TITLE> <TITLE>The Synthesis ToolKit in C++ (STK)</TITLE>
<LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css"> <LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css">
</HEAD> </HEAD>
<BODY BGCOLOR="#FFFFFF"> <BODY BGCOLOR="#FFFFFF">
<CENTER> <CENTER>
<img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P> <img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P>
<a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER> <a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="links.html">Links</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER>
<HR> <HR>
<!-- Generated by Doxygen 1.2.8.1 --> <!-- Generated by Doxygen 1.2.8.1 -->
<h1>Modal.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************/</font> <h1>Modal.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************/</font>
@@ -71,12 +71,12 @@
00084 }; 00084 };
00085 00085
00086 <font class="preprocessor">#endif</font> 00086 <font class="preprocessor">#endif</font>
</font></pre></div><HR> </font></pre></div><HR>
<table> <table>
<tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr> <tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr>
<tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr> <tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr>
</table> </table>
</BODY> </BODY>
</HTML> </HTML>

View File

@@ -1,12 +1,12 @@
<HTML> <HTML>
<HEAD> <HEAD>
<TITLE>The Synthesis ToolKit in C++ (STK)</TITLE> <TITLE>The Synthesis ToolKit in C++ (STK)</TITLE>
<LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css"> <LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css">
</HEAD> </HEAD>
<BODY BGCOLOR="#FFFFFF"> <BODY BGCOLOR="#FFFFFF">
<CENTER> <CENTER>
<img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P> <img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P>
<a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER> <a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="links.html">Links</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER>
<HR> <HR>
<!-- Generated by Doxygen 1.2.8.1 --> <!-- Generated by Doxygen 1.2.8.1 -->
<h1>Modulate.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************/</font> <h1>Modulate.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************/</font>
@@ -42,7 +42,7 @@
00049 MY_FLOAT <a class="code" href="classModulate.html#a8">lastOut</a>() <font class="keyword">const</font>; 00049 MY_FLOAT <a class="code" href="classModulate.html#a8">lastOut</a>() <font class="keyword">const</font>;
00050 00050
00051 <font class="keyword">protected</font>: 00051 <font class="keyword">protected</font>:
00052 <a class="code" href="classWaveLoop.html">WaveLoop</a> *vibrato; 00052 <a class="code" href="classWaveLoop.html">WaveLoop</a> *vibrato;
00053 <a class="code" href="classSubNoise.html">SubNoise</a> *noise; 00053 <a class="code" href="classSubNoise.html">SubNoise</a> *noise;
00054 <a class="code" href="classOnePole.html">OnePole</a> *filter; 00054 <a class="code" href="classOnePole.html">OnePole</a> *filter;
00055 MY_FLOAT vibratoGain; 00055 MY_FLOAT vibratoGain;
@@ -52,12 +52,12 @@
00059 }; 00059 };
00060 00060
00061 <font class="preprocessor">#endif</font> 00061 <font class="preprocessor">#endif</font>
</font></pre></div><HR> </font></pre></div><HR>
<table> <table>
<tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr> <tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr>
<tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr> <tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr>
</table> </table>
</BODY> </BODY>
</HTML> </HTML>

View File

@@ -1,12 +1,12 @@
<HTML> <HTML>
<HEAD> <HEAD>
<TITLE>The Synthesis ToolKit in C++ (STK)</TITLE> <TITLE>The Synthesis ToolKit in C++ (STK)</TITLE>
<LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css"> <LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css">
</HEAD> </HEAD>
<BODY BGCOLOR="#FFFFFF"> <BODY BGCOLOR="#FFFFFF">
<CENTER> <CENTER>
<img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P> <img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P>
<a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER> <a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="links.html">Links</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER>
<HR> <HR>
<!-- Generated by Doxygen 1.2.8.1 --> <!-- Generated by Doxygen 1.2.8.1 -->
<h1>Moog.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************/</font> <h1>Moog.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************/</font>
@@ -46,12 +46,12 @@
00060 }; 00060 };
00061 00061
00062 <font class="preprocessor">#endif</font> 00062 <font class="preprocessor">#endif</font>
</font></pre></div><HR> </font></pre></div><HR>
<table> <table>
<tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr> <tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr>
<tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr> <tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr>
</table> </table>
</BODY> </BODY>
</HTML> </HTML>

View File

@@ -1,12 +1,12 @@
<HTML> <HTML>
<HEAD> <HEAD>
<TITLE>The Synthesis ToolKit in C++ (STK)</TITLE> <TITLE>The Synthesis ToolKit in C++ (STK)</TITLE>
<LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css"> <LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css">
</HEAD> </HEAD>
<BODY BGCOLOR="#FFFFFF"> <BODY BGCOLOR="#FFFFFF">
<CENTER> <CENTER>
<img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P> <img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P>
<a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER> <a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="links.html">Links</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER>
<HR> <HR>
<!-- Generated by Doxygen 1.2.8.1 --> <!-- Generated by Doxygen 1.2.8.1 -->
<h1>NRev.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************/</font> <h1>NRev.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************/</font>
@@ -21,11 +21,9 @@
00025 <font class="keyword">class </font><a class="code" href="classNRev.html">NRev</a> : <font class="keyword">public</font> <a class="code" href="classReverb.html">Reverb</a> 00025 <font class="keyword">class </font><a class="code" href="classNRev.html">NRev</a> : <font class="keyword">public</font> <a class="code" href="classReverb.html">Reverb</a>
00026 { 00026 {
00027 <font class="keyword">public</font>: 00027 <font class="keyword">public</font>:
00028 <font class="comment">// Class constructor taking a T60 decay time argument.</font> 00029 <a class="code" href="classNRev.html#a0">NRev</a>(MY_FLOAT T60);
00029 NRev(MY_FLOAT T60);
00030 00030
00031 <font class="comment">// Class destructor.</font> 00032 <a class="code" href="classNRev.html#a1">~NRev</a>();
00032 ~NRev();
00033 00033
00035 <font class="keywordtype">void</font> <a class="code" href="classReverb.html#a2">clear</a>(); 00035 <font class="keywordtype">void</font> <a class="code" href="classReverb.html#a2">clear</a>();
00036 00036
@@ -42,12 +40,12 @@
00048 00048
00049 <font class="preprocessor">#endif</font> 00049 <font class="preprocessor">#endif</font>
00050 <font class="preprocessor"></font> 00050 <font class="preprocessor"></font>
</pre></div><HR> </pre></div><HR>
<table> <table>
<tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr> <tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr>
<tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr> <tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr>
</table> </table>
</BODY> </BODY>
</HTML> </HTML>

View File

@@ -1,12 +1,12 @@
<HTML> <HTML>
<HEAD> <HEAD>
<TITLE>The Synthesis ToolKit in C++ (STK)</TITLE> <TITLE>The Synthesis ToolKit in C++ (STK)</TITLE>
<LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css"> <LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css">
</HEAD> </HEAD>
<BODY BGCOLOR="#FFFFFF"> <BODY BGCOLOR="#FFFFFF">
<CENTER> <CENTER>
<img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P> <img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P>
<a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER> <a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="links.html">Links</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER>
<HR> <HR>
<!-- Generated by Doxygen 1.2.8.1 --> <!-- Generated by Doxygen 1.2.8.1 -->
<h1>Noise.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************/</font> <h1>Noise.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************/</font>
@@ -38,12 +38,12 @@
00041 }; 00041 };
00042 00042
00043 <font class="preprocessor">#endif</font> 00043 <font class="preprocessor">#endif</font>
</font></pre></div><HR> </font></pre></div><HR>
<table> <table>
<tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr> <tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr>
<tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr> <tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr>
</table> </table>
</BODY> </BODY>
</HTML> </HTML>

View File

@@ -1,12 +1,12 @@
<HTML> <HTML>
<HEAD> <HEAD>
<TITLE>The Synthesis ToolKit in C++ (STK)</TITLE> <TITLE>The Synthesis ToolKit in C++ (STK)</TITLE>
<LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css"> <LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css">
</HEAD> </HEAD>
<BODY BGCOLOR="#FFFFFF"> <BODY BGCOLOR="#FFFFFF">
<CENTER> <CENTER>
<img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P> <img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P>
<a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER> <a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="links.html">Links</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER>
<HR> <HR>
<!-- Generated by Doxygen 1.2.8.1 --> <!-- Generated by Doxygen 1.2.8.1 -->
<h1>OnePole.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************/</font> <h1>OnePole.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************/</font>
@@ -49,12 +49,12 @@
00070 }; 00070 };
00071 00071
00072 <font class="preprocessor">#endif</font> 00072 <font class="preprocessor">#endif</font>
</font></pre></div><HR> </font></pre></div><HR>
<table> <table>
<tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr> <tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr>
<tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr> <tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr>
</table> </table>
</BODY> </BODY>
</HTML> </HTML>

View File

@@ -1,12 +1,12 @@
<HTML> <HTML>
<HEAD> <HEAD>
<TITLE>The Synthesis ToolKit in C++ (STK)</TITLE> <TITLE>The Synthesis ToolKit in C++ (STK)</TITLE>
<LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css"> <LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css">
</HEAD> </HEAD>
<BODY BGCOLOR="#FFFFFF"> <BODY BGCOLOR="#FFFFFF">
<CENTER> <CENTER>
<img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P> <img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P>
<a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER> <a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="links.html">Links</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER>
<HR> <HR>
<!-- Generated by Doxygen 1.2.8.1 --> <!-- Generated by Doxygen 1.2.8.1 -->
<h1>OneZero.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************/</font> <h1>OneZero.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************/</font>
@@ -49,12 +49,12 @@
00070 }; 00070 };
00071 00071
00072 <font class="preprocessor">#endif</font> 00072 <font class="preprocessor">#endif</font>
</font></pre></div><HR> </font></pre></div><HR>
<table> <table>
<tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr> <tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr>
<tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr> <tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr>
</table> </table>
</BODY> </BODY>
</HTML> </HTML>

View File

@@ -1,12 +1,12 @@
<HTML> <HTML>
<HEAD> <HEAD>
<TITLE>The Synthesis ToolKit in C++ (STK)</TITLE> <TITLE>The Synthesis ToolKit in C++ (STK)</TITLE>
<LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css"> <LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css">
</HEAD> </HEAD>
<BODY BGCOLOR="#FFFFFF"> <BODY BGCOLOR="#FFFFFF">
<CENTER> <CENTER>
<img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P> <img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P>
<a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER> <a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="links.html">Links</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER>
<HR> <HR>
<!-- Generated by Doxygen 1.2.8.1 --> <!-- Generated by Doxygen 1.2.8.1 -->
<h1>PRCRev.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************/</font> <h1>PRCRev.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************/</font>
@@ -20,33 +20,31 @@
00022 00022
00023 <font class="keyword">class </font><a class="code" href="classPRCRev.html">PRCRev</a> : <font class="keyword">public</font> <a class="code" href="classReverb.html">Reverb</a> 00023 <font class="keyword">class </font><a class="code" href="classPRCRev.html">PRCRev</a> : <font class="keyword">public</font> <a class="code" href="classReverb.html">Reverb</a>
00024 { 00024 {
00025 <font class="keyword">public</font>: 00025 <font class="keyword">public</font>:
00026 <font class="comment">// Class constructor taking a T60 decay time argument.</font> 00027 <a class="code" href="classPRCRev.html#a0">PRCRev</a>(MY_FLOAT T60);
00027 PRCRev(MY_FLOAT T60);
00028 00028
00029 <font class="comment">// Class destructor.</font> 00030 <a class="code" href="classPRCRev.html#a1">~PRCRev</a>();
00030 ~PRCRev();
00031 00031
00033 <font class="keywordtype">void</font> <a class="code" href="classReverb.html#a2">clear</a>(); 00033 <font class="keywordtype">void</font> <a class="code" href="classReverb.html#a2">clear</a>();
00034 00034
00036 MY_FLOAT <a class="code" href="classReverb.html#a7">tick</a>(MY_FLOAT input); 00036 MY_FLOAT <a class="code" href="classReverb.html#a7">tick</a>(MY_FLOAT input);
00037 00037
00038 <font class="keyword">protected</font>: 00038 <font class="keyword">protected</font>:
00039 <a class="code" href="classDelay.html">Delay</a> *allpassDelays[2]; 00039 <a class="code" href="classDelay.html">Delay</a> *allpassDelays[2];
00040 <a class="code" href="classDelay.html">Delay</a> *combDelays[2]; 00040 <a class="code" href="classDelay.html">Delay</a> *combDelays[2];
00041 MY_FLOAT allpassCoefficient; 00041 MY_FLOAT allpassCoefficient;
00042 MY_FLOAT combCoefficient[2]; 00042 MY_FLOAT combCoefficient[2];
00043 00043
00044 }; 00044 };
00045 00045
00046 <font class="preprocessor">#endif</font> 00046 <font class="preprocessor">#endif</font>
00047 <font class="preprocessor"></font> 00047 <font class="preprocessor"></font>
</pre></div><HR> </pre></div><HR>
<table> <table>
<tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr> <tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr>
<tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr> <tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr>
</table> </table>
</BODY> </BODY>
</HTML> </HTML>

View File

@@ -1,12 +1,12 @@
<HTML> <HTML>
<HEAD> <HEAD>
<TITLE>The Synthesis ToolKit in C++ (STK)</TITLE> <TITLE>The Synthesis ToolKit in C++ (STK)</TITLE>
<LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css"> <LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css">
</HEAD> </HEAD>
<BODY BGCOLOR="#FFFFFF"> <BODY BGCOLOR="#FFFFFF">
<CENTER> <CENTER>
<img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P> <img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P>
<a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER> <a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="links.html">Links</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER>
<HR> <HR>
<!-- Generated by Doxygen 1.2.8.1 --> <!-- Generated by Doxygen 1.2.8.1 -->
<h1>PercFlut.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************/</font> <h1>PercFlut.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************/</font>
@@ -32,12 +32,12 @@
00051 }; 00051 };
00052 00052
00053 <font class="preprocessor">#endif</font> 00053 <font class="preprocessor">#endif</font>
</font></pre></div><HR> </font></pre></div><HR>
<table> <table>
<tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr> <tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr>
<tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr> <tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr>
</table> </table>
</BODY> </BODY>
</HTML> </HTML>

View File

@@ -0,0 +1,56 @@
<HTML>
<HEAD>
<TITLE>The Synthesis ToolKit in C++ (STK)</TITLE>
<LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css">
</HEAD>
<BODY BGCOLOR="#FFFFFF">
<CENTER>
<img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P>
<a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="links.html">Links</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER>
<HR>
<!-- Generated by Doxygen 1.2.8.1 -->
<h1>Phonemes.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************/</font>
00011 <font class="comment">/***************************************************/</font>
00012
00013 <font class="preprocessor">#if !defined(__PHONEMES_H)</font>
00014 <font class="preprocessor"></font><font class="preprocessor">#define __PHONEMES_H</font>
00015 <font class="preprocessor"></font>
00016 <font class="preprocessor">#include "Stk.h"</font>
00017
00018 <font class="keyword">class </font><a class="code" href="classPhonemes.html">Phonemes</a>
00019 {
00020 <font class="keyword">public</font>:
00021
00022 Phonemes(<font class="keywordtype">void</font>);
00023 ~Phonemes(<font class="keywordtype">void</font>);
00024
00026 <font class="keyword">static</font> <font class="keyword">const</font> <font class="keywordtype">char</font> *<a class="code" href="classPhonemes.html#d0">name</a>( <font class="keywordtype">unsigned</font> <font class="keywordtype">int</font> index );
00027
00029 <font class="keyword">static</font> MY_FLOAT <a class="code" href="classPhonemes.html#d1">voiceGain</a>( <font class="keywordtype">unsigned</font> <font class="keywordtype">int</font> index );
00030
00032 <font class="keyword">static</font> MY_FLOAT <a class="code" href="classPhonemes.html#d2">noiseGain</a>( <font class="keywordtype">unsigned</font> <font class="keywordtype">int</font> index );
00033
00035 <font class="keyword">static</font> MY_FLOAT <a class="code" href="classPhonemes.html#d3">formantFrequency</a>( <font class="keywordtype">unsigned</font> <font class="keywordtype">int</font> index, <font class="keywordtype">unsigned</font> <font class="keywordtype">int</font> partial );
00036
00038 <font class="keyword">static</font> MY_FLOAT <a class="code" href="classPhonemes.html#d4">formantRadius</a>( <font class="keywordtype">unsigned</font> <font class="keywordtype">int</font> index, <font class="keywordtype">unsigned</font> <font class="keywordtype">int</font> partial );
00039
00041 <font class="keyword">static</font> MY_FLOAT <a class="code" href="classPhonemes.html#d5">formantGain</a>( <font class="keywordtype">unsigned</font> <font class="keywordtype">int</font> index, <font class="keywordtype">unsigned</font> <font class="keywordtype">int</font> partial );
00042
00043 <font class="keyword">private</font>:
00044
00045 <font class="keyword">static</font> <font class="keyword">const</font> <font class="keywordtype">char</font> phonemeNames[][4];
00046 <font class="keyword">static</font> <font class="keyword">const</font> MY_FLOAT phonemeGains[][2];
00047 <font class="keyword">static</font> <font class="keyword">const</font> MY_FLOAT phonemeParameters[][4][3];
00048
00049 };
00050
00051 <font class="preprocessor">#endif</font>
</font></pre></div><HR>
<table>
<tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr>
<tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr>
</table>
</BODY>
</HTML>

View File

@@ -1,12 +1,12 @@
<HTML> <HTML>
<HEAD> <HEAD>
<TITLE>The Synthesis ToolKit in C++ (STK)</TITLE> <TITLE>The Synthesis ToolKit in C++ (STK)</TITLE>
<LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css"> <LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css">
</HEAD> </HEAD>
<BODY BGCOLOR="#FFFFFF"> <BODY BGCOLOR="#FFFFFF">
<CENTER> <CENTER>
<img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P> <img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P>
<a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER> <a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="links.html">Links</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER>
<HR> <HR>
<!-- Generated by Doxygen 1.2.8.1 --> <!-- Generated by Doxygen 1.2.8.1 -->
<h1>PitShift.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************/</font> <h1>PitShift.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************/</font>
@@ -38,7 +38,7 @@
00043 MY_FLOAT *<a class="code" href="classPitShift.html#a6">tick</a>(MY_FLOAT *vector, <font class="keywordtype">unsigned</font> <font class="keywordtype">int</font> vectorSize); 00043 MY_FLOAT *<a class="code" href="classPitShift.html#a6">tick</a>(MY_FLOAT *vector, <font class="keywordtype">unsigned</font> <font class="keywordtype">int</font> vectorSize);
00044 00044
00045 <font class="keyword">protected</font>: 00045 <font class="keyword">protected</font>:
00046 <a class="code" href="classDelay.html">Delay</a> *delayLine[2]; 00046 <a class="code" href="classDelayL.html">DelayL</a> *delayLine[2];
00047 MY_FLOAT lastOutput; 00047 MY_FLOAT lastOutput;
00048 MY_FLOAT delay[2]; 00048 MY_FLOAT delay[2];
00049 MY_FLOAT env[2]; 00049 MY_FLOAT env[2];
@@ -49,12 +49,12 @@
00054 00054
00055 <font class="preprocessor">#endif</font> 00055 <font class="preprocessor">#endif</font>
00056 <font class="preprocessor"></font> 00056 <font class="preprocessor"></font>
</pre></div><HR> </pre></div><HR>
<table> <table>
<tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr> <tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr>
<tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr> <tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr>
</table> </table>
</BODY> </BODY>
</HTML> </HTML>

View File

@@ -1,12 +1,12 @@
<HTML> <HTML>
<HEAD> <HEAD>
<TITLE>The Synthesis ToolKit in C++ (STK)</TITLE> <TITLE>The Synthesis ToolKit in C++ (STK)</TITLE>
<LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css"> <LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css">
</HEAD> </HEAD>
<BODY BGCOLOR="#FFFFFF"> <BODY BGCOLOR="#FFFFFF">
<CENTER> <CENTER>
<img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P> <img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P>
<a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER> <a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="links.html">Links</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER>
<HR> <HR>
<!-- Generated by Doxygen 1.2.8.1 --> <!-- Generated by Doxygen 1.2.8.1 -->
<h1>PluckTwo.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************/</font> <h1>PluckTwo.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************/</font>
@@ -62,12 +62,12 @@
00082 }; 00082 };
00083 00083
00084 <font class="preprocessor">#endif</font> 00084 <font class="preprocessor">#endif</font>
</font></pre></div><HR> </font></pre></div><HR>
<table> <table>
<tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr> <tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr>
<tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr> <tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr>
</table> </table>
</BODY> </BODY>
</HTML> </HTML>

View File

@@ -1,12 +1,12 @@
<HTML> <HTML>
<HEAD> <HEAD>
<TITLE>The Synthesis ToolKit in C++ (STK)</TITLE> <TITLE>The Synthesis ToolKit in C++ (STK)</TITLE>
<LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css"> <LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css">
</HEAD> </HEAD>
<BODY BGCOLOR="#FFFFFF"> <BODY BGCOLOR="#FFFFFF">
<CENTER> <CENTER>
<img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P> <img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P>
<a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER> <a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="links.html">Links</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER>
<HR> <HR>
<!-- Generated by Doxygen 1.2.8.1 --> <!-- Generated by Doxygen 1.2.8.1 -->
<h1>Plucked.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************/</font> <h1>Plucked.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************/</font>
@@ -52,12 +52,12 @@
00065 00065
00066 <font class="preprocessor">#endif</font> 00066 <font class="preprocessor">#endif</font>
00067 <font class="preprocessor"></font> 00067 <font class="preprocessor"></font>
</pre></div><HR> </pre></div><HR>
<table> <table>
<tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr> <tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr>
<tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr> <tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr>
</table> </table>
</BODY> </BODY>
</HTML> </HTML>

View File

@@ -1,12 +1,12 @@
<HTML> <HTML>
<HEAD> <HEAD>
<TITLE>The Synthesis ToolKit in C++ (STK)</TITLE> <TITLE>The Synthesis ToolKit in C++ (STK)</TITLE>
<LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css"> <LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css">
</HEAD> </HEAD>
<BODY BGCOLOR="#FFFFFF"> <BODY BGCOLOR="#FFFFFF">
<CENTER> <CENTER>
<img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P> <img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P>
<a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER> <a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="links.html">Links</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER>
<HR> <HR>
<!-- Generated by Doxygen 1.2.8.1 --> <!-- Generated by Doxygen 1.2.8.1 -->
<h1>PoleZero.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************/</font> <h1>PoleZero.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************/</font>
@@ -52,12 +52,12 @@
00077 }; 00077 };
00078 00078
00079 <font class="preprocessor">#endif</font> 00079 <font class="preprocessor">#endif</font>
</font></pre></div><HR> </font></pre></div><HR>
<table> <table>
<tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr> <tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr>
<tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr> <tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr>
</table> </table>
</BODY> </BODY>
</HTML> </HTML>

View File

@@ -1,12 +1,12 @@
<HTML> <HTML>
<HEAD> <HEAD>
<TITLE>The Synthesis ToolKit in C++ (STK)</TITLE> <TITLE>The Synthesis ToolKit in C++ (STK)</TITLE>
<LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css"> <LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css">
</HEAD> </HEAD>
<BODY BGCOLOR="#FFFFFF"> <BODY BGCOLOR="#FFFFFF">
<CENTER> <CENTER>
<img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P> <img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P>
<a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER> <a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="links.html">Links</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER>
<HR> <HR>
<!-- Generated by Doxygen 1.2.8.1 --> <!-- Generated by Doxygen 1.2.8.1 -->
<h1>ReedTabl.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************/</font> <h1>ReedTabl.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************/</font>
@@ -45,12 +45,12 @@
00068 }; 00068 };
00069 00069
00070 <font class="preprocessor">#endif</font> 00070 <font class="preprocessor">#endif</font>
</font></pre></div><HR> </font></pre></div><HR>
<table> <table>
<tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr> <tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr>
<tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr> <tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr>
</table> </table>
</BODY> </BODY>
</HTML> </HTML>

View File

@@ -1,12 +1,12 @@
<HTML> <HTML>
<HEAD> <HEAD>
<TITLE>The Synthesis ToolKit in C++ (STK)</TITLE> <TITLE>The Synthesis ToolKit in C++ (STK)</TITLE>
<LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css"> <LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css">
</HEAD> </HEAD>
<BODY BGCOLOR="#FFFFFF"> <BODY BGCOLOR="#FFFFFF">
<CENTER> <CENTER>
<img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P> <img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P>
<a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER> <a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="links.html">Links</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER>
<HR> <HR>
<!-- Generated by Doxygen 1.2.8.1 --> <!-- Generated by Doxygen 1.2.8.1 -->
<h1>Resonate.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************/</font> <h1>Resonate.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************/</font>
@@ -59,12 +59,12 @@
00076 }; 00076 };
00077 00077
00078 <font class="preprocessor">#endif</font> 00078 <font class="preprocessor">#endif</font>
</font></pre></div><HR> </font></pre></div><HR>
<table> <table>
<tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr> <tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr>
<tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr> <tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr>
</table> </table>
</BODY> </BODY>
</HTML> </HTML>

View File

@@ -1,12 +1,12 @@
<HTML> <HTML>
<HEAD> <HEAD>
<TITLE>The Synthesis ToolKit in C++ (STK)</TITLE> <TITLE>The Synthesis ToolKit in C++ (STK)</TITLE>
<LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css"> <LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css">
</HEAD> </HEAD>
<BODY BGCOLOR="#FFFFFF"> <BODY BGCOLOR="#FFFFFF">
<CENTER> <CENTER>
<img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P> <img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P>
<a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER> <a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="links.html">Links</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER>
<HR> <HR>
<!-- Generated by Doxygen 1.2.8.1 --> <!-- Generated by Doxygen 1.2.8.1 -->
<h1>Reverb.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************/</font> <h1>Reverb.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************/</font>
@@ -50,12 +50,12 @@
00056 00056
00057 <font class="preprocessor">#endif // defined(__REVERB_H)</font> 00057 <font class="preprocessor">#endif // defined(__REVERB_H)</font>
00058 <font class="preprocessor"></font> 00058 <font class="preprocessor"></font>
</pre></div><HR> </pre></div><HR>
<table> <table>
<tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr> <tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr>
<tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr> <tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr>
</table> </table>
</BODY> </BODY>
</HTML> </HTML>

View File

@@ -1,12 +1,12 @@
<HTML> <HTML>
<HEAD> <HEAD>
<TITLE>The Synthesis ToolKit in C++ (STK)</TITLE> <TITLE>The Synthesis ToolKit in C++ (STK)</TITLE>
<LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css"> <LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css">
</HEAD> </HEAD>
<BODY BGCOLOR="#FFFFFF"> <BODY BGCOLOR="#FFFFFF">
<CENTER> <CENTER>
<img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P> <img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P>
<a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER> <a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="links.html">Links</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER>
<HR> <HR>
<!-- Generated by Doxygen 1.2.8.1 --> <!-- Generated by Doxygen 1.2.8.1 -->
<h1>Rhodey.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************/</font> <h1>Rhodey.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************/</font>
@@ -32,12 +32,12 @@
00055 }; 00055 };
00056 00056
00057 <font class="preprocessor">#endif</font> 00057 <font class="preprocessor">#endif</font>
</font></pre></div><HR> </font></pre></div><HR>
<table> <table>
<tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr> <tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr>
<tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr> <tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr>
</table> </table>
</BODY> </BODY>
</HTML> </HTML>

View File

@@ -1,301 +1,336 @@
<HTML> <HTML>
<HEAD> <HEAD>
<TITLE>The Synthesis ToolKit in C++ (STK)</TITLE> <TITLE>The Synthesis ToolKit in C++ (STK)</TITLE>
<LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css"> <LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css">
</HEAD> </HEAD>
<BODY BGCOLOR="#FFFFFF"> <BODY BGCOLOR="#FFFFFF">
<CENTER> <CENTER>
<img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P> <img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P>
<a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER> <a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="links.html">Links</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER>
<HR> <HR>
<!-- Generated by Doxygen 1.2.8.1 --> <!-- Generated by Doxygen 1.2.8.1 -->
<h1>RtAudio.h</h1><div class="fragment"><pre>00001 <font class="comment">/******************************************/</font> <h1>RtAudio.h</h1><div class="fragment"><pre>00001 <font class="comment">/************************************************************************/</font>
00002 <font class="comment">/*</font> 00038 <font class="comment">/************************************************************************/</font>
00003 <font class="comment"> RtAudio - realtime sound I/O C++ class</font> 00039
00004 <font class="comment"> by Gary P. Scavone, 2001-2002.</font> 00040 <font class="preprocessor">#if !defined(__RTAUDIO_H)</font>
00005 <font class="comment">*/</font> 00041 <font class="preprocessor"></font><font class="preprocessor">#define __RTAUDIO_H</font>
00006 <font class="comment">/******************************************/</font> 00042 <font class="preprocessor"></font>
00007 00043 <font class="preprocessor">#include &lt;map&gt;</font>
00008 <font class="preprocessor">#if !defined(__RTAUDIO_H)</font> 00044
00009 <font class="preprocessor"></font><font class="preprocessor">#define __RTAUDIO_H</font> 00045 <font class="preprocessor">#if defined(__LINUX_ALSA__)</font>
00010 <font class="preprocessor"></font> 00046 <font class="preprocessor"></font><font class="preprocessor"> #include &lt;alsa/asoundlib.h&gt;</font>
00011 <font class="preprocessor">#include &lt;map&gt;</font> 00047 <font class="preprocessor"> #include &lt;pthread.h&gt;</font>
00012 00048 <font class="preprocessor"> #include &lt;unistd.h&gt;</font>
00013 <font class="preprocessor">#if defined(__LINUX_ALSA__)</font> 00049
00014 <font class="preprocessor"></font><font class="preprocessor"> #include &lt;alsa/asoundlib.h&gt;</font> 00050 <font class="keyword">typedef</font> snd_pcm_t *AUDIO_HANDLE;
00015 <font class="preprocessor"> #include &lt;pthread.h&gt;</font> 00051 <font class="keyword">typedef</font> <font class="keywordtype">int</font> DEVICE_ID;
00016 <font class="preprocessor"> #include &lt;unistd.h&gt;</font> 00052 <font class="keyword">typedef</font> pthread_t THREAD_HANDLE;
00017 00053 <font class="keyword">typedef</font> pthread_mutex_t MUTEX;
00018 <font class="preprocessor"> #define THREAD_TYPE</font> 00054
00019 <font class="preprocessor"></font> <font class="keyword">typedef</font> snd_pcm_t *AUDIO_HANDLE; 00055 <font class="preprocessor">#elif defined(__LINUX_OSS__)</font>
00020 <font class="keyword">typedef</font> <font class="keywordtype">int</font> DEVICE_ID; 00056 <font class="preprocessor"></font><font class="preprocessor"> #include &lt;pthread.h&gt;</font>
00021 <font class="keyword">typedef</font> pthread_t THREAD_HANDLE; 00057 <font class="preprocessor"> #include &lt;unistd.h&gt;</font>
00022 <font class="keyword">typedef</font> pthread_mutex_t MUTEX; 00058
00023 00059 <font class="keyword">typedef</font> <font class="keywordtype">int</font> AUDIO_HANDLE;
00024 <font class="preprocessor">#elif defined(__LINUX_OSS__)</font> 00060 <font class="keyword">typedef</font> <font class="keywordtype">int</font> DEVICE_ID;
00025 <font class="preprocessor"></font><font class="preprocessor"> #include &lt;pthread.h&gt;</font> 00061 <font class="keyword">typedef</font> pthread_t THREAD_HANDLE;
00026 <font class="preprocessor"> #include &lt;unistd.h&gt;</font> 00062 <font class="keyword">typedef</font> pthread_mutex_t MUTEX;
00027 00063
00028 <font class="preprocessor"> #define THREAD_TYPE</font> 00064 <font class="preprocessor">#elif defined(__WINDOWS_DS__)</font>
00029 <font class="preprocessor"></font> <font class="keyword">typedef</font> <font class="keywordtype">int</font> AUDIO_HANDLE; 00065 <font class="preprocessor"></font><font class="preprocessor"> #include &lt;windows.h&gt;</font>
00030 <font class="keyword">typedef</font> <font class="keywordtype">int</font> DEVICE_ID; 00066 <font class="preprocessor"> #include &lt;process.h&gt;</font>
00031 <font class="keyword">typedef</font> pthread_t THREAD_HANDLE; 00067
00032 <font class="keyword">typedef</font> pthread_mutex_t MUTEX; 00068 <font class="comment">// The following struct is used to hold the extra variables</font>
00033 00069 <font class="comment">// specific to the DirectSound implementation.</font>
00034 <font class="preprocessor">#elif defined(__WINDOWS_DS__)</font> 00070 <font class="keyword">typedef</font> <font class="keyword">struct </font>{
00035 <font class="preprocessor"></font><font class="preprocessor"> #include &lt;windows.h&gt;</font> 00071 <font class="keywordtype">void</font> * object;
00036 <font class="preprocessor"> #include &lt;process.h&gt;</font> 00072 <font class="keywordtype">void</font> * buffer;
00037 00073 UINT bufferPointer;
00038 <font class="comment">// The following struct is used to hold the extra variables</font> 00074 } AUDIO_HANDLE;
00039 <font class="comment">// specific to the DirectSound implementation.</font> 00075
00040 <font class="keyword">typedef</font> <font class="keyword">struct </font>{ 00076 <font class="keyword">typedef</font> LPGUID DEVICE_ID;
00041 <font class="keywordtype">void</font> * object; 00077 <font class="keyword">typedef</font> <font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> THREAD_HANDLE;
00042 <font class="keywordtype">void</font> * buffer; 00078 <font class="keyword">typedef</font> CRITICAL_SECTION MUTEX;
00043 UINT bufferPointer; 00079
00044 } AUDIO_HANDLE; 00080 <font class="preprocessor">#elif defined(__WINDOWS_ASIO__)</font>
00045 00081 <font class="preprocessor"></font><font class="preprocessor"> #include &lt;windows.h&gt;</font>
00046 <font class="preprocessor"> #define THREAD_TYPE __stdcall</font> 00082 <font class="preprocessor"> #include &lt;process.h&gt;</font>
00047 <font class="preprocessor"></font> <font class="keyword">typedef</font> LPGUID DEVICE_ID; 00083
00048 <font class="keyword">typedef</font> <font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> THREAD_HANDLE; 00084 <font class="keyword">typedef</font> <font class="keywordtype">int</font> AUDIO_HANDLE;
00049 <font class="keyword">typedef</font> CRITICAL_SECTION MUTEX; 00085 <font class="keyword">typedef</font> <font class="keywordtype">int</font> DEVICE_ID;
00050 00086 <font class="keyword">typedef</font> <font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> THREAD_HANDLE;
00051 <font class="preprocessor">#elif defined(__IRIX_AL__)</font> 00087 <font class="keyword">typedef</font> CRITICAL_SECTION MUTEX;
00052 <font class="preprocessor"></font><font class="preprocessor"> #include &lt;dmedia/audio.h&gt;</font> 00088
00053 <font class="preprocessor"> #include &lt;pthread.h&gt;</font> 00089 <font class="preprocessor">#elif defined(__IRIX_AL__)</font>
00054 <font class="preprocessor"> #include &lt;unistd.h&gt;</font> 00090 <font class="preprocessor"></font><font class="preprocessor"> #include &lt;dmedia/audio.h&gt;</font>
00055 00091 <font class="preprocessor"> #include &lt;pthread.h&gt;</font>
00056 <font class="preprocessor"> #define THREAD_TYPE</font> 00092 <font class="preprocessor"> #include &lt;unistd.h&gt;</font>
00057 <font class="preprocessor"></font> <font class="keyword">typedef</font> ALport AUDIO_HANDLE; 00093
00058 <font class="keyword">typedef</font> <font class="keywordtype">int</font> DEVICE_ID; 00094 <font class="keyword">typedef</font> ALport AUDIO_HANDLE;
00059 <font class="keyword">typedef</font> pthread_t THREAD_HANDLE; 00095 <font class="keyword">typedef</font> <font class="keywordtype">long</font> DEVICE_ID;
00060 <font class="keyword">typedef</font> pthread_mutex_t MUTEX; 00096 <font class="keyword">typedef</font> pthread_t THREAD_HANDLE;
00061 00097 <font class="keyword">typedef</font> pthread_mutex_t MUTEX;
00062 <font class="preprocessor">#endif</font>
00063 <font class="preprocessor"></font>
00064
00065 <font class="comment">// *************************************************** //</font>
00066 <font class="comment">//</font>
00067 <font class="comment">// RtError class declaration.</font>
00068 <font class="comment">//</font>
00069 <font class="comment">// *************************************************** //</font>
00070
00071 <font class="keyword">class </font>RtError
00072 {
00073 <font class="keyword">public</font>:
00074 <font class="keyword">enum</font> TYPE {
00075 WARNING,
00076 DEBUG_WARNING,
00077 UNSPECIFIED,
00078 NO_DEVICES_FOUND,
00079 INVALID_DEVICE,
00080 INVALID_STREAM,
00081 MEMORY_ERROR,
00082 INVALID_PARAMETER,
00083 DRIVER_ERROR,
00084 SYSTEM_ERROR,
00085 THREAD_ERROR
00086 };
00087
00088 <font class="keyword">protected</font>:
00089 <font class="keywordtype">char</font> error_message[256];
00090 TYPE type;
00091
00092 <font class="keyword">public</font>:
00094 RtError(<font class="keyword">const</font> <font class="keywordtype">char</font> *p, TYPE tipe = RtError::UNSPECIFIED);
00095
00097 <font class="keyword">virtual</font> ~RtError(<font class="keywordtype">void</font>);
00098 00098
00100 <font class="keyword">virtual</font> <font class="keywordtype">void</font> printMessage(<font class="keywordtype">void</font>); 00099 <font class="preprocessor">#elif defined(__MACOSX_CORE__)</font>
00101 00100 <font class="preprocessor"></font>
00103 <font class="keyword">virtual</font> <font class="keyword">const</font> TYPE&amp; getType(<font class="keywordtype">void</font>)<font class="keyword"> </font>{ <font class="keywordflow">return</font> type; } 00101 <font class="preprocessor"> #include &lt;CoreAudio/AudioHardware.h&gt;</font>
00104 00102 <font class="preprocessor"> #include &lt;pthread.h&gt;</font>
00106 <font class="keyword">virtual</font> <font class="keyword">const</font> <font class="keywordtype">char</font> *getMessage(<font class="keywordtype">void</font>)<font class="keyword"> </font>{ <font class="keywordflow">return</font> error_message; } 00103
00107 }; 00104 <font class="keyword">typedef</font> <font class="keywordtype">unsigned</font> <font class="keywordtype">int</font> AUDIO_HANDLE;
00105 <font class="keyword">typedef</font> AudioDeviceID DEVICE_ID;
00106 <font class="keyword">typedef</font> pthread_t THREAD_HANDLE;
00107 <font class="keyword">typedef</font> pthread_mutex_t MUTEX;
00108 00108
00109 00109 <font class="preprocessor">#endif</font>
00110 <font class="comment">// *************************************************** //</font> 00110 <font class="preprocessor"></font>
00111 <font class="comment">//</font> 00111
00112 <font class="comment">// RtAudio class declaration.</font> 00112 <font class="comment">/************************************************************************/</font>
00113 <font class="comment">//</font> 00125 <font class="comment">/************************************************************************/</font>
00114 <font class="comment">// *************************************************** //</font> 00126
00115 00127 <font class="keyword">class </font><a class="code" href="classRtError.html">RtError</a>
00116 <font class="keyword">class </font>RtAudio 00128 {
00117 { 00129 <font class="keyword">public</font>:
00118 <font class="keyword">public</font>: <a name="l00131"></a><a class="code" href="classRtError.html#s11">00131</a> <font class="keyword">enum</font> TYPE {
00119 00132 WARNING,
00120 <font class="comment">// Support for signed integers and floats. Audio data fed to/from</font> 00133 DEBUG_WARNING,
00121 <font class="comment">// the tickStream() routine is assumed to ALWAYS be in host</font> 00134 UNSPECIFIED,
00122 <font class="comment">// byte order. The internal routines will automatically take care of</font> 00135 NO_DEVICES_FOUND,
00123 <font class="comment">// any necessary byte-swapping between the host format and the</font> 00136 INVALID_DEVICE,
00124 <font class="comment">// soundcard. Thus, endian-ness is not a concern in the following</font> 00137 INVALID_STREAM,
00125 <font class="comment">// format definitions.</font> 00138 MEMORY_ERROR,
00126 <font class="keyword">typedef</font> <font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> RTAUDIO_FORMAT; 00139 INVALID_PARAMETER,
00127 <font class="keyword">static</font> <font class="keyword">const</font> RTAUDIO_FORMAT RTAUDIO_SINT8; 00140 DRIVER_ERROR,
00128 <font class="keyword">static</font> <font class="keyword">const</font> RTAUDIO_FORMAT RTAUDIO_SINT16; 00141 SYSTEM_ERROR,
00129 <font class="keyword">static</font> <font class="keyword">const</font> RTAUDIO_FORMAT RTAUDIO_SINT24; 00142 THREAD_ERROR
00130 <font class="keyword">static</font> <font class="keyword">const</font> RTAUDIO_FORMAT RTAUDIO_SINT32; 00143 };
00131 <font class="keyword">static</font> <font class="keyword">const</font> RTAUDIO_FORMAT RTAUDIO_FLOAT32; 00144
00132 <font class="keyword">static</font> <font class="keyword">const</font> RTAUDIO_FORMAT RTAUDIO_FLOAT64; 00145 <font class="keyword">protected</font>:
00133 00146 <font class="keywordtype">char</font> error_message[256];
00134 <font class="comment">//static const int MAX_SAMPLE_RATES = 14;</font> 00147 TYPE type;
00135 <font class="keyword">enum</font> { MAX_SAMPLE_RATES = 14 }; 00148
00136 00149 <font class="keyword">public</font>:
00137 <font class="keyword">typedef</font> int (*RTAUDIO_CALLBACK)(<font class="keywordtype">char</font> *buffer, <font class="keywordtype">int</font> bufferSize, <font class="keywordtype">void</font> *userData); 00151 <a class="code" href="classRtError.html#a0">RtError</a>(<font class="keyword">const</font> <font class="keywordtype">char</font> *p, TYPE tipe = RtError::UNSPECIFIED);
00138 00152
00139 <font class="keyword">typedef</font> <font class="keyword">struct </font>{ 00154 <font class="keyword">virtual</font> <a class="code" href="classRtError.html#a1">~RtError</a>(<font class="keywordtype">void</font>);
00140 <font class="keywordtype">char</font> name[128]; 00155
00141 DEVICE_ID id[2]; 00157 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="classRtError.html#a2">printMessage</a>(<font class="keywordtype">void</font>);
00142 <font class="keywordtype">bool</font> probed; 00158
00143 <font class="keywordtype">int</font> maxOutputChannels; <a name="l00160"></a><a class="code" href="classRtError.html#a3">00160</a> <font class="keyword">virtual</font> <font class="keyword">const</font> TYPE&amp; <a class="code" href="classRtError.html#a3">getType</a>(<font class="keywordtype">void</font>)<font class="keyword"> </font>{ <font class="keywordflow">return</font> type; }
00144 <font class="keywordtype">int</font> maxInputChannels; 00161
00145 <font class="keywordtype">int</font> maxDuplexChannels; <a name="l00163"></a><a class="code" href="classRtError.html#a4">00163</a> <font class="keyword">virtual</font> <font class="keyword">const</font> <font class="keywordtype">char</font> *<a class="code" href="classRtError.html#a4">getMessage</a>(<font class="keywordtype">void</font>)<font class="keyword"> </font>{ <font class="keywordflow">return</font> error_message; }
00146 <font class="keywordtype">int</font> minOutputChannels; 00164 };
00147 <font class="keywordtype">int</font> minInputChannels; 00165
00148 <font class="keywordtype">int</font> minDuplexChannels;
00149 <font class="keywordtype">bool</font> hasDuplexSupport;
00150 <font class="keywordtype">int</font> nSampleRates;
00151 <font class="keywordtype">int</font> sampleRates[MAX_SAMPLE_RATES];
00152 RTAUDIO_FORMAT nativeFormats;
00153 } RTAUDIO_DEVICE;
00154
00156
00163 RtAudio();
00164
00166 00166
00177 RtAudio(<font class="keywordtype">int</font> *streamId, 00167 <font class="comment">// This public structure type is used to pass callback information</font>
00178 <font class="keywordtype">int</font> outputDevice, <font class="keywordtype">int</font> outputChannels, 00168 <font class="comment">// between the private RtAudio stream structure and global callback</font>
00179 <font class="keywordtype">int</font> inputDevice, <font class="keywordtype">int</font> inputChannels, 00169 <font class="comment">// handling functions.</font>
00180 RTAUDIO_FORMAT format, <font class="keywordtype">int</font> sampleRate, 00170 <font class="keyword">typedef</font> <font class="keyword">struct </font>{
00181 <font class="keywordtype">int</font> *bufferSize, <font class="keywordtype">int</font> numberOfBuffers); 00171 <font class="keywordtype">void</font> *object; <font class="comment">// Used as a "this" pointer.</font>
00182 00172 <font class="keywordtype">int</font> streamId;
00173 DEVICE_ID device[2];
00174 THREAD_HANDLE thread;
00175 <font class="keywordtype">void</font> *callback;
00176 <font class="keywordtype">void</font> *buffers;
00177 <font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> waitTime;
00178 <font class="keywordtype">bool</font> blockTick;
00179 <font class="keywordtype">bool</font> stopStream;
00180 <font class="keywordtype">bool</font> usingCallback;
00181 <font class="keywordtype">void</font> *userData;
00182 } CALLBACK_INFO;
00183
00184 00184
00188 ~RtAudio(); 00185 <font class="comment">// *************************************************** //</font>
00189 00186 <font class="comment">//</font>
00191 00187 <font class="comment">// RtAudio class declaration.</font>
00218 <font class="keywordtype">int</font> openStream(<font class="keywordtype">int</font> outputDevice, <font class="keywordtype">int</font> outputChannels, 00188 <font class="comment">//</font>
00219 <font class="keywordtype">int</font> inputDevice, <font class="keywordtype">int</font> inputChannels, 00189 <font class="comment">// *************************************************** //</font>
00220 RTAUDIO_FORMAT format, <font class="keywordtype">int</font> sampleRate, 00190
00221 <font class="keywordtype">int</font> *bufferSize, <font class="keywordtype">int</font> numberOfBuffers); 00191 <font class="keyword">class </font><a class="code" href="classRtAudio.html">RtAudio</a>
00222 00192 {
00224 00193 <font class="keyword">public</font>:
00243 <font class="keywordtype">void</font> setStreamCallback(<font class="keywordtype">int</font> streamId, RTAUDIO_CALLBACK callback, <font class="keywordtype">void</font> *userData); 00194
00244 00195 <font class="comment">// Support for signed integers and floats. Audio data fed to/from</font>
00246 00196 <font class="comment">// the tickStream() routine is assumed to ALWAYS be in host</font>
00253 <font class="keywordtype">void</font> cancelStreamCallback(<font class="keywordtype">int</font> streamId); 00197 <font class="comment">// byte order. The internal routines will automatically take care of</font>
00254 00198 <font class="comment">// any necessary byte-swapping between the host format and the</font>
00256 <font class="keywordtype">int</font> getDeviceCount(<font class="keywordtype">void</font>); 00199 <font class="comment">// soundcard. Thus, endian-ness is not a concern in the following</font>
00257 00200 <font class="comment">// format definitions.</font>
00259 00201 <font class="keyword">typedef</font> <font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> RTAUDIO_FORMAT;
00269 <font class="keywordtype">void</font> getDeviceInfo(<font class="keywordtype">int</font> device, RTAUDIO_DEVICE *info); <a name="l00202"></a><a class="code" href="classRtAudio.html#p0">00202</a> <font class="keyword">static</font> <font class="keyword">const</font> RTAUDIO_FORMAT RTAUDIO_SINT8;
00270 <a name="l00203"></a><a class="code" href="classRtAudio.html#p1">00203</a> <font class="keyword">static</font> <font class="keyword">const</font> RTAUDIO_FORMAT RTAUDIO_SINT16;
00272 <a name="l00204"></a><a class="code" href="classRtAudio.html#p2">00204</a> <font class="keyword">static</font> <font class="keyword">const</font> RTAUDIO_FORMAT RTAUDIO_SINT24;
00277 <font class="keywordtype">char</font> * <font class="keyword">const</font> getStreamBuffer(<font class="keywordtype">int</font> streamId); <a name="l00205"></a><a class="code" href="classRtAudio.html#p3">00205</a> <font class="keyword">static</font> <font class="keyword">const</font> RTAUDIO_FORMAT RTAUDIO_SINT32;
00278 <a name="l00206"></a><a class="code" href="classRtAudio.html#p4">00206</a> <font class="keyword">static</font> <font class="keyword">const</font> RTAUDIO_FORMAT RTAUDIO_FLOAT32;
00280 <a name="l00207"></a><a class="code" href="classRtAudio.html#p5">00207</a> <font class="keyword">static</font> <font class="keyword">const</font> RTAUDIO_FORMAT RTAUDIO_FLOAT64;
00285 <font class="keywordtype">void</font> tickStream(<font class="keywordtype">int</font> streamId); 00209 <font class="comment">//static const int MAX_SAMPLE_RATES = 14;</font>
00286 00210 <font class="keyword">enum</font> { MAX_SAMPLE_RATES = 14 };
00288 00211
00292 <font class="keywordtype">void</font> closeStream(<font class="keywordtype">int</font> streamId); 00212 <font class="keyword">typedef</font> int (*RTAUDIO_CALLBACK)(<font class="keywordtype">char</font> *buffer, <font class="keywordtype">int</font> bufferSize, <font class="keywordtype">void</font> *userData);
00293 00213
00295 <a name="l00215"></a><a class="code" href="structRtAudio_1_1RTAUDIO__DEVICE.html">00215</a> <font class="keyword">typedef</font> <font class="keyword">struct </font>{
00299 <font class="keywordtype">void</font> startStream(<font class="keywordtype">int</font> streamId); <a name="l00216"></a><a class="code" href="structRtAudio_1_1RTAUDIO__DEVICE.html#m0">00216</a> <font class="keywordtype">char</font> name[128];
00217 DEVICE_ID id[2]; <font class="comment">/* No value reported by getDeviceInfo(). */</font>
<a name="l00218"></a><a class="code" href="structRtAudio_1_1RTAUDIO__DEVICE.html#m2">00218</a> <font class="keywordtype">bool</font> probed;
<a name="l00219"></a><a class="code" href="structRtAudio_1_1RTAUDIO__DEVICE.html#m3">00219</a> <font class="keywordtype">int</font> maxOutputChannels;
<a name="l00220"></a><a class="code" href="structRtAudio_1_1RTAUDIO__DEVICE.html#m4">00220</a> <font class="keywordtype">int</font> maxInputChannels;
<a name="l00221"></a><a class="code" href="structRtAudio_1_1RTAUDIO__DEVICE.html#m5">00221</a> <font class="keywordtype">int</font> maxDuplexChannels;
<a name="l00222"></a><a class="code" href="structRtAudio_1_1RTAUDIO__DEVICE.html#m6">00222</a> <font class="keywordtype">int</font> minOutputChannels;
<a name="l00223"></a><a class="code" href="structRtAudio_1_1RTAUDIO__DEVICE.html#m7">00223</a> <font class="keywordtype">int</font> minInputChannels;
<a name="l00224"></a><a class="code" href="structRtAudio_1_1RTAUDIO__DEVICE.html#m8">00224</a> <font class="keywordtype">int</font> minDuplexChannels;
<a name="l00225"></a><a class="code" href="structRtAudio_1_1RTAUDIO__DEVICE.html#m9">00225</a> <font class="keywordtype">bool</font> hasDuplexSupport;
<a name="l00226"></a><a class="code" href="structRtAudio_1_1RTAUDIO__DEVICE.html#m10">00226</a> <font class="keywordtype">bool</font> isDefault;
<a name="l00227"></a><a class="code" href="structRtAudio_1_1RTAUDIO__DEVICE.html#m11">00227</a> <font class="keywordtype">int</font> nSampleRates;
<a name="l00228"></a><a class="code" href="structRtAudio_1_1RTAUDIO__DEVICE.html#m12">00228</a> <font class="keywordtype">int</font> sampleRates[MAX_SAMPLE_RATES];
<a name="l00229"></a><a class="code" href="structRtAudio_1_1RTAUDIO__DEVICE.html#m13">00229</a> RTAUDIO_FORMAT nativeFormats;
00230 } RTAUDIO_DEVICE;
00231
00233
00239 <a class="code" href="classRtAudio.html#a0">RtAudio</a>();
00240
00242
00253 <a class="code" href="classRtAudio.html#a0">RtAudio</a>(<font class="keywordtype">int</font> *streamId,
00254 <font class="keywordtype">int</font> outputDevice, <font class="keywordtype">int</font> outputChannels,
00255 <font class="keywordtype">int</font> inputDevice, <font class="keywordtype">int</font> inputChannels,
00256 RTAUDIO_FORMAT format, <font class="keywordtype">int</font> sampleRate,
00257 <font class="keywordtype">int</font> *bufferSize, <font class="keywordtype">int</font> numberOfBuffers);
00258
00260
00264 <a class="code" href="classRtAudio.html#a2">~RtAudio</a>();
00265
00267
00294 <font class="keywordtype">int</font> <a class="code" href="classRtAudio.html#a3">openStream</a>(<font class="keywordtype">int</font> outputDevice, <font class="keywordtype">int</font> outputChannels,
00295 <font class="keywordtype">int</font> inputDevice, <font class="keywordtype">int</font> inputChannels,
00296 RTAUDIO_FORMAT format, <font class="keywordtype">int</font> sampleRate,
00297 <font class="keywordtype">int</font> *bufferSize, <font class="keywordtype">int</font> numberOfBuffers);
00298
00300 00300
00302 00319 <font class="keywordtype">void</font> <a class="code" href="classRtAudio.html#a4">setStreamCallback</a>(<font class="keywordtype">int</font> streamId, RTAUDIO_CALLBACK callback, <font class="keywordtype">void</font> *userData);
00306 <font class="keywordtype">void</font> stopStream(<font class="keywordtype">int</font> streamId); 00320
00307
00309
00313 <font class="keywordtype">void</font> abortStream(<font class="keywordtype">int</font> streamId);
00314
00316
00321 <font class="keywordtype">int</font> streamWillBlock(<font class="keywordtype">int</font> streamId);
00322 00322
00323 <font class="keyword">protected</font>: 00329 <font class="keywordtype">void</font> <a class="code" href="classRtAudio.html#a5">cancelStreamCallback</a>(<font class="keywordtype">int</font> streamId);
00324
00325 <font class="keyword">private</font>:
00326
00327 <font class="keyword">static</font> <font class="keyword">const</font> <font class="keywordtype">unsigned</font> <font class="keywordtype">int</font> SAMPLE_RATES[MAX_SAMPLE_RATES];
00328
00329 <font class="keyword">enum</font> { FAILURE, SUCCESS };
00330 00330
00331 <font class="keyword">enum</font> STREAM_MODE { 00332 <font class="keywordtype">int</font> <a class="code" href="classRtAudio.html#a6">getDeviceCount</a>(<font class="keywordtype">void</font>);
00332 PLAYBACK, 00333
00333 RECORD, 00335
00334 DUPLEX, 00343 <font class="keywordtype">void</font> <a class="code" href="classRtAudio.html#a7">getDeviceInfo</a>(<font class="keywordtype">int</font> device, RTAUDIO_DEVICE *info);
00335 UNINITIALIZED = -75 00344
00336 }; 00346
00337 00351 <font class="keywordtype">char</font> * <font class="keyword">const</font> <a class="code" href="classRtAudio.html#a8">getStreamBuffer</a>(<font class="keywordtype">int</font> streamId);
00338 <font class="keyword">enum</font> STREAM_STATE { 00352
00339 STREAM_STOPPED, 00354
00340 STREAM_RUNNING 00359 <font class="keywordtype">void</font> <a class="code" href="classRtAudio.html#a9">tickStream</a>(<font class="keywordtype">int</font> streamId);
00341 }; 00360
00342 00362
00343 <font class="keyword">typedef</font> <font class="keyword">struct </font>{ 00366 <font class="keywordtype">void</font> <a class="code" href="classRtAudio.html#a10">closeStream</a>(<font class="keywordtype">int</font> streamId);
00344 <font class="keywordtype">int</font> device[2]; <font class="comment">// Playback and record, respectively.</font> 00367
00345 STREAM_MODE mode; <font class="comment">// PLAYBACK, RECORD, or DUPLEX.</font> 00369
00346 AUDIO_HANDLE handle[2]; <font class="comment">// Playback and record handles, respectively.</font> 00373 <font class="keywordtype">void</font> <a class="code" href="classRtAudio.html#a11">startStream</a>(<font class="keywordtype">int</font> streamId);
00347 STREAM_STATE state; <font class="comment">// STOPPED or RUNNING</font> 00374
00348 <font class="keywordtype">char</font> *userBuffer; 00376
00349 <font class="keywordtype">char</font> *deviceBuffer; 00380 <font class="keywordtype">void</font> <a class="code" href="classRtAudio.html#a12">stopStream</a>(<font class="keywordtype">int</font> streamId);
00350 <font class="keywordtype">bool</font> doConvertBuffer[2]; <font class="comment">// Playback and record, respectively.</font> 00381
00351 <font class="keywordtype">bool</font> deInterleave[2]; <font class="comment">// Playback and record, respectively.</font> 00383
00352 <font class="keywordtype">bool</font> doByteSwap[2]; <font class="comment">// Playback and record, respectively.</font> 00387 <font class="keywordtype">void</font> <a class="code" href="classRtAudio.html#a13">abortStream</a>(<font class="keywordtype">int</font> streamId);
00353 <font class="keywordtype">int</font> sampleRate; 00388
00354 <font class="keywordtype">int</font> bufferSize; 00390
00355 <font class="keywordtype">int</font> nBuffers; 00395 <font class="keywordtype">int</font> <a class="code" href="classRtAudio.html#a14">streamWillBlock</a>(<font class="keywordtype">int</font> streamId);
00356 <font class="keywordtype">int</font> nUserChannels[2]; <font class="comment">// Playback and record, respectively.</font> 00396
00357 <font class="keywordtype">int</font> nDeviceChannels[2]; <font class="comment">// Playback and record channels, respectively.</font> 00397 <font class="preprocessor">#if (defined(__MACOSX_CORE__) || defined(__WINDOWS_ASIO__))</font>
00358 RTAUDIO_FORMAT userFormat; 00398 <font class="preprocessor"></font> <font class="comment">// This function is intended for internal use only. It must be</font>
00359 RTAUDIO_FORMAT deviceFormat[2]; <font class="comment">// Playback and record, respectively.</font> 00399 <font class="comment">// public because it is called by the internal callback handler,</font>
00360 <font class="keywordtype">bool</font> usingCallback; 00400 <font class="comment">// which is not a member of RtAudio. External use of this function</font>
00361 THREAD_HANDLE thread; 00401 <font class="comment">// will most likely produce highly undesireable results!</font>
00362 MUTEX mutex; 00402 <font class="keywordtype">void</font> callbackEvent(<font class="keywordtype">int</font> streamId, DEVICE_ID deviceId, <font class="keywordtype">void</font> *inData, <font class="keywordtype">void</font> *outData);
00363 RTAUDIO_CALLBACK callback; 00403 <font class="preprocessor">#endif</font>
00364 <font class="keywordtype">void</font> *userData; 00404 <font class="preprocessor"></font>
00365 } RTAUDIO_STREAM; 00405 <font class="keyword">protected</font>:
00366 00406
00367 <font class="keyword">typedef</font> <font class="keywordtype">signed</font> <font class="keywordtype">short</font> INT16; 00407 <font class="keyword">private</font>:
00368 <font class="keyword">typedef</font> <font class="keywordtype">signed</font> <font class="keywordtype">int</font> INT32; 00408
00369 <font class="keyword">typedef</font> <font class="keywordtype">float</font> FLOAT32; 00409 <font class="keyword">static</font> <font class="keyword">const</font> <font class="keywordtype">unsigned</font> <font class="keywordtype">int</font> SAMPLE_RATES[MAX_SAMPLE_RATES];
00370 <font class="keyword">typedef</font> <font class="keywordtype">double</font> FLOAT64; 00410
00371 00411 <font class="keyword">enum</font> { FAILURE, SUCCESS };
00372 <font class="keywordtype">char</font> message[256]; 00412
00373 <font class="keywordtype">int</font> nDevices; 00413 <font class="keyword">enum</font> STREAM_MODE {
00374 RTAUDIO_DEVICE *devices; 00414 OUTPUT,
00375 00415 INPUT,
00376 std::map&lt;int, void *&gt; streams; 00416 DUPLEX,
00377 00417 UNINITIALIZED = -75
00379 <font class="keywordtype">void</font> error(RtError::TYPE type); 00418 };
00380 00419
00385 <font class="keywordtype">void</font> initialize(<font class="keywordtype">void</font>); 00420 <font class="keyword">enum</font> STREAM_STATE {
00386 00421 STREAM_STOPPED,
00388 <font class="keywordtype">void</font> clearDeviceInfo(RTAUDIO_DEVICE *info); 00422 STREAM_RUNNING
00389 00423 };
00397 <font class="keywordtype">void</font> probeDeviceInfo(RTAUDIO_DEVICE *info); 00424
00398 00425 <font class="keyword">typedef</font> <font class="keyword">struct </font>{
00405 <font class="keywordtype">bool</font> probeDeviceOpen(<font class="keywordtype">int</font> device, RTAUDIO_STREAM *stream, 00426 <font class="keywordtype">int</font> device[2]; <font class="comment">// Playback and record, respectively.</font>
00406 STREAM_MODE mode, <font class="keywordtype">int</font> channels, 00427 STREAM_MODE mode; <font class="comment">// OUTPUT, INPUT, or DUPLEX.</font>
00407 <font class="keywordtype">int</font> sampleRate, RTAUDIO_FORMAT format, 00428 AUDIO_HANDLE handle[2]; <font class="comment">// Playback and record handles, respectively.</font>
00408 <font class="keywordtype">int</font> *bufferSize, <font class="keywordtype">int</font> numberOfBuffers); 00429 STREAM_STATE state; <font class="comment">// STOPPED or RUNNING</font>
00409 00430 <font class="keywordtype">char</font> *userBuffer;
00416 <font class="keywordtype">void</font> *verifyStream(<font class="keywordtype">int</font> streamId); 00431 <font class="keywordtype">char</font> *deviceBuffer;
00417 00432 <font class="keywordtype">bool</font> doConvertBuffer[2]; <font class="comment">// Playback and record, respectively.</font>
00422 <font class="keywordtype">void</font> convertStreamBuffer(RTAUDIO_STREAM *stream, STREAM_MODE mode); 00433 <font class="keywordtype">bool</font> deInterleave[2]; <font class="comment">// Playback and record, respectively.</font>
00423 00434 <font class="keywordtype">bool</font> doByteSwap[2]; <font class="comment">// Playback and record, respectively.</font>
00425 <font class="keywordtype">void</font> byteSwapBuffer(<font class="keywordtype">char</font> *buffer, <font class="keywordtype">int</font> samples, RTAUDIO_FORMAT format); 00435 <font class="keywordtype">int</font> sampleRate;
00426 00436 <font class="keywordtype">int</font> bufferSize;
00428 <font class="keywordtype">int</font> formatBytes(RTAUDIO_FORMAT format); 00437 <font class="keywordtype">int</font> nBuffers;
00429 }; 00438 <font class="keywordtype">int</font> nUserChannels[2]; <font class="comment">// Playback and record, respectively.</font>
00430 00439 <font class="keywordtype">int</font> nDeviceChannels[2]; <font class="comment">// Playback and record channels, respectively.</font>
00431 <font class="comment">// Uncomment the following definition to have extra information spewed to stderr.</font> 00440 RTAUDIO_FORMAT userFormat;
00432 <font class="comment">//#define RTAUDIO_DEBUG</font> 00441 RTAUDIO_FORMAT deviceFormat[2]; <font class="comment">// Playback and record, respectively.</font>
00433 00442 MUTEX mutex;
00434 <font class="preprocessor">#endif</font> 00443 CALLBACK_INFO callbackInfo;
</font></pre></div><HR> 00444 } RTAUDIO_STREAM;
00445
<table> 00446 <font class="keyword">typedef</font> <font class="keywordtype">signed</font> <font class="keywordtype">short</font> INT16;
<tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr> 00447 <font class="keyword">typedef</font> <font class="keywordtype">signed</font> <font class="keywordtype">int</font> INT32;
<tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr> 00448 <font class="keyword">typedef</font> <font class="keywordtype">float</font> FLOAT32;
</table> 00449 <font class="keyword">typedef</font> <font class="keywordtype">double</font> FLOAT64;
00450
</BODY> 00451 <font class="keywordtype">char</font> message[256];
00452 <font class="keywordtype">int</font> nDevices;
00453 RTAUDIO_DEVICE *devices;
00454
00455 std::map&lt;int, void *&gt; streams;
00456
00458 <font class="keywordtype">void</font> error(RtError::TYPE type);
00459
00464 <font class="keywordtype">void</font> initialize(<font class="keywordtype">void</font>);
00465
00470 <font class="keywordtype">int</font> getDefaultInputDevice(<font class="keywordtype">void</font>);
00471
00476 <font class="keywordtype">int</font> getDefaultOutputDevice(<font class="keywordtype">void</font>);
00477
00479 <font class="keywordtype">void</font> clearDeviceInfo(RTAUDIO_DEVICE *info);
00480
00488 <font class="keywordtype">void</font> probeDeviceInfo(RTAUDIO_DEVICE *info);
00489
00496 <font class="keywordtype">bool</font> probeDeviceOpen(<font class="keywordtype">int</font> device, RTAUDIO_STREAM *stream,
00497 STREAM_MODE mode, <font class="keywordtype">int</font> channels,
00498 <font class="keywordtype">int</font> sampleRate, RTAUDIO_FORMAT format,
00499 <font class="keywordtype">int</font> *bufferSize, <font class="keywordtype">int</font> numberOfBuffers);
00500
00507 <font class="keywordtype">void</font> *verifyStream(<font class="keywordtype">int</font> streamId);
00508
00513 <font class="keywordtype">void</font> convertStreamBuffer(RTAUDIO_STREAM *stream, STREAM_MODE mode);
00514
00516 <font class="keywordtype">void</font> byteSwapBuffer(<font class="keywordtype">char</font> *buffer, <font class="keywordtype">int</font> samples, RTAUDIO_FORMAT format);
00517
00519 <font class="keywordtype">int</font> formatBytes(RTAUDIO_FORMAT format);
00520 };
00521
00522 <font class="comment">// Define the following flag to have extra information spewed to stderr.</font>
00523 <font class="comment">//#define __RTAUDIO_DEBUG__</font>
00524
00525 <font class="preprocessor">#endif</font>
</font></pre></div><HR>
<table>
<tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr>
<tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr>
</table>
</BODY>
</HTML> </HTML>

View File

@@ -1,12 +1,12 @@
<HTML> <HTML>
<HEAD> <HEAD>
<TITLE>The Synthesis ToolKit in C++ (STK)</TITLE> <TITLE>The Synthesis ToolKit in C++ (STK)</TITLE>
<LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css"> <LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css">
</HEAD> </HEAD>
<BODY BGCOLOR="#FFFFFF"> <BODY BGCOLOR="#FFFFFF">
<CENTER> <CENTER>
<img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P> <img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P>
<a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER> <a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="links.html">Links</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER>
<HR> <HR>
<!-- Generated by Doxygen 1.2.8.1 --> <!-- Generated by Doxygen 1.2.8.1 -->
<h1>RtDuplex.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************/</font> <h1>RtDuplex.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************/</font>
@@ -47,7 +47,7 @@
00085 00085
00086 <font class="keyword">protected</font>: 00086 <font class="keyword">protected</font>:
00087 00087
00088 RtAudio *audio; 00088 <a class="code" href="classRtAudio.html">RtAudio</a> *audio;
00089 MY_FLOAT *data; 00089 MY_FLOAT *data;
00090 MY_FLOAT *lastOutput; 00090 MY_FLOAT *lastOutput;
00091 <font class="keywordtype">int</font> bufferSize; 00091 <font class="keywordtype">int</font> bufferSize;
@@ -59,12 +59,12 @@
00097 }; 00097 };
00098 00098
00099 <font class="preprocessor">#endif</font> 00099 <font class="preprocessor">#endif</font>
</font></pre></div><HR> </font></pre></div><HR>
<table> <table>
<tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr> <tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr>
<tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr> <tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr>
</table> </table>
</BODY> </BODY>
</HTML> </HTML>

View File

@@ -1,12 +1,12 @@
<HTML> <HTML>
<HEAD> <HEAD>
<TITLE>The Synthesis ToolKit in C++ (STK)</TITLE> <TITLE>The Synthesis ToolKit in C++ (STK)</TITLE>
<LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css"> <LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css">
</HEAD> </HEAD>
<BODY BGCOLOR="#FFFFFF"> <BODY BGCOLOR="#FFFFFF">
<CENTER> <CENTER>
<img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P> <img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P>
<a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER> <a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="links.html">Links</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER>
<HR> <HR>
<!-- Generated by Doxygen 1.2.8.1 --> <!-- Generated by Doxygen 1.2.8.1 -->
<h1>RtMidi.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************/</font> <h1>RtMidi.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************/</font>
@@ -50,12 +50,12 @@
00078 }; 00078 };
00079 00079
00080 <font class="preprocessor">#endif</font> 00080 <font class="preprocessor">#endif</font>
</font></pre></div><HR> </font></pre></div><HR>
<table> <table>
<tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr> <tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr>
<tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr> <tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr>
</table> </table>
</BODY> </BODY>
</HTML> </HTML>

View File

@@ -1,12 +1,12 @@
<HTML> <HTML>
<HEAD> <HEAD>
<TITLE>The Synthesis ToolKit in C++ (STK)</TITLE> <TITLE>The Synthesis ToolKit in C++ (STK)</TITLE>
<LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css"> <LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css">
</HEAD> </HEAD>
<BODY BGCOLOR="#FFFFFF"> <BODY BGCOLOR="#FFFFFF">
<CENTER> <CENTER>
<img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P> <img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P>
<a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER> <a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="links.html">Links</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER>
<HR> <HR>
<!-- Generated by Doxygen 1.2.8.1 --> <!-- Generated by Doxygen 1.2.8.1 -->
<h1>RtWvIn.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************/</font> <h1>RtWvIn.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************/</font>
@@ -51,7 +51,7 @@
00090 00090
00091 <font class="keyword">protected</font>: 00091 <font class="keyword">protected</font>:
00092 00092
00093 RtAudio *audio; 00093 <a class="code" href="classRtAudio.html">RtAudio</a> *audio;
00094 <font class="keywordtype">bool</font> stopped; 00094 <font class="keywordtype">bool</font> stopped;
00095 <font class="keywordtype">int</font> stream; 00095 <font class="keywordtype">int</font> stream;
00096 <font class="keywordtype">long</font> counter; 00096 <font class="keywordtype">long</font> counter;
@@ -59,12 +59,12 @@
00098 }; 00098 };
00099 00099
00100 <font class="preprocessor">#endif</font> 00100 <font class="preprocessor">#endif</font>
</font></pre></div><HR> </font></pre></div><HR>
<table> <table>
<tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr> <tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr>
<tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr> <tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr>
</table> </table>
</BODY> </BODY>
</HTML> </HTML>

View File

@@ -1,12 +1,12 @@
<HTML> <HTML>
<HEAD> <HEAD>
<TITLE>The Synthesis ToolKit in C++ (STK)</TITLE> <TITLE>The Synthesis ToolKit in C++ (STK)</TITLE>
<LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css"> <LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css">
</HEAD> </HEAD>
<BODY BGCOLOR="#FFFFFF"> <BODY BGCOLOR="#FFFFFF">
<CENTER> <CENTER>
<img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P> <img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P>
<a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER> <a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="links.html">Links</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER>
<HR> <HR>
<!-- Generated by Doxygen 1.2.8.1 --> <!-- Generated by Doxygen 1.2.8.1 -->
<h1>RtWvOut.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************/</font> <h1>RtWvOut.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************/</font>
@@ -47,7 +47,7 @@
00082 00082
00083 <font class="keyword">protected</font>: 00083 <font class="keyword">protected</font>:
00084 00084
00085 RtAudio *audio; 00085 <a class="code" href="classRtAudio.html">RtAudio</a> *audio;
00086 <font class="keywordtype">bool</font> stopped; 00086 <font class="keywordtype">bool</font> stopped;
00087 <font class="keywordtype">int</font> stream; 00087 <font class="keywordtype">int</font> stream;
00088 <font class="keywordtype">int</font> bufferSize; 00088 <font class="keywordtype">int</font> bufferSize;
@@ -55,12 +55,12 @@
00090 }; 00090 };
00091 00091
00092 <font class="preprocessor">#endif // defined(__RTWVOUT_H)</font> 00092 <font class="preprocessor">#endif // defined(__RTWVOUT_H)</font>
</font></pre></div><HR> </font></pre></div><HR>
<table> <table>
<tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr> <tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr>
<tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr> <tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr>
</table> </table>
</BODY> </BODY>
</HTML> </HTML>

View File

@@ -1,12 +1,12 @@
<HTML> <HTML>
<HEAD> <HEAD>
<TITLE>The Synthesis ToolKit in C++ (STK)</TITLE> <TITLE>The Synthesis ToolKit in C++ (STK)</TITLE>
<LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css"> <LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css">
</HEAD> </HEAD>
<BODY BGCOLOR="#FFFFFF"> <BODY BGCOLOR="#FFFFFF">
<CENTER> <CENTER>
<img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P> <img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P>
<a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER> <a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="links.html">Links</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER>
<HR> <HR>
<!-- Generated by Doxygen 1.2.8.1 --> <!-- Generated by Doxygen 1.2.8.1 -->
<h1>SKINI.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************/</font> <h1>SKINI.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************/</font>
@@ -92,12 +92,12 @@
00125 <font class="preprocessor">#endif</font> 00125 <font class="preprocessor">#endif</font>
00126 <font class="preprocessor"></font> 00126 <font class="preprocessor"></font>
00127 00127
</pre></div><HR> </pre></div><HR>
<table> <table>
<tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr> <tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr>
<tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr> <tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr>
</table> </table>
</BODY> </BODY>
</HTML> </HTML>

View File

@@ -1,12 +1,12 @@
<HTML> <HTML>
<HEAD> <HEAD>
<TITLE>The Synthesis ToolKit in C++ (STK)</TITLE> <TITLE>The Synthesis ToolKit in C++ (STK)</TITLE>
<LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css"> <LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css">
</HEAD> </HEAD>
<BODY BGCOLOR="#FFFFFF"> <BODY BGCOLOR="#FFFFFF">
<CENTER> <CENTER>
<img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P> <img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P>
<a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER> <a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="links.html">Links</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER>
<HR> <HR>
<!-- Generated by Doxygen 1.2.8.1 --> <!-- Generated by Doxygen 1.2.8.1 -->
<h1>Sampler.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************/</font> <h1>Sampler.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************/</font>
@@ -57,12 +57,12 @@
00063 }; 00063 };
00064 00064
00065 <font class="preprocessor">#endif</font> 00065 <font class="preprocessor">#endif</font>
</font></pre></div><HR> </font></pre></div><HR>
<table> <table>
<tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr> <tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr>
<tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr> <tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr>
</table> </table>
</BODY> </BODY>
</HTML> </HTML>

View File

@@ -1,12 +1,12 @@
<HTML> <HTML>
<HEAD> <HEAD>
<TITLE>The Synthesis ToolKit in C++ (STK)</TITLE> <TITLE>The Synthesis ToolKit in C++ (STK)</TITLE>
<LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css"> <LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css">
</HEAD> </HEAD>
<BODY BGCOLOR="#FFFFFF"> <BODY BGCOLOR="#FFFFFF">
<CENTER> <CENTER>
<img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P> <img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P>
<a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER> <a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="links.html">Links</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER>
<HR> <HR>
<!-- Generated by Doxygen 1.2.8.1 --> <!-- Generated by Doxygen 1.2.8.1 -->
<h1>Saxofony.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************/</font> <h1>Saxofony.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************/</font>
@@ -64,12 +64,12 @@
00098 }; 00098 };
00099 00099
00100 <font class="preprocessor">#endif</font> 00100 <font class="preprocessor">#endif</font>
</font></pre></div><HR> </font></pre></div><HR>
<table> <table>
<tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr> <tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr>
<tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr> <tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr>
</table> </table>
</BODY> </BODY>
</HTML> </HTML>

View File

@@ -1,12 +1,12 @@
<HTML> <HTML>
<HEAD> <HEAD>
<TITLE>The Synthesis ToolKit in C++ (STK)</TITLE> <TITLE>The Synthesis ToolKit in C++ (STK)</TITLE>
<LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css"> <LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css">
</HEAD> </HEAD>
<BODY BGCOLOR="#FFFFFF"> <BODY BGCOLOR="#FFFFFF">
<CENTER> <CENTER>
<img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P> <img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P>
<a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER> <a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="links.html">Links</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER>
<HR> <HR>
<!-- Generated by Doxygen 1.2.8.1 --> <!-- Generated by Doxygen 1.2.8.1 -->
<h1>Shakers.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************/</font> <h1>Shakers.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************/</font>
@@ -77,12 +77,12 @@
00126 }; 00126 };
00127 00127
00128 <font class="preprocessor">#endif</font> 00128 <font class="preprocessor">#endif</font>
</font></pre></div><HR> </font></pre></div><HR>
<table> <table>
<tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr> <tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr>
<tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr> <tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr>
</table> </table>
</BODY> </BODY>
</HTML> </HTML>

View File

@@ -1,12 +1,12 @@
<HTML> <HTML>
<HEAD> <HEAD>
<TITLE>The Synthesis ToolKit in C++ (STK)</TITLE> <TITLE>The Synthesis ToolKit in C++ (STK)</TITLE>
<LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css"> <LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css">
</HEAD> </HEAD>
<BODY BGCOLOR="#FFFFFF"> <BODY BGCOLOR="#FFFFFF">
<CENTER> <CENTER>
<img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P> <img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P>
<a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER> <a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="links.html">Links</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER>
<HR> <HR>
<!-- Generated by Doxygen 1.2.8.1 --> <!-- Generated by Doxygen 1.2.8.1 -->
<h1>Simple.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************/</font> <h1>Simple.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************/</font>
@@ -57,12 +57,12 @@
00072 }; 00072 };
00073 00073
00074 <font class="preprocessor">#endif</font> 00074 <font class="preprocessor">#endif</font>
</font></pre></div><HR> </font></pre></div><HR>
<table> <table>
<tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr> <tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr>
<tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr> <tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr>
</table> </table>
</BODY> </BODY>
</HTML> </HTML>

View File

@@ -0,0 +1,79 @@
<HTML>
<HEAD>
<TITLE>The Synthesis ToolKit in C++ (STK)</TITLE>
<LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css">
</HEAD>
<BODY BGCOLOR="#FFFFFF">
<CENTER>
<img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P>
<a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="links.html">Links</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER>
<HR>
<!-- Generated by Doxygen 1.2.8.1 -->
<h1>SingWave.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************/</font>
00014 <font class="comment">/***************************************************/</font>
00015
00016 <font class="preprocessor">#if !defined(__SINGWAVE_H)</font>
00017 <font class="preprocessor"></font><font class="preprocessor">#define __SINGWAVE_H</font>
00018 <font class="preprocessor"></font>
00019 <font class="preprocessor">#include "WaveLoop.h"</font>
00020 <font class="preprocessor">#include "Modulate.h"</font>
00021 <font class="preprocessor">#include "Envelope.h"</font>
00022
00023 <font class="keyword">class </font><a class="code" href="classSingWave.html">SingWave</a> : <font class="keyword">public</font> <a class="code" href="classStk.html">Stk</a>
00024 {
00025 <font class="keyword">public</font>:
00027
00031 <a class="code" href="classSingWave.html#a0">SingWave</a>(<font class="keyword">const</font> <font class="keywordtype">char</font> *fileName, <font class="keywordtype">bool</font> raw=FALSE);
00032
00034 <a class="code" href="classSingWave.html#a1">~SingWave</a>();
00035
00037 <font class="keywordtype">void</font> <a class="code" href="classSingWave.html#a2">reset</a>();
00038
00040 <font class="keywordtype">void</font> <a class="code" href="classSingWave.html#a3">normalize</a>();
00041
00043 <font class="keywordtype">void</font> <a class="code" href="classSingWave.html#a3">normalize</a>(MY_FLOAT peak);
00044
00046 <font class="keywordtype">void</font> <a class="code" href="classSingWave.html#a5">setFrequency</a>(MY_FLOAT frequency);
00047
00049 <font class="keywordtype">void</font> <a class="code" href="classSingWave.html#a6">setVibratoRate</a>(MY_FLOAT aRate);
00050
00052 <font class="keywordtype">void</font> <a class="code" href="classSingWave.html#a7">setVibratoGain</a>(MY_FLOAT gain);
00053
00055 <font class="keywordtype">void</font> <a class="code" href="classSingWave.html#a8">setRandomGain</a>(MY_FLOAT gain);
00056
00058 <font class="keywordtype">void</font> <a class="code" href="classSingWave.html#a9">setSweepRate</a>(MY_FLOAT aRate);
00059
00061 <font class="keywordtype">void</font> <a class="code" href="classSingWave.html#a10">setGainRate</a>(MY_FLOAT aRate);
00062
00064 <font class="keywordtype">void</font> <a class="code" href="classSingWave.html#a11">setGainTarget</a>(MY_FLOAT target);
00065
00067 <font class="keywordtype">void</font> <a class="code" href="classSingWave.html#a12">noteOn</a>();
00068
00070 <font class="keywordtype">void</font> <a class="code" href="classSingWave.html#a13">noteOff</a>();
00071
00073 MY_FLOAT <a class="code" href="classSingWave.html#a14">lastOut</a>();
00074
00076 MY_FLOAT <a class="code" href="classSingWave.html#a15">tick</a>();
00077
00078 <font class="keyword">protected</font>:
00079
00080 <a class="code" href="classWaveLoop.html">WaveLoop</a> *wave;
00081 <a class="code" href="classModulate.html">Modulate</a> *modulator;
00082 <a class="code" href="classEnvelope.html">Envelope</a> *envelope;
00083 <a class="code" href="classEnvelope.html">Envelope</a> *pitchEnvelope;
00084 MY_FLOAT rate;
00085 MY_FLOAT sweepRate;
00086 MY_FLOAT lastOutput;
00087
00088 };
00089
00090 <font class="preprocessor">#endif</font>
</font></pre></div><HR>
<table>
<tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr>
<tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr>
</table>
</BODY>
</HTML>

View File

@@ -1,12 +1,12 @@
<HTML> <HTML>
<HEAD> <HEAD>
<TITLE>The Synthesis ToolKit in C++ (STK)</TITLE> <TITLE>The Synthesis ToolKit in C++ (STK)</TITLE>
<LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css"> <LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css">
</HEAD> </HEAD>
<BODY BGCOLOR="#FFFFFF"> <BODY BGCOLOR="#FFFFFF">
<CENTER> <CENTER>
<img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P> <img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P>
<a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER> <a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="links.html">Links</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER>
<HR> <HR>
<!-- Generated by Doxygen 1.2.8.1 --> <!-- Generated by Doxygen 1.2.8.1 -->
<h1>Sitar.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************/</font> <h1>Sitar.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************/</font>
@@ -55,12 +55,12 @@
00068 00068
00069 <font class="preprocessor">#endif</font> 00069 <font class="preprocessor">#endif</font>
00070 <font class="preprocessor"></font> 00070 <font class="preprocessor"></font>
</pre></div><HR> </pre></div><HR>
<table> <table>
<tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr> <tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr>
<tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr> <tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr>
</table> </table>
</BODY> </BODY>
</HTML> </HTML>

View File

@@ -1,12 +1,12 @@
<HTML> <HTML>
<HEAD> <HEAD>
<TITLE>The Synthesis ToolKit in C++ (STK)</TITLE> <TITLE>The Synthesis ToolKit in C++ (STK)</TITLE>
<LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css"> <LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css">
</HEAD> </HEAD>
<BODY BGCOLOR="#FFFFFF"> <BODY BGCOLOR="#FFFFFF">
<CENTER> <CENTER>
<img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P> <img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P>
<a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER> <a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="links.html">Links</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER>
<HR> <HR>
<!-- Generated by Doxygen 1.2.8.1 --> <!-- Generated by Doxygen 1.2.8.1 -->
<h1>Socket.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************/</font> <h1>Socket.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************/</font>
@@ -64,12 +64,12 @@
00101 }; 00101 };
00102 00102
00103 <font class="preprocessor">#endif // defined(__SOCKET_H)</font> 00103 <font class="preprocessor">#endif // defined(__SOCKET_H)</font>
</font></pre></div><HR> </font></pre></div><HR>
<table> <table>
<tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr> <tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr>
<tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr> <tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr>
</table> </table>
</BODY> </BODY>
</HTML> </HTML>

View File

@@ -0,0 +1,68 @@
<HTML>
<HEAD>
<TITLE>The Synthesis ToolKit in C++ (STK)</TITLE>
<LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css">
</HEAD>
<BODY BGCOLOR="#FFFFFF">
<CENTER>
<img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P>
<a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="links.html">Links</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER>
<HR>
<!-- Generated by Doxygen 1.2.8.1 -->
<h1>Sphere.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************/</font>
00010 <font class="comment">/***************************************************/</font>
00011
00012 <font class="preprocessor">#if !defined(__SPHERE_H)</font>
00013 <font class="preprocessor"></font><font class="preprocessor">#define __SPHERE_H</font>
00014 <font class="preprocessor"></font>
00015 <font class="preprocessor">#include "Vector3D.h"</font>
00016
00017 <font class="keyword">class </font><a class="code" href="classSphere.html">Sphere</a>
00018 {
00019 <font class="keyword">public</font>:
00021 <a class="code" href="classSphere.html#a0">Sphere</a>(<font class="keywordtype">double</font> initRadius);
00022
00024 <a class="code" href="classSphere.html#a1">~Sphere</a>();
00025
00027 <font class="keywordtype">void</font> <a class="code" href="classSphere.html#a2">setPosition</a>(<font class="keywordtype">double</font> anX, <font class="keywordtype">double</font> aY, <font class="keywordtype">double</font> aZ);
00028
00030 <font class="keywordtype">void</font> <a class="code" href="classSphere.html#a3">setVelocity</a>(<font class="keywordtype">double</font> anX, <font class="keywordtype">double</font> aY, <font class="keywordtype">double</font> aZ);
00031
00033 <font class="keywordtype">void</font> <a class="code" href="classSphere.html#a4">setRadius</a>(<font class="keywordtype">double</font> aRadius);
00034
00036 <font class="keywordtype">void</font> <a class="code" href="classSphere.html#a5">setMass</a>(<font class="keywordtype">double</font> aMass);
00037
00039 <a class="code" href="classVector3D.html">Vector3D</a>* <a class="code" href="classSphere.html#a6">getPosition</a>();
00040
00042 <a class="code" href="classVector3D.html">Vector3D</a>* <a class="code" href="classSphere.html#a7">getRelativePosition</a>(<a class="code" href="classVector3D.html">Vector3D</a> *aPosition);
00043
00045 <font class="keywordtype">double</font> <a class="code" href="classSphere.html#a8">getVelocity</a>(<a class="code" href="classVector3D.html">Vector3D</a>* aVelocity);
00046
00048 <font class="keywordtype">double</font> <a class="code" href="classSphere.html#a9">isInside</a>(<a class="code" href="classVector3D.html">Vector3D</a> *aPosition);
00049
00051 <font class="keywordtype">double</font> <a class="code" href="classSphere.html#a10">getRadius</a>();
00052
00054 <font class="keywordtype">double</font> <a class="code" href="classSphere.html#a11">getMass</a>();
00055
00057 <font class="keywordtype">void</font> <a class="code" href="classSphere.html#a12">addVelocity</a>(<font class="keywordtype">double</font> anX, <font class="keywordtype">double</font> aY, <font class="keywordtype">double</font> aZ);
00058
00060 <font class="keywordtype">void</font> <a class="code" href="classSphere.html#a13">tick</a>(<font class="keywordtype">double</font> timeIncrement);
00061
00062 <font class="keyword">private</font>:
00063 <a class="code" href="classVector3D.html">Vector3D</a> *myPosition;
00064 <a class="code" href="classVector3D.html">Vector3D</a> *myVelocity;
00065 <a class="code" href="classVector3D.html">Vector3D</a> workingVector;
00066 <font class="keywordtype">double</font> myRadius;
00067 <font class="keywordtype">double</font> myMass;
00068 };
00069
00070 <font class="preprocessor">#endif</font>
</font></pre></div><HR>
<table>
<tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr>
<tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr>
</table>
</BODY>
</HTML>

View File

@@ -1,12 +1,12 @@
<HTML> <HTML>
<HEAD> <HEAD>
<TITLE>The Synthesis ToolKit in C++ (STK)</TITLE> <TITLE>The Synthesis ToolKit in C++ (STK)</TITLE>
<LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css"> <LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css">
</HEAD> </HEAD>
<BODY BGCOLOR="#FFFFFF"> <BODY BGCOLOR="#FFFFFF">
<CENTER> <CENTER>
<img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P> <img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P>
<a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER> <a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="links.html">Links</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER>
<HR> <HR>
<!-- Generated by Doxygen 1.2.8.1 --> <!-- Generated by Doxygen 1.2.8.1 -->
<h1>StifKarp.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************/</font> <h1>StifKarp.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************/</font>
@@ -68,12 +68,12 @@
00093 }; 00093 };
00094 00094
00095 <font class="preprocessor">#endif</font> 00095 <font class="preprocessor">#endif</font>
</font></pre></div><HR> </font></pre></div><HR>
<table> <table>
<tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr> <tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr>
<tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr> <tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr>
</table> </table>
</BODY> </BODY>
</HTML> </HTML>

View File

@@ -1,12 +1,12 @@
<HTML> <HTML>
<HEAD> <HEAD>
<TITLE>The Synthesis ToolKit in C++ (STK)</TITLE> <TITLE>The Synthesis ToolKit in C++ (STK)</TITLE>
<LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css"> <LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css">
</HEAD> </HEAD>
<BODY BGCOLOR="#FFFFFF"> <BODY BGCOLOR="#FFFFFF">
<CENTER> <CENTER>
<img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P> <img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P>
<a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER> <a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="links.html">Links</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER>
<HR> <HR>
<!-- Generated by Doxygen 1.2.8.1 --> <!-- Generated by Doxygen 1.2.8.1 -->
<h1>Stk.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************/</font> <h1>Stk.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************/</font>
@@ -58,7 +58,7 @@
00068 00068
00069 <font class="keyword">class </font><a class="code" href="classStk.html">Stk</a> 00069 <font class="keyword">class </font><a class="code" href="classStk.html">Stk</a>
00070 { 00070 {
00071 <font class="keyword">public</font>: 00071 <font class="keyword">public</font>:
00072 00072
00073 <font class="keyword">typedef</font> <font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> STK_FORMAT; 00073 <font class="keyword">typedef</font> <font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> STK_FORMAT;
<a name="l00074"></a><a class="code" href="classStk.html#p0">00074</a> <font class="keyword">static</font> <font class="keyword">const</font> STK_FORMAT STK_SINT8; <a name="l00074"></a><a class="code" href="classStk.html#p0">00074</a> <font class="keyword">static</font> <font class="keyword">const</font> STK_FORMAT STK_SINT8;
@@ -66,7 +66,7 @@
<a name="l00076"></a><a class="code" href="classStk.html#p2">00076</a> <font class="keyword">static</font> <font class="keyword">const</font> STK_FORMAT STK_SINT32; <a name="l00076"></a><a class="code" href="classStk.html#p2">00076</a> <font class="keyword">static</font> <font class="keyword">const</font> STK_FORMAT STK_SINT32;
<a name="l00077"></a><a class="code" href="classStk.html#p3">00077</a> <font class="keyword">static</font> <font class="keyword">const</font> STK_FORMAT STK_FLOAT32; <a name="l00077"></a><a class="code" href="classStk.html#p3">00077</a> <font class="keyword">static</font> <font class="keyword">const</font> STK_FORMAT STK_FLOAT32;
<a name="l00078"></a><a class="code" href="classStk.html#p4">00078</a> <font class="keyword">static</font> <font class="keyword">const</font> STK_FORMAT STK_FLOAT64; <a name="l00078"></a><a class="code" href="classStk.html#p4">00078</a> <font class="keyword">static</font> <font class="keyword">const</font> STK_FORMAT STK_FLOAT64;
00079 00080
00081 <font class="keyword">static</font> MY_FLOAT <a class="code" href="classStk.html#d0">sampleRate</a>(<font class="keywordtype">void</font>); 00081 <font class="keyword">static</font> MY_FLOAT <a class="code" href="classStk.html#d0">sampleRate</a>(<font class="keywordtype">void</font>);
00082 00082
00084 00084
@@ -80,10 +80,10 @@
00102 00102
00104 <font class="keyword">static</font> <font class="keywordtype">void</font> <a class="code" href="classStk.html#d5">sleep</a>(<font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> milliseconds); 00104 <font class="keyword">static</font> <font class="keywordtype">void</font> <a class="code" href="classStk.html#d5">sleep</a>(<font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> milliseconds);
00105 00105
00106 <font class="keyword">private</font>: 00106 <font class="keyword">private</font>:
00107 <font class="keyword">static</font> MY_FLOAT srate; 00107 <font class="keyword">static</font> MY_FLOAT srate;
00108 00108
00109 <font class="keyword">protected</font>: 00109 <font class="keyword">protected</font>:
00110 00110
00112 <a class="code" href="classStk.html#b0">Stk</a>(<font class="keywordtype">void</font>); 00112 <a class="code" href="classStk.html#b0">Stk</a>(<font class="keywordtype">void</font>);
00113 00113
@@ -117,35 +117,41 @@
00143 <font class="comment">// (ex. Clarinet.cpp). If you wish to move the rawwaves directory to</font> 00143 <font class="comment">// (ex. Clarinet.cpp). If you wish to move the rawwaves directory to</font>
00144 <font class="comment">// a different location in your file system, you will need to set this</font> 00144 <font class="comment">// a different location in your file system, you will need to set this</font>
00145 <font class="comment">// path definition appropriately. The current definition is a</font> 00145 <font class="comment">// path definition appropriately. The current definition is a</font>
00146 <font class="comment">// relative reference that will work "out of the box" for the STK</font> 00146 <font class="comment">// relative reference that will work for the programs in the STK</font>
00147 <font class="comment">// distribution.</font> 00147 <font class="comment">// projects directory. The path can also be specified to configure and</font>
00148 <font class="preprocessor">#define RAWWAVE_PATH "../../"</font> 00148 <font class="comment">// set via the Makefiles.</font>
00149 <font class="preprocessor"></font> 00149 <font class="preprocessor">#if !defined(RAWWAVE_PATH)</font>
00150 <font class="preprocessor">#define PI (MY_FLOAT) 3.14159265359</font> 00150 <font class="preprocessor"></font><font class="preprocessor"> #define RAWWAVE_PATH "../../rawwaves/"</font>
00151 <font class="preprocessor"></font><font class="preprocessor">#define TWO_PI (MY_FLOAT) (MY_FLOAT) (2 * PI)</font> 00151 <font class="preprocessor"></font><font class="preprocessor">#endif</font>
00152 <font class="preprocessor"></font> 00152 <font class="preprocessor"></font>
00153 <font class="preprocessor">#define ONE_OVER_128 (MY_FLOAT) 0.0078125</font> 00153 <font class="preprocessor">#define PI (MY_FLOAT) 3.14159265359</font>
00154 <font class="preprocessor"></font> 00154 <font class="preprocessor"></font><font class="preprocessor">#define TWO_PI (MY_FLOAT) (MY_FLOAT) (2 * PI)</font>
00155 <font class="preprocessor">#if defined(__WINDOWS_DS__)</font> 00155 <font class="preprocessor"></font>
00156 <font class="preprocessor"></font><font class="preprocessor"> #define __OS_WINDOWS__</font> 00156 <font class="preprocessor">#define ONE_OVER_128 (MY_FLOAT) 0.0078125</font>
00157 <font class="preprocessor"></font><font class="preprocessor"> #define __STK_REALTIME__</font> 00157 <font class="preprocessor"></font>
00158 <font class="preprocessor"></font><font class="preprocessor">#elif defined(__LINUX_OSS__) || defined(__LINUX_ALSA__)</font> 00158 <font class="preprocessor">#if defined(__WINDOWS_DS__)</font>
00159 <font class="preprocessor"></font><font class="preprocessor"> #define __OS_LINUX__</font> 00159 <font class="preprocessor"></font><font class="preprocessor"> #define __OS_WINDOWS__</font>
00160 <font class="preprocessor"></font><font class="preprocessor"> #define __STK_REALTIME__</font> 00160 <font class="preprocessor"></font><font class="preprocessor"> #define __STK_REALTIME__</font>
00161 <font class="preprocessor"></font><font class="preprocessor">#elif defined(__IRIX_AL__)</font> 00161 <font class="preprocessor"></font><font class="preprocessor">#elif defined(__LINUX_OSS__) || defined(__LINUX_ALSA__)</font>
00162 <font class="preprocessor"></font><font class="preprocessor"> #define __OS_IRIX__</font> 00162 <font class="preprocessor"></font><font class="preprocessor"> #define __OS_LINUX__</font>
00163 <font class="preprocessor"></font><font class="preprocessor"> #define __STK_REALTIME__</font> 00163 <font class="preprocessor"></font><font class="preprocessor"> #define __STK_REALTIME__</font>
00164 <font class="preprocessor"></font><font class="preprocessor">#endif</font> 00164 <font class="preprocessor"></font><font class="preprocessor">#elif defined(__IRIX_AL__)</font>
00165 <font class="preprocessor"></font> 00165 <font class="preprocessor"></font><font class="preprocessor"> #define __OS_IRIX__</font>
00166 <font class="comment">//#define _STK_DEBUG_</font> 00166 <font class="preprocessor"></font><font class="preprocessor"> #define __STK_REALTIME__</font>
00167 00167 <font class="preprocessor"></font><font class="preprocessor">#elif defined(__MACOSX_CORE__)</font>
00168 <font class="preprocessor">#endif</font> 00168 <font class="preprocessor"></font><font class="preprocessor"> #define __OS_MACOSX__</font>
</font></pre></div><HR> 00169 <font class="preprocessor"></font><font class="preprocessor"> #define __STK_REALTIME__</font>
00170 <font class="preprocessor"></font><font class="preprocessor">#endif</font>
<table> 00171 <font class="preprocessor"></font>
<tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr> 00172 <font class="comment">//#define _STK_DEBUG_</font>
<tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr> 00173
</table> 00174 <font class="preprocessor">#endif</font>
</font></pre></div><HR>
</BODY>
<table>
<tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr>
<tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr>
</table>
</BODY>
</HTML> </HTML>

View File

@@ -1,12 +1,12 @@
<HTML> <HTML>
<HEAD> <HEAD>
<TITLE>The Synthesis ToolKit in C++ (STK)</TITLE> <TITLE>The Synthesis ToolKit in C++ (STK)</TITLE>
<LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css"> <LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css">
</HEAD> </HEAD>
<BODY BGCOLOR="#FFFFFF"> <BODY BGCOLOR="#FFFFFF">
<CENTER> <CENTER>
<img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P> <img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P>
<a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER> <a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="links.html">Links</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER>
<HR> <HR>
<!-- Generated by Doxygen 1.2.8.1 --> <!-- Generated by Doxygen 1.2.8.1 -->
<h1>SubNoise.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************/</font> <h1>SubNoise.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************/</font>
@@ -38,12 +38,12 @@
00041 }; 00041 };
00042 00042
00043 <font class="preprocessor">#endif</font> 00043 <font class="preprocessor">#endif</font>
</font></pre></div><HR> </font></pre></div><HR>
<table> <table>
<tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr> <tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr>
<tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr> <tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr>
</table> </table>
</BODY> </BODY>
</HTML> </HTML>

View File

@@ -1,12 +1,12 @@
<HTML> <HTML>
<HEAD> <HEAD>
<TITLE>The Synthesis ToolKit in C++ (STK)</TITLE> <TITLE>The Synthesis ToolKit in C++ (STK)</TITLE>
<LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css"> <LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css">
</HEAD> </HEAD>
<BODY BGCOLOR="#FFFFFF"> <BODY BGCOLOR="#FFFFFF">
<CENTER> <CENTER>
<img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P> <img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P>
<a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER> <a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="links.html">Links</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER>
<HR> <HR>
<!-- Generated by Doxygen 1.2.8.1 --> <!-- Generated by Doxygen 1.2.8.1 -->
<h1>Table.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************/</font> <h1>Table.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************/</font>
@@ -41,12 +41,12 @@
00052 }; 00052 };
00053 00053
00054 <font class="preprocessor">#endif // defined(__TABLE_H)</font> 00054 <font class="preprocessor">#endif // defined(__TABLE_H)</font>
</font></pre></div><HR> </font></pre></div><HR>
<table> <table>
<tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr> <tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr>
<tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr> <tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr>
</table> </table>
</BODY> </BODY>
</HTML> </HTML>

View File

@@ -1,12 +1,12 @@
<HTML> <HTML>
<HEAD> <HEAD>
<TITLE>The Synthesis ToolKit in C++ (STK)</TITLE> <TITLE>The Synthesis ToolKit in C++ (STK)</TITLE>
<LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css"> <LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css">
</HEAD> </HEAD>
<BODY BGCOLOR="#FFFFFF"> <BODY BGCOLOR="#FFFFFF">
<CENTER> <CENTER>
<img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P> <img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P>
<a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER> <a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="links.html">Links</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER>
<HR> <HR>
<!-- Generated by Doxygen 1.2.8.1 --> <!-- Generated by Doxygen 1.2.8.1 -->
<h1>TcpWvIn.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************/</font> <h1>TcpWvIn.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************/</font>
@@ -80,12 +80,12 @@
00111 }; 00111 };
00112 00112
00113 <font class="preprocessor">#endif</font> 00113 <font class="preprocessor">#endif</font>
</font></pre></div><HR> </font></pre></div><HR>
<table> <table>
<tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr> <tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr>
<tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr> <tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr>
</table> </table>
</BODY> </BODY>
</HTML> </HTML>

View File

@@ -1,12 +1,12 @@
<HTML> <HTML>
<HEAD> <HEAD>
<TITLE>The Synthesis ToolKit in C++ (STK)</TITLE> <TITLE>The Synthesis ToolKit in C++ (STK)</TITLE>
<LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css"> <LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css">
</HEAD> </HEAD>
<BODY BGCOLOR="#FFFFFF"> <BODY BGCOLOR="#FFFFFF">
<CENTER> <CENTER>
<img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P> <img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P>
<a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER> <a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="links.html">Links</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER>
<HR> <HR>
<!-- Generated by Doxygen 1.2.8.1 --> <!-- Generated by Doxygen 1.2.8.1 -->
<h1>TcpWvOut.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************/</font> <h1>TcpWvOut.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************/</font>
@@ -58,12 +58,12 @@
00091 }; 00091 };
00092 00092
00093 <font class="preprocessor">#endif // defined(__TCPWVOUT_H)</font> 00093 <font class="preprocessor">#endif // defined(__TCPWVOUT_H)</font>
</font></pre></div><HR> </font></pre></div><HR>
<table> <table>
<tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr> <tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr>
<tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr> <tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr>
</table> </table>
</BODY> </BODY>
</HTML> </HTML>

View File

@@ -1,12 +1,12 @@
<HTML> <HTML>
<HEAD> <HEAD>
<TITLE>The Synthesis ToolKit in C++ (STK)</TITLE> <TITLE>The Synthesis ToolKit in C++ (STK)</TITLE>
<LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css"> <LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css">
</HEAD> </HEAD>
<BODY BGCOLOR="#FFFFFF"> <BODY BGCOLOR="#FFFFFF">
<CENTER> <CENTER>
<img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P> <img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P>
<a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER> <a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="links.html">Links</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER>
<HR> <HR>
<!-- Generated by Doxygen 1.2.8.1 --> <!-- Generated by Doxygen 1.2.8.1 -->
<h1>Thread.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************/</font> <h1>Thread.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************/</font>
@@ -17,7 +17,7 @@
00016 <font class="preprocessor"></font> 00016 <font class="preprocessor"></font>
00017 <font class="preprocessor">#include "Stk.h"</font> 00017 <font class="preprocessor">#include "Stk.h"</font>
00018 00018
00019 <font class="preprocessor">#if (defined(__OS_IRIX__) || defined(__OS_LINUX__))</font> 00019 <font class="preprocessor">#if (defined(__OS_IRIX__) || defined(__OS_LINUX__) || defined(__OS_MACOSX__))</font>
00020 <font class="preprocessor"></font> 00020 <font class="preprocessor"></font>
00021 <font class="preprocessor"> #include &lt;pthread.h&gt;</font> 00021 <font class="preprocessor"> #include &lt;pthread.h&gt;</font>
00022 <font class="preprocessor"> #define THREAD_TYPE</font> 00022 <font class="preprocessor"> #define THREAD_TYPE</font>
@@ -77,12 +77,12 @@
00093 }; 00093 };
00094 00094
00095 <font class="preprocessor">#endif // defined(__THREAD_H)</font> 00095 <font class="preprocessor">#endif // defined(__THREAD_H)</font>
</font></pre></div><HR> </font></pre></div><HR>
<table> <table>
<tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr> <tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr>
<tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr> <tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr>
</table> </table>
</BODY> </BODY>
</HTML> </HTML>

View File

@@ -1,12 +1,12 @@
<HTML> <HTML>
<HEAD> <HEAD>
<TITLE>The Synthesis ToolKit in C++ (STK)</TITLE> <TITLE>The Synthesis ToolKit in C++ (STK)</TITLE>
<LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css"> <LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css">
</HEAD> </HEAD>
<BODY BGCOLOR="#FFFFFF"> <BODY BGCOLOR="#FFFFFF">
<CENTER> <CENTER>
<img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P> <img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P>
<a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER> <a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="links.html">Links</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER>
<HR> <HR>
<!-- Generated by Doxygen 1.2.8.1 --> <!-- Generated by Doxygen 1.2.8.1 -->
<h1>TubeBell.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************/</font> <h1>TubeBell.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************/</font>
@@ -30,12 +30,12 @@
00052 }; 00052 };
00053 00053
00054 <font class="preprocessor">#endif</font> 00054 <font class="preprocessor">#endif</font>
</font></pre></div><HR> </font></pre></div><HR>
<table> <table>
<tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr> <tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr>
<tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr> <tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr>
</table> </table>
</BODY> </BODY>
</HTML> </HTML>

View File

@@ -1,12 +1,12 @@
<HTML> <HTML>
<HEAD> <HEAD>
<TITLE>The Synthesis ToolKit in C++ (STK)</TITLE> <TITLE>The Synthesis ToolKit in C++ (STK)</TITLE>
<LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css"> <LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css">
</HEAD> </HEAD>
<BODY BGCOLOR="#FFFFFF"> <BODY BGCOLOR="#FFFFFF">
<CENTER> <CENTER>
<img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P> <img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P>
<a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER> <a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="links.html">Links</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER>
<HR> <HR>
<!-- Generated by Doxygen 1.2.8.1 --> <!-- Generated by Doxygen 1.2.8.1 -->
<h1>TwoPole.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************/</font> <h1>TwoPole.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************/</font>
@@ -49,12 +49,12 @@
00076 }; 00076 };
00077 00077
00078 <font class="preprocessor">#endif</font> 00078 <font class="preprocessor">#endif</font>
</font></pre></div><HR> </font></pre></div><HR>
<table> <table>
<tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr> <tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr>
<tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr> <tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr>
</table> </table>
</BODY> </BODY>
</HTML> </HTML>

View File

@@ -1,12 +1,12 @@
<HTML> <HTML>
<HEAD> <HEAD>
<TITLE>The Synthesis ToolKit in C++ (STK)</TITLE> <TITLE>The Synthesis ToolKit in C++ (STK)</TITLE>
<LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css"> <LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css">
</HEAD> </HEAD>
<BODY BGCOLOR="#FFFFFF"> <BODY BGCOLOR="#FFFFFF">
<CENTER> <CENTER>
<img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P> <img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P>
<a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER> <a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="links.html">Links</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER>
<HR> <HR>
<!-- Generated by Doxygen 1.2.8.1 --> <!-- Generated by Doxygen 1.2.8.1 -->
<h1>TwoZero.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************/</font> <h1>TwoZero.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************/</font>
@@ -48,12 +48,12 @@
00072 }; 00072 };
00073 00073
00074 <font class="preprocessor">#endif</font> 00074 <font class="preprocessor">#endif</font>
</font></pre></div><HR> </font></pre></div><HR>
<table> <table>
<tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr> <tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr>
<tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr> <tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr>
</table> </table>
</BODY> </BODY>
</HTML> </HTML>

View File

@@ -0,0 +1,56 @@
<HTML>
<HEAD>
<TITLE>The Synthesis ToolKit in C++ (STK)</TITLE>
<LINK HREF="doxygen.css" REL="stylesheet" TYPE="text/css">
</HEAD>
<BODY BGCOLOR="#FFFFFF">
<CENTER>
<img src="princeton.gif"> &nbsp; <img src="ccrma.gif"><P>
<a class="qindex" href="index.html">Home</a> &nbsp; <a class="qindex" href="information.html">Information</a> &nbsp; <a class="qindex" href="classes.html">Classes</a> &nbsp; <a class="qindex" href="download.html">Download</a> &nbsp; <a class="qindex" href="usage.html">Usage</a> &nbsp; <a class="qindex" href="maillist.html">Mail List</a> &nbsp; <a class="qindex" href="system.html">Requirements</a> &nbsp; <a class="qindex" href="links.html">Links</a> &nbsp; <a class="qindex" href="tutorial.html">Tutorial</a></CENTER>
<HR>
<!-- Generated by Doxygen 1.2.8.1 -->
<h1>Vector3D.h</h1><div class="fragment"><pre>00001 <font class="comment">/***************************************************/</font>
00009 <font class="comment">/***************************************************/</font>
00010
00011 <font class="preprocessor">#if !defined(__VECTOR3D_H)</font>
00012 <font class="preprocessor"></font><font class="preprocessor">#define __VECTOR3D_H</font>
00013 <font class="preprocessor"></font>
00014 <font class="keyword">class </font><a class="code" href="classVector3D.html">Vector3D</a> {
00015
00016 <font class="keyword">public</font>:
00018 <a class="code" href="classVector3D.html#a0">Vector3D</a>(<font class="keywordtype">double</font> initX=0.0, <font class="keywordtype">double</font> initY=0.0, <font class="keywordtype">double</font> initZ=0.0);
00019
00021 <a class="code" href="classVector3D.html#a1">~Vector3D</a>();
00022
00024 <font class="keywordtype">double</font> <a class="code" href="classVector3D.html#a2">getX</a>();
00025
00027 <font class="keywordtype">double</font> <a class="code" href="classVector3D.html#a3">getY</a>();
00028
00030 <font class="keywordtype">double</font> <a class="code" href="classVector3D.html#a4">getZ</a>();
00031
00033 <font class="keywordtype">double</font> <a class="code" href="classVector3D.html#a5">getLength</a>();
00034
00036 <font class="keywordtype">void</font> <a class="code" href="classVector3D.html#a6">setXYZ</a>(<font class="keywordtype">double</font> anX, <font class="keywordtype">double</font> aY, <font class="keywordtype">double</font> aZ);
00037
00039 <font class="keywordtype">void</font> <a class="code" href="classVector3D.html#a7">setX</a>(<font class="keywordtype">double</font> aval);
00040
00042 <font class="keywordtype">void</font> <a class="code" href="classVector3D.html#a8">setY</a>(<font class="keywordtype">double</font> aval);
00043
00045 <font class="keywordtype">void</font> <a class="code" href="classVector3D.html#a9">setZ</a>(<font class="keywordtype">double</font> aval);
00046
00047 <font class="keyword">protected</font>:
00048 <font class="keywordtype">double</font> myX;
00049 <font class="keywordtype">double</font> myY;
00050 <font class="keywordtype">double</font> myZ;
00051 };
00052
00053 <font class="preprocessor">#endif</font>
</font></pre></div><HR>
<table>
<tr><td><A HREF="http://www-ccrma.stanford.edu/software/stk/"><I>The Synthesis ToolKit in C++ (STK)</I></A></td></tr>
<tr><td>&copy;1995-2002 Perry R. Cook and Gary P. Scavone. All Rights Reserved.</td></tr>
</table>
</BODY>
</HTML>

Some files were not shown because too many files have changed in this diff Show More