Code Libraries

March 1, 2026 ยท View on GitHub

A list of useful libraries for audio software.

DSP Libraries

A list of ready-made libraries for DSP. These can be a great resource for learning about various DSP algorithms and how they are implemented in code.

Please note, while using ready-made libraries can definitely help you achieve faster results, if you're serious about learning DSP then I don't recommend depending on them in the long term. Not only because it may be considered "cheat-y" by some, but the generic nature of these libraries makes it harder to experiment with adding your own tweaks and optimizations to give your plugins their own unique "character". DSP that is purpose-built for a single purpose will generally both sound better and perform better than a generic library that tries to cover all bases.

Also beware that some of these libraries have licenses attached to them, so make sure you are legally allowed to use them in your products.

  • Bad Circuit Modeling - Contains analogue models of non-ideal circuits.
  • CamillaDSP v2.0 - A tool to create audio processing pipelines for applications such as active crossovers or room correction.
  • chowdsp_wdf - A header only C++ library for implementing real-time Wave Digital Filter (WDF) circuit models.
  • DaisySP - A C++ DSP library that provides a comprehensive collection of modular components.
  • DSP Filters by vinniefalco - A collection of C++ classes for DSP.
  • DSP filters in C++ by dimtass - A collection of DSP biquad filters.
  • Firewheel DSP - A small collection of DSP I use in my Firewheel library, written in Rust.
  • FunDSP - A Rust DSP crate with a unique and fun syntax.
  • HexoDSP - A comprehensive modular DSP and audio graph library also used by the HexoSynth synthesizer plugin.
  • juce_dsp - A set of DSP classes that are included with the JUCE library. There is also an introductory tutorial on using these libraries (as well as JUCE in general).
  • KFR - A collection of very fast DSP algorithms. Commercial use requires a paid license.
  • Maximilian - A comprehensive collection of DSP algorithms in C++. Also contains Javascript bindings.
  • Meadowlark Audio Filters - An incomplete collection of audio filters that was once planned for use within the internal plugins for my own Meadowlark project. Although because I don't really condone generic DSP libraries, my plugins will probably not actually reference this library. Rather I just keep this repository around as a reference.
  • mi-plaits-dsp - Native Rust port of the DSP code used by the Mutable Instruments Plaits Eurorack module.
  • Moog Ladder Filters - Contains different digital implementations of the classic 4-pole, 24 dB/octave analog filter.
  • Q - A DSP library that leverages features of modern C++.
  • Signalsmith's IIR Hilbert - A high quality, public domain filter in a single-header C++ file.
  • signalo - A Rust DSP toolbox with focus on embedded environments.
  • SOUL-VA - A collection of virtual analog audio effects for the SOUL programming language.
  • Soundpipe - A lightweight music DSP library written in C.
  • SST Filters, SST Waveshapers, SST Oscillators, SST Effects, SST Basic Blocks - Various DSP algorithms used by the Surge Synthesizer Team
  • synfx-dsp - A comprehensive DSP library in Rust, used by the HexoSynth synthesizer plugin.
  • valib - A Rust library of reusable blocks for musical DSP.

Development Aides

Rust

C++

  • Catch2 - A modern unit testing and benchmarking framework for C++
  • RealtimeSanitizer - A realtime safety testing tool.
  • ResEmbed - A handy CMake/C++20 library for embedding binary files directly into your executables and libraries at compile time.
  • sst-ccputiles - C++ utilities used by the Surge XT synthesizer team.
  • sst-basic-blocks - (GPL-3.0 license) - Base level utility classes for things like parameters, block operations, sse helpers, base level dsp, and more. Made by the Surge XT synthesizer team.

Realtime-safe Synchronization and Memory Management

Rust

  • atomic_float - A crate that adds floating-point atomic types.
  • basedrop - A set of memory management tools for real-time audio and other latency-critical scenarios. It contains a garbage collector which collects resources dropped on a realtime thread and safely deallocates them on another thread, as well as some state synchronization primitives.
  • crossbeam-queue::ArrayQueue - A lock-free MPMC queue.
  • fixed-resample - My own crate for sharing samples between audio streams. It also handles resampling.
  • ringbuf - A lock-free SPSC queue.
  • rtgc - My own simple garbage collector which collects resources dropped on a realtime thread and safely deallocates them on another thread. It also contains optional triple buffer types for syncing data without the need for a message channel. It's not as performant as some of the other options, but it is implemented using as little unsafe code as possible.
  • rtrb - Another lock-free SPSC queue.
  • rt-write-lock - Used to sync data from a realtime thread to a non-realtime one. It works in a similar fasion to to a triple buffer, except that it is more performant and uses less memory.
  • simple-left-right - Used to sync data from a non-realtime thread to a realtime one. It works in a similar fasion to to a triple buffer, except that it is more performant and uses less memory.
  • triple_buffer - A good triple buffer crate.

C++

SPSC queues are faster than MPMC queues, so prefer to use them if your algorithm doesn't need multiple producers or consumers.

Portable SIMD Libraries

Rust

C++

Cross-platform System Audio I/O

  • CPAL
    • Rust only
    • Graceful error handling *
    • Linux, Mac, Windows, iOS, Android, and Emscripten (WebAssembly)
    • Apache 2.0 license
  • JUCE
    • C++ only
    • Native duplex audio support
    • Graceful error handling *
    • Linux, Mac, Windows, iOS, and Android
    • GPLv3 license if your application is GPLv3, otherwise requires a paid license
  • Interflow
    • Rust only
    • Native duplex audio support
    • Linux, Mac, and Windows
    • Some backends and features are still a work in progress
    • MIT license
  • libsoundio
    • C, C++, and Rust (unsafe bindings via soundio-sys)
    • Graceful error handling *
    • Linux, Mac, and Windows
    • MIT license
  • PortAudio
    • C, C++, Go, Rust (via weresocool_portaudio), and Python (via PyAudio)
    • Native duplex audio support
    • Linux, Mac, and Windows
    • MIT license
  • RtAudio
    • C++, C, Go, Python, and Rust (via rtaudio-rs)
    • Native duplex audio support
    • Graceful error handling *
    • Linux, Mac, and Windows
    • MIT license

* By "graceful error handling", I mean the ability to gracefully deal with any errors encountered while the audio stream is running (i.e. a device was unplugged).

Cross-platform System MIDI I/O

File Decoding/Encoding

Miscellaneous

  • aubio - A library that can detect events in an audio signal.
  • CHOC - A random grab-bag of header-only, dependency-free, liberally-licensed C++ classes.
  • Firewheel - My own audio graph engine / audio middleware solution for games and other applications.

TODO - Sort DSP libraries by programming language TODO - List all of the licenses for each of the listed libraries