{"id":45357,"url":"https://github.com/Tremus/awesome-audio-plugin-framework","name":"awesome-audio-plugin-framework","description":"Curated list of small C/C++ libraries for building your own custom audio plugin framework.","projects_count":67,"last_synced_at":"2026-06-08T08:00:58.931Z","repository":{"id":167120475,"uuid":"642691161","full_name":"Tremus/awesome-audio-plugin-framework","owner":"Tremus","description":"Curated list of small C/C++ libraries for building your own custom audio plugin framework.","archived":false,"fork":false,"pushed_at":"2025-11-19T01:30:57.000Z","size":240,"stargazers_count":50,"open_issues_count":0,"forks_count":3,"subscribers_count":1,"default_branch":"master","last_synced_at":"2026-05-06T04:04:52.420Z","etag":null,"topics":["audio","c","cpp","framework-agnostic","plugin"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Tremus.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2023-05-19T06:18:56.000Z","updated_at":"2026-04-26T22:26:06.000Z","dependencies_parsed_at":"2024-01-14T04:41:27.858Z","dependency_job_id":"94dc9e70-2362-4b6a-9932-c86a08790937","html_url":"https://github.com/Tremus/awesome-audio-plugin-framework","commit_stats":null,"previous_names":["tremus/awesome-audio-plugin-framework"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Tremus/awesome-audio-plugin-framework","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Tremus%2Fawesome-audio-plugin-framework","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Tremus%2Fawesome-audio-plugin-framework/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Tremus%2Fawesome-audio-plugin-framework/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Tremus%2Fawesome-audio-plugin-framework/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Tremus","download_url":"https://codeload.github.com/Tremus/awesome-audio-plugin-framework/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Tremus%2Fawesome-audio-plugin-framework/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33356135,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-21T12:23:38.849Z","status":"online","status_checked_at":"2026-05-22T02:00:06.671Z","response_time":265,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"created_at":"2024-01-13T21:19:07.382Z","updated_at":"2026-06-08T08:00:58.931Z","primary_language":null,"list_of_lists":false,"displayable":true,"categories":["C","C++"],"sub_categories":[],"readme":"# Awesome Audio Plugin Framework\n\nCurated list of small C/C++ libraries for building your own custom audio plugin framework.\n\nSmall libraries usually follow the [Unix philosophy](https://en.wikipedia.org/wiki/Unix_philosophy#Do_One_Thing_and_Do_It_Well), making them more maintainable, replaceable, and flexible in how they are used. Frameworks, by definition, break this philosophy.\n\nSee the [Examples](./examples) folder for code \u0026 build examples of these libraries.\n\nSee the [Templates](./templates) folder for ready to go, lightweight plugin templates.\n\nThe listed libraries and example code are generally biased towards:\n\n-   Permissive non-GPL licensing\n-   Support for Windows \u0026 MacOS. (Linux, iOS, Android and Emscripten are not actively supported!)\n-   Ease of compilation, fast builds, small binaries, fewer LOCs, single compilation units, C89 \u0026 C99\n\n## C\n\n| Function        | Name                                                                 | License   | Description                                                                                     |\n| --------------- | -------------------------------------------------------------------- | --------- | ----------------------------------------------------------------------------------------------- |\n| Plugin wrapper  | [CPLUG](https://github.com/Tremus/CPLUG)                             | Unlicense | Wrapper for VST3, AUv2, CLAP, standalone. Includes optional window lib for plugins              |\n| Window          | [Pugl](https://github.com/lv2/pugl)                                  | ISC       | Native window with mouse \u0026 keyboard callbacks. Made with plugins in mind                        |\n| Window          | [sokol](https://github.com/floooh/sokol)                             | zlib      | Native window with mouse \u0026 keyboard callbacks. Made with games in mind. See: `sokol_app.h`.     |\n| VST3            | [vst3_c_api](https://github.com/steinbergmedia/vst3_c_api)           | Dual      | VST3 wrapper                                                                                    |\n| CLAP            | [clap](https://github.com/free-audio/clap)                           | MIT       | CLAP wrapper                                                                                    |\n| Threads         | [threads.h](https://github.com/mattiasgustavsson/libs)               | Unlicense | C11 like threads \u0026 atomics, mutexes, singals, single reader/writer queues, cross platform       |\n| Threads         | [tinycthread](https://github.com/tinycthread/tinycthread)            | BSD like  | C11 threads.h like API, cross platform                                                          |\n| Atomics         | [c89atomic](https://github.com/mackron/c89atomic)                    | Unlicense | C11 like atomic.h like API, supports flags, float, double and ptr, cross platform               |\n| WAV             | [dr_libs](https://github.com/mackron/dr_libs)                        | Unlicense | WAV read \u0026 write. See `dr_wav.h`                                                                |\n| AIFF            | [dr_libs](https://github.com/mackron/dr_libs)                        | Unlicense | AIFF read \u0026 write. See `dr_wav.h`                                                               |\n| MP3             | [dr_libs](https://github.com/mackron/dr_libs)                        | Unlicense | MP3 read. See `dr_mp3.h`                                                                        |\n| FLAC            | [dr_libs](https://github.com/mackron/dr_libs)                        | Unlicense | FLAC read. See `dr_flac.h`                                                                      |\n| FLAC            | [FLAC](https://github.com/xiph/flac)                                 | BSD-3     | FLAC encode / decode / read / write                                                             |\n| Opus            | [Opus](https://github.com/xiph/opus)                                 | BSD-3     | Opus encode / decode / read / write                                                             |\n| Log             | [sokol](https://github.com/floooh/sokol)                             | zlib      | Log to console or file. See `sokol_log.h`                                                       |\n| Log             | [stb](https://github.com/nothings/stb)                               | MIT       | Fast log to console. See `stb_sprintf.h`                                                        |\n| FFT             | [pffft](https://bitbucket.org/jpommier/pffft/src/master/)            | BSD like  | 1D real \u0026 complex FFTs. Competitively fast. SSE \u0026 NEON optimised                                |\n| Audio thread    | [sokol](https://github.com/floooh/sokol)                             | zlib      | Spins up an audio thread with buffer to write to. See `sokol_audio.h`                           |\n| Audio IO        | [libsoundio](https://github.com/andrewrk/libsoundio)                 | MIT       | Wrapper for CoreAudio, WASAPI + more                                                            |\n| Vector graphics | [NanoVG](https://github.com/memononen/nanovg)                        | zlib      | Antialised 2D polygons, lines, text, gradients and images using OpenGL                          |\n| Vector graphics | [nanovg_compat](https://github.com/Tremus/nanovg_compat)             | zlib      | NanoVG wrapper with Metal \u0026 DirectX 11 backends and extra functions for initialising a context. |\n| Text Rendering  | [Freetype2](https://gitlab.freedesktop.org/freetype/freetype)        | FTL       | CPU rendering for most fonts for most devices.                                                  |\n| Text Shaping    | [kb](https://github.com/JimmyLefevre/kb)                             | zlib      | Multilingual text segmentation and shaping                                                      |\n| Memory          | [xhl](https://github.com/Tremus/xhl)                                 | Unlicense | Allocators with leak detectors. See `alloc.h`                                                   |\n| Maths           | [xhl](https://github.com/Tremus/xhl)                                 | Dual      | Fast maths approximations. See `maths.h`                                                        |\n| Time            | [xhl](https://github.com/Tremus/xhl)                                 | Unlicense | High res time, get OS time as unix timestamp, performance profiling tools. See `time.h`         |\n| Time            | [sokol](https://github.com/floooh/sokol)                             | zlib      | Get \u0026 parse high resolution time. See `sokol_time.h`                                            |\n| Image codecs    | [stb](https://github.com/nothings/stb)                               | MIT       | Load/decode many image formats. See `stb_image.h`, `stb_image_resize.h`, `stb_image_write.h`    |\n| Data containers | [stb](https://github.com/nothings/stb)                               | MIT       | Variable type dynamic arrays and hash maps. See `stb_ds.h`                                      |\n| Strings         | [sds](https://github.com/antirez/sds)                                | BSD-2     | Dyanamic size strings with manipulation and formatting methods.                                 |\n| UTF8            | [utf8](https://github.com/sheredom/utf8.h)                           | Unlicense | stdlib string.h, locale.h, ctype.h replacement functions for `\\0` terminated UTF8 strings       |\n| UTF8            | [cute_headers](https://github.com/RandyGaul/cute_headers_deprecated) | Unlicense | UTF8 \u0026 UTF16 conversion functions. See `cute_utf8.h`                                            |\n| Crypto          | [TweetNaCl](https://tweetnacl.cr.yp.to/software.html)                | PD        | HMAC hashing, Public/Secret key encryption and signatures                                       |\n| Binary embed    | [bin2c](https://github.com/adobe/bin2c)                              | Apache 2  | CLI. Turns single file (eg. font, image) into `.c` containg `const char[]`.                     |\n| File dialog box | [osdialog](https://github.com/AndrewBelt/osdialog)                   | CC0       | Native select file/folder dialogue boxes, alerts, colour picker \u0026 more                          |\n| File dialog box | [tinyfiledialogs](https://sourceforge.net/projects/tinyfiledialogs/) | zlib      | Native select file/folder dialogue boxes, alerts, colour picker \u0026 more                          |\n| File I/O        | [xhl](https://github.com/Tremus/xhl)                                 | Unlicense | File r/w/a, paths eg. Desktop/Documents, list dir \u0026 watch file change events. UTF8. `files.h`   |\n| File searching  | [cute_headers](https://github.com/RandyGaul/cute_headers_deprecated) | Unlicense | Recursive file \u0026 directory search. See `cute_files.h`                                           |\n| File stream     | [sokol](https://github.com/floooh/sokol)                             | zlib      | Read \u0026 write stream for local files. See `sokol_fetch.h`                                        |\n| TLS             | [cute_headers](https://github.com/RandyGaul/cute_headers)            | Unlicense | HTTPS request. Lacks any parsing of responses. See `cute_tls.h`                                 |\n| HTTPS           | [curl](https://github.com/curl/curl)                                 | BSD like  | Makes HTTPS requests                                                                            |\n| HTTP parsing    | [picohttpparser](https://github.com/h2o/picohttpparser)              | MIT       | Parses HTTP1 requests \u0026 responses                                                               |\n| JSON            | [yyJSON](https://github.com/ibireme/yyjson)                          | MIT       | 2nd fastest JSON encode/decode. Parses all data upfront to create a searchable linked list.     |\n| JSON            | [zzzJSON](https://github.com/dacez/zzzjson)                          | BSD like  | Fast JSON encode/decode. Uses on the fly parsing and string searching and string views.         |\n| Base64          | [base64](https://github.com/aklomp/base64)                           | BSD-2     | Base64 string encode \u0026 decode                                                                   |\n| Regex           | [tiny-regex-c](https://github.com/kokke/tiny-regex-c)                | Unlicense | Regex pattern matching                                                                          |\n| Regex           | [PCRE2](https://github.com/PCRE2Project/pcre2)                       | Dual      | Regex pattern matching                                                                          |\n| Regex           | [TRE](https://github.com/laurikari/tre)                              | BSD like  | Regex pattern matching but with a greater name                                                  |\n\n## C++\n\n| Function           | Name                                                                         | License  | Description                                           |\n| ------------------ | ---------------------------------------------------------------------------- | -------- | ----------------------------------------------------- |\n| Window             | [CrossWindow](https://github.com/alaingalvan/CrossWindow)                    | zlib     | Native window with mouse \u0026 keyboard callbacks.        |\n| VST3               | [vst3_public_sdk](https://github.com/steinbergmedia/vst3_public_sdk)         | Dual     | VST3 wrapper                                          |\n| AU                 | [vst3_public_sdk](https://github.com/steinbergmedia/vst3_public_sdk)         | Dual     | AU wrapper via a VST3 wrapper wrapper                 |\n| AUv3               | [vst3_public_sdk](https://github.com/steinbergmedia/vst3_public_sdk)         | Dual     | AUv3 wrapper via a VST3 wrapper wrapper               |\n| AAX                | [vst3_public_sdk](https://github.com/steinbergmedia/vst3_public_sdk)         | Dual     | AAX wrapper via a VST3 wrapper wrapper                |\n| VST3               | [clap-wrapper](https://github.com/free-audio/clap-wrapper)                   | Multi    | VST3 wrapper via a CLAP wrapper                       |\n| File read/write    | [cppfs](https://github.com/cginternals/cppfs)                                | MIT      | Manage local, virtual and remote files                |\n| Audio codecs       | [CHOC](https://github.com/Tracktion/choc)                                    | ISC      | Decode/encode WAV, FLAC, Ogg-Vorbis, decode only MP3. |\n| MIDI parsing       | [CHOC](https://github.com/Tracktion/choc)                                    | ISC      | Parse MIDI messages, MIDI sequences and MIDI files.   |\n| MIDI/Audio sync    | [CHOC](https://github.com/Tracktion/choc)                                    | ISC      | Splits an audio block to match times of MIDI events   |\n| Log                | [fast_io](https://github.com/cppfastio/fast_io)                              | MIT      | \\\u003ciostream\\\u003e replacement with threadsafe options      |\n| FFT                | [KFR](https://github.com/kfrlib/kfr)                                         | Dual     | Really fast FFTs.                                     |\n| Lock free queue    | [readerwriterqueue](https://github.com/cameron314/readerwriterqueue)         | BSD      | Does queue. No lock                                   |\n| Timer thread       | [CHOC](https://github.com/Tracktion/choc)                                    | ISC      | Timed callbacks                                       |\n| Machine ID         | [machineid](https://github.com/Tarik02/machineid)                            | Apache 2 | Generates a unique string based on users hardware     |\n| Base64             | [CHOC](https://github.com/Tracktion/choc)                                    | ISC      | Base64 string encode/decode                           |\n| JSON               | [simdjson](https://github.com/simdjson/simdjson)                             | Apache 2 | Fastest JSON encode/decode                            |\n| Regex              | [hyperscan](https://github.com/intel/hyperscan)                              | BSD3     | Regex pattern matching                                |\n| File/folder window | [Portable File Dialogs](https://github.com/samhocevar/portable-file-dialogs) | WTFPL    | Native select file/folder dialogue boxes              |\n\n## Building the exmaples\n\nAll examples are built using CMake\n\nDependancies are are stored as git submodules.\n\nSeveral 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.\n\n```\ngit clone https://github.com/Tremus/awesome-audio-plugin-framework\ncd awesome-audio-plugin-framework\ngit submodule update --init --depth=1 --recursive\n\ncmake -B build -S .\ncd build\ncmake --build .\n```\n\n## TODO\n\nThings to add to the list:\n\n-   Graphics engine agnostic customisable widgets\n-   Something else? (suggest more!)\n","projects_url":"https://awesome.ecosyste.ms/api/v1/lists/tremus%2Fawesome-audio-plugin-framework/projects"}