/awesome-audio-plugin-framework

Curated list of small C/C++ libraries for building your own custom audio plugin framework.

Primary LanguageCMake

Awesome Audio Plugin Framework

Curated list of small C/C++ libraries for building your own custom audio plugin framework.

Small libraries usually follow the Unix philosophy, making them more maintainable, replaceable, and flexible in how they are used. Frameworks, by definition, break this philosophy.

This lists aims to support Windows, MacOS, and usually Linux. iOS, Android and Emscripten are not actively supported.

Licensing

Any license labelled Dual or Multi usually defaults to a kind of GPL but with a conditional alternative. Sometimes it requires a fee, sometimes it's due to a dependancy, which may be replaceable. Visit their repos and websites to learn about exact conditions.

C

Function Name License Description
Window Pugl ISC Native window with mouse & keyboard callbacks. Made with plugins in mind
Window sokol zlib Native window with mouse & keyboard callbacks. Made with games in mind. See: sokol_app.h.
VST3 vst3_c_api Dual VST3 wrapper
CLAP clap MIT CLAP wrapper
Threads tinycthread BSD like C11 threads.h like API, cross platform wrapper
File stream sokol zlib Read & write stream for local files. See sokol_fetch.h
Log sokol zlib Log to console or file. See sokol_log.h
Log stb MIT Fast log to console. See stb_sprintf.h
Audio thread sokol zlib Spins up an audio thread with buffer to write to. See sokol_audio.h
Audio IO libsoundio MIT Wrapper for CoreAudio, WASAPI + more
HTTPS curl BSD like Makes HTTPS requests
TLS cute_headers Unlicense HTTPS request. Lacks any parsing of responses. See cute_tls.h
HTTP parsing picohttpparser MIT Parses HTTP1 requests & responses
Time sokol zlib Get & parse high resolution time. See sokol_time.h
Image codecs stb MIT Load/decode many image formats. See stb_image.h, stb_image_resize.h, stb_image_write.h
Data containers stb MIT Variable type dynamic arrays and hash maps. See stb_ds.h
Strings sds BSD-2 Dyanamic size strings with manipulation and formatting methods.
JSON zzzJSON BSD like Fast JSON encode/decode. Repo has benchmarks and links to alternatives
Crypto TweetNaCl Unkown HMAC hashing, Public/Secret key encryption and signatures
Vector graphics NanoVG zlib Antialised 2D polygons, lines, text, gradients and images. Backends for OpenGL, Metal, and DirectX 11. Usefull repo
Regex TRE BSD like Regex pattern matching. Great name
Regex PCRE2 Dual Regex pattern matching
Regex tiny-regex-c Unlicense Regex pattern matching
File/folder window osdialog CC0 Native select file/folder dialogue boxes, alerts, colour picker & more
File/folder window tinyfiledialogs zlib Native select file/folder dialogue boxes, alerts, colour picker & more
Binary embed bin2c Apache 2 CLI. Turns single file (eg. font, image) into .c containg const char[].
Binary embed c-embed MIT CLI. Turns multiple files (eg. font, image) into single .o. Access in code using virtual file system

C++

Function Name License Description
Window CrossWindow zlib Native window with mouse & keyboard callbacks.
VST3 vst3_public_sdk Dual VST3 wrapper
AU vst3_public_sdk Dual AU wrapper via a VST3 wrapper wrapper
AUv3 vst3_public_sdk Dual AUv3 wrapper via a VST3 wrapper wrapper
AAX vst3_public_sdk Dual AAX wrapper via a VST3 wrapper wrapper
VST3 clap-wrapper Multi VST3 wrapper via a CLAP wrapper
File read/write cppfs MIT Manage local, virtual and remote files
Audio codecs CHOC ISC Decode/encode WAV, FLAC, Ogg-Vorbis, decode only MP3.
MIDI parsing CHOC ISC Parse MIDI messages, MIDI sequences and MIDI files.
MIDI/Audio sync CHOC ISC Splits an audio block to match times of MIDI events
Log fast_io MIT <iostream> replacement with threadsafe options
FFT KFR Dual Really fast FFTs.
Lock free queue readerwriterqueue BSD Does queue. No lock
Timer thread CHOC ISC Timed callbacks
Machine ID machineid Apache 2 Generates a unique string based on users hardware
Base64 CHOC ISC Base64 string encode/decode
Regex hyperscan BSD3 Regex pattern matching
File/folder window Portable File Dialogs WTFPL Native select file/folder dialogue boxes

TODO

Things to add to the list:

  • File searching
  • Graphics engine agnostic customisable widgets
  • Identify hardware, available CPU instructions at runtime
  • Something else? (suggest more!)