STK: A ToolKit of Audio Synthesis Classes and Instruments in C++

By Perry R. Cook and Gary P. Scavone, 1995-2004.

STK Classes - See the HTML documentation in the html directory for complete information.


     .- Generator - (Modulate, Noise, SingWave, Envelope)
     |                           |                 |
     |                        SubNoise            ADSR
     |                                            Asymp
     |
     |- Function - (Table, BowTable, JetTable, ReedTable)
     |
     |- WvIn - (WaveLoop, RtWvIn, TcpWvIn)
     |
     |- WvOut - (RtWvOut, TcpWvOut)
     |
     |- Filter - (OnePole, OneZero, Delay, TwoPole, TwoZero, PoleZero, Biquad)
     |                                |                                  |
     |                              DelayL                             FormSwep
     |                              DelayA
     |
     |- RtAudio, RtMidi, RtDuplex, Socket, Thread, Mutex
Stk -|
     |- Effect - (Echo, Chorus, PitShift, PRCRev, JCRev, NRev)
     |
     |- Voicer, Message, Skini, MidiFileIn, Phonemes, Sphere, Vector3D
     |
     |- Messager
     |
     |            .- FM - (HevyMetl, PercFlut, Rhodey, Wurley, TubeBell, BeeThree, FMVoices)
     |            |
     |            |- Modal - ModalBar
     |            |
     |            |- VoicForm
     |            |
     |            |- Sampler - Moog
     |            |
     |            |- Resonate
     |            |
     |            |- PluckedTwo - Mandolin
     .- Instrmnt -|
                  |- Drummer
                  |
                  |- Clarinet, BlowHole, Saxofony, Flute, Brass, BlowBotl, Bowed, Plucked, StifKarp, Sitar
                  |
                  |- Shakers
                  |
                  |- BandedWG
                  |
                  |- Mesh2D
                  |
                  .- Whistle


***********   UNIT GENERATORS   **************

Master Class:  Stk.cpp         Sample rate, byte-swapping, error handling functionality

Sources:       Generator.cpp   Abstract Base Class for Various Source Signal Classes
               Function.cpp    Abstract Base Class for Various Input/Output Mapping Classes
               Envelope.cpp    Linearly Goes to Target by Rate
               ADSR.cpp        ADSR Flavor of Envelope
               Asymp.cpp       Exponentially Approaches Target
               Noise.cpp       Random Number Generator
               SubNoise.cpp    Random Numbers each N samples
               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
               WaveLoop.cpp    Wavetable looping (subclass of WvIn)
               RtWvIn.cpp      Realtime Audio Input Class (subclass of WvIn)
               TcpWvIn.cpp     Audio Streaming (socket server) Input Class (subclass of WvIn)

Sinks:         WvOut.cpp       Output Master Class for RAW, WAV, SND (AU), AIFF, MAT-file files
               RtWvOut.cpp     Realtime Audio Output Class (subclass of WvOut)
               TcpWvOut.cpp    Audio Streaming (socket client) Output Class (subclass of WvOut)

Duplex:        RtDuplex.cpp    Synchronous Realtime Audio Input/Output Class

Filters:       Filter.cpp      Filter Master Class
               OneZero.cpp     One Zero Filter
               OnePole.cpp     One Pole Filter
               PoleZero.cpp    One Pole/One Zero Filter
               TwoZero.cpp     Two Zero Filter
               TwoPole.cpp     Two Pole Filter
               BiQuad.cpp      Two Pole/Two Zero Filter
               FormSwep.cpp    Sweepable BiQuad Filter (goes to target by rate)
               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)

Non-Linear:    JetTabl.cpp     Cubic Jet Non-Linearity
               BowTabl.cpp     x^(-3) Bow Non-Linearity
               ReedTabl.cpp    One Breakpoint Saturating Reed Non-Linearity
                                
Derived:       Modulate.cpp    Periodic and Random Vibrato: WvIn, SubNoise, OnePole
               SingWave.cpp    Looping wave table with randomness: Modulate, WaveLoop, Envelope


********** INSTRUMENTS AND ALGORITHMS **************

Each class is listed either with some of the unit generators it uses, 
or in terms of the algorithm it implements.  All inherit from Instrmnt,
which inherits from Stk.

Simple.cpp      Simple Instrument              Pulse oscillator + resonant filtered noise
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
Mandolin.cpp    Commuted Mandolin              <<flavor of PluckTwo>>
Bowed.cpp       So So Bowed String             DelayL, BowTabl, OnePole, BiQuad, WaveLoop, ADSR
Brass.cpp       Not So Bad Brass Instrument    DelayA, BiQuad, PoleZero, ADSR, WaveLoop
Clarinet.cpp    Pretty Good Clarinet           DelayL, ReedTabl, OneZero, Envelope, Noise, WaveLoop
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
Flute.cpp       Pretty Good Flute              JetTabl, DelayL, OnePole, PoleZero, Noise, ADSR, WaveLoop
BlowBotl.cpp    Blown Bottle                   JetTabl, BiQuad, PoleZero, Noise, ADSR, WaveLoop
BandedWG.cpp    Banded Waveguide Meta-Object   Delay, BowTabl, ADSR, BiQuad
Modal.cpp       N Resonances                   Envelope, WaveLoop, BiQuad, OnePole
ModalBar.cpp    Various presets                4 Resonance Models
FM.cpp          N Operator FM Master           ADSR, WaveLoop, TwoZero
HevyMetl.cpp    Distorted FM Synthesizer       3 Cascade with FB Modulator
PercFlut.cpp    Percussive Flute               3 Cascade Operators
Rhodey.cpp      Rhodes-Like Electric Piano     2 Parallel Simple FMs
Wurley.cpp      Wurlitzer Electric Piano       2 Parallel Simple FMs
TubeBell.cpp    Classic FM Bell                2 Parallel Simple FMs
FMVoices.cpp    3 Formant FM Voice             3 Carriers Share 1 Modulator
VoicForm.cpp    4 Formant Voice Synthesis      FormSwep, SingWave, OnePole, OneZero, Envelope, Noise
BeeThree.cpp    Cheezy Additive Organ          4 Oscillators Additive
Sampler.cpp     Sampling Synthesizer           5 each ADSR, WvIn, WaveLoop, OnePole
Moog.cpp        Swept Filter                   Sampler with Swept Filter
Resonate.cpp    Filtered Noise                 ADSR, BiQuad, Noise
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.
Whistle.cpp     Hybrid physical/spectral model of a police whistle.

Effect.cpp      Effects Processor Base Class
JCRev.cpp       Chowning Reverberator           3 series allpass units, 4 parallel combs, 2 stereo delays
NRev.cpp        Another famous CCRMA Reverb	    8 allpass, 6 parallel comb filters
PRCRev.cpp      Dirt Cheap Reverb by Cook	      2 allpass, 2 comb filters
Flanger.cpp     Flanger Effects Processor       DelayL, WaveLoop
Chorus.cpp      Chorus Effects Processor        DelayL, WaveLoop
PitShift.cpp    Cheap Pitch Shifter             DelayL


***********   OTHER SUPPORT CLASSES AND FILES   **************

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


