Stk Library May 2026
int main() { Plucked pluck(440.0); // A4 note pluck.noteOn(0.7); // 70% amplitude
STK is the blueprint, the toolbox, and the teacher, all rolled into one elegant C++ library. It is, and will remain, a classic. stk library
RtAudio dac; RtAudio::StreamParameters params; params.deviceId = dac.getDefaultOutputDevice(); params.nChannels = 2; int main() { Plucked pluck(440
// Let it ring for 2 seconds sleep(2); pluck.noteOff(0.1); // Release with 0.1s decay sleep(1); dac.stopStream(); return 0; } Created by Perry R
Introduction: The Pedagogical Powerhouse In the vast ecosystem of audio programming libraries—ranging from the industrial-grade JUCE to the data-scientific Librosa—the Synthesis ToolKit (STK) holds a unique and revered position. Created by Perry R. Cook and Gary P. Scavone at Princeton University and Stanford University's CCRMA (Center for Computer Research in Music and Acoustics), STK is not merely a utility; it is an interactive textbook written in C++.
#include "Plucked.h" #include "RtAudio.h" #include <iostream> // Audio callback function int tick(void *outputBuffer, void *inputBuffer, unsigned int nBufferFrames, double streamTime, RtAudioStreamStatus status, void *userData) { Plucked *pluck = (Plucked *)userData; double *out = (double *)outputBuffer; for (unsigned int i = 0; i < nBufferFrames; i++) { *out++ = pluck->tick(); // Left channel *out++ = pluck->tick(); // Right channel } return 0; }