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.
nice!!!
STK: audio signal processing and algorithmic synthesis classes. RtAudio license (based on MIT)
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.
Could cabbage be used in modules?
Sleef: Vectorized math functions. BSL
FastNoise: noise generation library with a large collection of different noise algorithms. MIT
FastNoise SIMD: MIT
DDSP: Differentiable Digital Signal Processing (Tensor Flow) Apache-2.0
@Vortico said on facebook “I remember seeing this a while ago but wasn’t sure if it was real-time. The bad news is that Tensor Flow isn’t a good platform to include in a Rack plugin due to its complexity.”
libopenmpt: library form of OpenMPT tracker for Windows. Not sure if it’s cross-platform, but if not, the sound engine shouldn’t be too hard to port. 3-Clause BSD
Interesting! Would it be possible for this to allow playback of files in a glfw window?
On windows you can enable the media player for playing samples that will be loaded in Rack but it is not very user friendly. I’ll submit a feature request if this would be possible with or without!
I’d guess that libopenmpt refers to OpenMPT’s sound engine, not its GUI. It’s similar to libpd vs. PureData.
RNNoise: Recurrent neural network for audio noise reduction. BSD
aubio: “aubio is a library to label music and sounds. It listens to audio signals and attempts to detect events. For instance, when a drum is hit, at which frequency is a note, or at what tempo is a rhythmic melody.” GPL-3.0
bliss: computes distance between songs. MIT
VoiceCodec: a collection of voice codec algorithms, such as Linear Predictive Coding. Various licenses, check each one for specifics.
Mutable Instruments Ambika: Analog synthesizer with digital drum machine. GPLv3
Mutable Instruments Shruthi: hybrid analog/digital monosynth. GPLv3
OpenCV: library of programming functions mainly aimed at real-time computer vision. BSD
DaisySP: DSP Library for the Daisy product family…and elsewhere. MIT