STK: A ToolKit of Audio Synthesis Classes and Instruments in C++ By Perry R. Cook and Gary P. Scavone, 1995-2002. STK Classes - See the HTML documentation in the html directory for complete information. .- Envelope - ADSR | |- Noise - SubNoise | |- Table | |- WvIn - (WaveLoop, RtWvIn, TcpWvIn) | |- WvOut - (RtWvOut, TcpWvOut) | |- Filter - (OnePole, OneZero, Delay, TwoPole, TwoZero, PoleZero, Biquad) | | | | DelayL FormSwep | DelayA | |- Echo, Chorus, PitShift | |- RtAudio, RtMidi, Socket, Thread Stk -| |- Reverb - (PRCRev, JCRev, NRev) | |- Modulate | |- SingWave | |- Voicer | |- Messager | |- SKINI | |- ReedTabl, JetTabl, BowTabl | | .- 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: Envelope.cpp Linearly Goes to Target by Rate ADSR.cpp ADSR Flavor of Envelope 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 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: RawWvIn, SubNoise, OnePole SingWave.cpp Looping wave table with randomness: Modulate, WaveLoop, Envelope ********** INSTRUMENTS AND ALGORITHMS ************** Each Class will be listed either with all the unit generators it uses, or the <> of which it is a flavor. 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 <> 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. Reverb.cpp Reverberator Effects Processor Master Class for reverberators 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