mirror of
https://github.com/thestk/stk
synced 2026-01-11 12:01:52 +00:00
181 lines
9.0 KiB
Plaintext
181 lines
9.0 KiB
Plaintext
STK: A ToolKit of Audio Synthesis Classes and Instruments in C++
|
|
|
|
By Perry R. Cook and Gary P. Scavone, 1995--2023.
|
|
|
|
STK Classes - See the HTML documentation in the html directory for complete information.
|
|
|
|
|
|
.- Generator - (Modulate, Noise, SingWave, Envelope, ADSR, Asymp, SineWave, Blit, BlitSaw, BlitSquare, Granulate)
|
|
|
|
|
|- Function - (BowTable, JetTable, ReedTable)
|
|
|
|
|
|- FileRead, FileWrite
|
|
|
|
|
|- WvIn - (FileWvIn, RtWvIn, InetWvIn)
|
|
| |
|
|
| FileLoop
|
|
|
|
|
|- WvOut - (FileWvOut, RtWvOut, TcpWvOut)
|
|
|
|
|
|- Filter - (OnePole, OneZero, TwoPole, TwoZero, PoleZero, Biquad, FormSwep, Delay, DelayL, DelayA, TapDelay)
|
|
|
|
|
|- RtAudio, RtMidi, Socket, Thread, Mutex
|
|
| |
|
|
Stk -| UdpSocket
|
|
| TcpServer
|
|
| TcpClient
|
|
|
|
|
|- StkFrames
|
|
|
|
|
|- Effect - (Echo, Chorus, PitShift, LentPitShift, PRCRev, JCRev, NRev, FreeVerb)
|
|
|
|
|
|- Voicer, Message, Skini, MidiFileIn, Phonemes, Sphere, Vector3D
|
|
|
|
|
|- Messager
|
|
|
|
|
|- Twang, Guitar
|
|
|
|
|
| .- FM - (HevyMetl, PercFlut, Rhodey, Wurley, TubeBell, BeeThree, FMVoices)
|
|
| |
|
|
| |- Modal - ModalBar
|
|
| |
|
|
| |- VoicForm
|
|
| |
|
|
| |- Sampler - Moog
|
|
| |
|
|
| |- Resonate
|
|
| |
|
|
| |- Mandolin
|
|
.- Instrmnt -|
|
|
|- Drummer
|
|
|
|
|
|- Clarinet, BlowHole, Saxofony, Flute, Brass, BlowBotl, Bowed, Plucked, StifKarp, Sitar, Recorder
|
|
|
|
|
|- Shakers
|
|
|
|
|
|- BandedWG
|
|
|
|
|
|- Mesh2D
|
|
|
|
|
.- Whistle
|
|
|
|
|
|
*********** UNIT GENERATORS **************
|
|
|
|
Master Class: Stk.cpp Sample rate, byte-swapping, error handling functionality
|
|
|
|
Sources: Generator.h Abstract base class for various source signal classes
|
|
Function.h Abstract base class for various input/output mapping classes
|
|
Envelope.cpp Linearly goes to target by rate
|
|
ADSR.cpp ADSR envelope
|
|
Asymp.cpp Exponentially approaches target
|
|
Noise.cpp Random number generator
|
|
SineWave.cpp Sinusoidal oscillator with internally computed static table
|
|
Blit.cpp Bandlimited impulse train
|
|
BlitSaw.cpp Bandlimited sawtooth generator
|
|
BlitSquare.cpp Bandlimited square wave generator
|
|
Granulate.cpp Granular synthesis class that processes a monophonic audio file
|
|
FileRead.cpp Audio file input class (no internal data storage) for RAW, WAV, SND (AU), AIFF, MAT-file files
|
|
WvIn.h Abstract base class for audio data input classes
|
|
FileWvIn.cpp Audio file input interface class with interpolation
|
|
FileLoop.cpp Wavetable looping (subclass of FileWvIn)
|
|
RtWvIn.cpp Realtime audio input class (subclass of WvIn)
|
|
InetWvIn.cpp Audio streaming (socket server) input class (subclass of WvIn)
|
|
|
|
Sinks: FileWrite.cpp Audio file output class (no internal data storage) for RAW, WAV, SND (AU), AIFF, MAT-file files
|
|
WvOut.h Abstract base class for audio data output classes
|
|
FileWvOut.cpp Audio file output interface class to FileWrite
|
|
RtWvOut.cpp Realtime audio output class (subclass of WvOut)
|
|
InetWvOut.cpp Audio streaming (socket client) output class (subclass of WvOut)
|
|
|
|
Filters: Filter.h Filter master class
|
|
Iir.h General infinite-impulse response filter
|
|
Fir.h General finite-impulse response filter
|
|
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
|
|
DelayA.cpp Allpass interpolating delay line
|
|
TapDelay.cpp Multi-tap non-interpolating delay line class
|
|
|
|
Non-Linear: JetTabl.h Cubic jet non-linearity
|
|
BowTabl.h x^(-3) Bow non-linearity
|
|
ReedTabl.h One breakpoint saturating reed non-linearity
|
|
|
|
Derived: Modulate.cpp Periodic and random vibrato: WvIn, Noise, OnePole
|
|
SingWave.cpp Looping wave table with randomness: Modulate, FileLoop, 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
|
|
Twang.cpp Not So Basic Pluck DelayL, DlineA, Fir, allows commuted synthesis
|
|
Mandolin.cpp Commuted Mandolin 2 Twangs
|
|
Guitar.cpp N-String Guitar N Twangs, bridge coupling, allows feedback and body filter
|
|
StifKarp.cpp Plucked String with Stiffness DelayA, DelayL, OneZero, BiQuad, Noise
|
|
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
|
|
Recorder.cpp A More Physical Flute DelayL, IIR, Noise, ADSR, SineWave
|
|
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.h 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
|
|
FreeVerb.cpp Jezar at Dreampoint's FreeVerb 4 allpass, 8 lowpass comb filters
|
|
Flanger.cpp Flanger Effects Processor DelayL, WaveLoop
|
|
Chorus.cpp Chorus Effects Processor DelayL, WaveLoop
|
|
PitShift.cpp Cheap Pitch Shifter DelayL
|
|
LentPitShift.cpp Pitch Shifter based Lent Algorithm
|
|
|
|
|
|
*********** 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
|
|
SKINImsg.h #defines for often used and universal MIDI/SKINI symbols
|
|
SKINItbl.h Table of SKINI messages
|
|
|
|
|