Open-source DSP libraries

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.

19 Likes

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

7 Likes

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

4 Likes

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.

6 Likes

nice!!!

1 Like

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.

6 Likes

Could cabbage be used in modules?

1 Like

https://cabbageaudio.com/docs/exporting_rack_modules/

3 Likes

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

1 Like

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

4 Likes

DaisySP: DSP Library for the Daisy product family…and elsewhere. MIT