Skip to content

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

Notifications You must be signed in to change notification settings

Tremus/awesome-audio-plugin-framework

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

63 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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.

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

In future we hope to provide plugin templates that are built using several small libraries.

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

Function Name License Description
Plugin wrapper CPLUG Unlicense Wrapper for VST3, AUv2 & CLAP. Includes standalone builds with hot reloading
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 threads.h Unlicense C11 like threads & atomics, mutexes, singals, single reader/writer queues, cross platform
Threads tinycthread BSD like C11 threads.h like API, cross platform
Atomics c89atomic Unlicense C11 like atomic.h like API, supports flags, float, double and ptr, cross platform
WAV dr_libs Unlicense WAV read & write. See dr_wav.h
AIFF dr_libs Unlicense AIFF read & write. See dr_wav.h
MP3 dr_libs Unlicense MP3 read. See dr_mp3.h
FLAC dr_libs Unlicense FLAC read. See dr_flac.h
FLAC FLAC BSD-3 FLAC encode / decode / read / write
Opus Opus BSD-3 Opus encode / decode / read / write
Log sokol zlib Log to console or file. See sokol_log.h
Log stb MIT Fast log to console. See stb_sprintf.h
FFT pffft BSD like 1D real & complex FFTs. Competitively fast. SSE & NEON optimised
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
Vector graphics NanoVG zlib Antialised 2D polygons, lines, text, gradients and images using OpenGL
Vector graphics nanovg_compat zlib NanoVG wrapper with Metal & DirectX 11 backends and extra functions for initialising a context.
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.
UTF8 utf8 Unlicense stdlib string.h, locale.h, ctype.h replacement functions for \0 terminated UTF8 strings
UTF8 cute_headers Unlicense UTF8 & UTF16 conversion functions. See cute_utf8.h
Crypto TweetNaCl PD HMAC hashing, Public/Secret key encryption and signatures
Binary embed bin2c Apache 2 CLI. Turns single file (eg. font, image) into .c containg const char[].
File dialog box osdialog CC0 Native select file/folder dialogue boxes, alerts, colour picker & more
File dialog box tinyfiledialogs zlib Native select file/folder dialogue boxes, alerts, colour picker & more
File searching cute_headers Unlicense Recursive file & directory search. See cute_files.h
File stream sokol zlib Read & write stream for local files. See sokol_fetch.h
File I/O xhl Unlicense File read/write/append, get user Desktop/Documents etc, UTF8 paths. See files.h
TLS cute_headers Unlicense HTTPS request. Lacks any parsing of responses. See cute_tls.h
HTTPS curl BSD like Makes HTTPS requests
HTTP parsing picohttpparser MIT Parses HTTP1 requests & responses
JSON yyJSON MIT 2nd fastest JSON encode/decode. Parses all data upfront to create a searchable linked list.
JSON zzzJSON BSD like Fast JSON encode/decode. Uses on the fly parsing and string searching and string views.
Base64 base64 BSD-2 Base64 string encode & decode
Regex tiny-regex-c Unlicense Regex pattern matching
Regex PCRE2 Dual Regex pattern matching
Regex TRE BSD like Regex pattern matching but with a greater name

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
JSON simdjson Apache 2 Fastest JSON 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:

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

About

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

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published