Giter VIP home page Giter VIP logo

awesome-audio-plugin-framework's Introduction

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.
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
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:

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

awesome-audio-plugin-framework's People

Contributors

michaelholmes4 avatar tremus avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.