Awesome Audio Plugin Framework

November 19, 2025 ยท View on GitHub

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.

See the Examples folder for code & build examples of these libraries.

See the Templates folder for ready to go, lightweight plugin templates.

The listed libraries and example code are generally biased towards:

  • Permissive non-GPL licensing
  • Support for Windows & MacOS. (Linux, iOS, Android and Emscripten are not actively supported!)
  • Ease of compilation, fast builds, small binaries, fewer LOCs, single compilation units, C89 & C99

C

FunctionNameLicenseDescription
Plugin wrapperCPLUGUnlicenseWrapper for VST3, AUv2, CLAP, standalone. Includes optional window lib for plugins
WindowPuglISCNative window with mouse & keyboard callbacks. Made with plugins in mind
WindowsokolzlibNative window with mouse & keyboard callbacks. Made with games in mind. See: sokol_app.h.
VST3vst3_c_apiDualVST3 wrapper
CLAPclapMITCLAP wrapper
Threadsthreads.hUnlicenseC11 like threads & atomics, mutexes, singals, single reader/writer queues, cross platform
ThreadstinycthreadBSD likeC11 threads.h like API, cross platform
Atomicsc89atomicUnlicenseC11 like atomic.h like API, supports flags, float, double and ptr, cross platform
WAVdr_libsUnlicenseWAV read & write. See dr_wav.h
AIFFdr_libsUnlicenseAIFF read & write. See dr_wav.h
MP3dr_libsUnlicenseMP3 read. See dr_mp3.h
FLACdr_libsUnlicenseFLAC read. See dr_flac.h
FLACFLACBSD-3FLAC encode / decode / read / write
OpusOpusBSD-3Opus encode / decode / read / write
LogsokolzlibLog to console or file. See sokol_log.h
LogstbMITFast log to console. See stb_sprintf.h
FFTpffftBSD like1D real & complex FFTs. Competitively fast. SSE & NEON optimised
Audio threadsokolzlibSpins up an audio thread with buffer to write to. See sokol_audio.h
Audio IOlibsoundioMITWrapper for CoreAudio, WASAPI + more
Vector graphicsNanoVGzlibAntialised 2D polygons, lines, text, gradients and images using OpenGL
Vector graphicsnanovg_compatzlibNanoVG wrapper with Metal & DirectX 11 backends and extra functions for initialising a context.
Text RenderingFreetype2FTLCPU rendering for most fonts for most devices.
Text ShapingkbzlibMultilingual text segmentation and shaping
MemoryxhlUnlicenseAllocators with leak detectors. See alloc.h
MathsxhlDualFast maths approximations. See maths.h
TimexhlUnlicenseHigh res time, get OS time as unix timestamp, performance profiling tools. See time.h
TimesokolzlibGet & parse high resolution time. See sokol_time.h
Image codecsstbMITLoad/decode many image formats. See stb_image.h, stb_image_resize.h, stb_image_write.h
Data containersstbMITVariable type dynamic arrays and hash maps. See stb_ds.h
StringssdsBSD-2Dyanamic size strings with manipulation and formatting methods.
UTF8utf8Unlicensestdlib string.h, locale.h, ctype.h replacement functions for \0 terminated UTF8 strings
UTF8cute_headersUnlicenseUTF8 & UTF16 conversion functions. See cute_utf8.h
CryptoTweetNaClPDHMAC hashing, Public/Secret key encryption and signatures
Binary embedbin2cApache 2CLI. Turns single file (eg. font, image) into .c containg const char[].
File dialog boxosdialogCC0Native select file/folder dialogue boxes, alerts, colour picker & more
File dialog boxtinyfiledialogszlibNative select file/folder dialogue boxes, alerts, colour picker & more
File I/OxhlUnlicenseFile r/w/a, paths eg. Desktop/Documents, list dir & watch file change events. UTF8. files.h
File searchingcute_headersUnlicenseRecursive file & directory search. See cute_files.h
File streamsokolzlibRead & write stream for local files. See sokol_fetch.h
TLScute_headersUnlicenseHTTPS request. Lacks any parsing of responses. See cute_tls.h
HTTPScurlBSD likeMakes HTTPS requests
HTTP parsingpicohttpparserMITParses HTTP1 requests & responses
JSONyyJSONMIT2nd fastest JSON encode/decode. Parses all data upfront to create a searchable linked list.
JSONzzzJSONBSD likeFast JSON encode/decode. Uses on the fly parsing and string searching and string views.
Base64base64BSD-2Base64 string encode & decode
Regextiny-regex-cUnlicenseRegex pattern matching
RegexPCRE2DualRegex pattern matching
RegexTREBSD likeRegex pattern matching but with a greater name

C++

FunctionNameLicenseDescription
WindowCrossWindowzlibNative window with mouse & keyboard callbacks.
VST3vst3_public_sdkDualVST3 wrapper
AUvst3_public_sdkDualAU wrapper via a VST3 wrapper wrapper
AUv3vst3_public_sdkDualAUv3 wrapper via a VST3 wrapper wrapper
AAXvst3_public_sdkDualAAX wrapper via a VST3 wrapper wrapper
VST3clap-wrapperMultiVST3 wrapper via a CLAP wrapper
File read/writecppfsMITManage local, virtual and remote files
Audio codecsCHOCISCDecode/encode WAV, FLAC, Ogg-Vorbis, decode only MP3.
MIDI parsingCHOCISCParse MIDI messages, MIDI sequences and MIDI files.
MIDI/Audio syncCHOCISCSplits an audio block to match times of MIDI events
Logfast_ioMIT<iostream> replacement with threadsafe options
FFTKFRDualReally fast FFTs.
Lock free queuereaderwriterqueueBSDDoes queue. No lock
Timer threadCHOCISCTimed callbacks
Machine IDmachineidApache 2Generates a unique string based on users hardware
Base64CHOCISCBase64 string encode/decode
JSONsimdjsonApache 2Fastest JSON encode/decode
RegexhyperscanBSD3Regex pattern matching
File/folder windowPortable File DialogsWTFPLNative select file/folder dialogue boxes

Building the exmaples

All examples are built using CMake

Dependancies are are stored as git submodules.

Several of these dependencies use their own CMake build config, and we ignore all of them, often because they're too slow and complicated. All necessary build code is written in this repo.

git clone https://github.com/Tremus/awesome-audio-plugin-framework
cd awesome-audio-plugin-framework
git submodule update --init --depth=1 --recursive

cmake -B build -S .
cd build
cmake --build .

TODO

Things to add to the list:

  • Graphics engine agnostic customisable widgets
  • Something else? (suggest more!)