I often run into interesting free/open-source audio/DSP libraries on the internet that would be perfect for using in a new Rack plugin, but I either don’t have the time or am not yet interesting in pursuing a new project. So I’ll post them here with a short description in hopes of inspiring other developers. Feel free to do the same if you find neat libraries.
WORLD: A high-quality speech analysis, manipulation and synthesis system. Supposedly one of the highest-quality projects of its kind. Modified-BSD
dr_libs: Single-header FLAC, MP3 decoders, WAV encoder/decoder. Public domain
Open303: Roland TB-303 model. MIT
libpd: Embeddable PureData. Standard Improved BSD License
Soundpipe: Collection of DSP utilities/algorithms. MIT
Soundtouch: Time-stretching, pitch-shifting. LGPLv2.1
Rubber Band: Another time-stretching, pitch-shifting library. GPLv2+
minimp3: Another MP3 decoding library. CC0
sevagh/pitch-detection: Pitch-detection algorithms, YIN(-FFT), PYIN, MPM, PMPM, SWIPE’. MIT
OpenSFZ: SFZ player & SF2 (Sampler) based on SFZero. MIT
DR_Libs would be good to use anywhere a sample gets loaded. I’m looking through the source and not really seeing how the file dialog/wav file loading works, but it would be a shame if every plugin developer had to re-implement supporting multiple audio file types.
That Open303 code is from 2010 but builds pretty easily on my mac. I just built a dummy widget and have it making sound no problem. Parameters are clear as are note options. I’ll see if I can get it put together in a module in BaconMusic this summer (unless someone else wants to). You can see how far I got by pulling the ‘open303’ branch of https://github.com/baconpaul/BaconPlugs. I have the note playing (1v/oct, gate, vel) hookups, the output, and have both knob and cv controls for the waveshape mix and filter cutoff. Here’s a youtube of the alpha: https://www.youtube.com/watch?v=RT3RNOoe0v4&feature=youtu.be
Should be able to bang it out in July no prob. Neat library. Also cool idea for a thread.
Some (IMO) very nice code lurking in the classic Synthesis Toolkit, aka TheSTK
STK was designed to facilitate rapid development of music synthesis and audio processing software, with an emphasis on cross-platform functionality, realtime control, ease of use, and educational example code. The Synthesis ToolKit is extremely portable (it’s mostly platform-independent C and C++ code), and it’s completely user-extensible (all source included, no unusual libraries, and no hidden drivers). 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 20 years now. STK currently runs with realtime support (audio and MIDI) on 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.
I remember when sample rate woes stopped some delay modules from working earlier in VCV’s history, I was able to whip up a quite functional stand-in varispeed delay quite quickly using the delayline class in this lib, for example.