vintage - a declarative API for C++ audio plug-ins

Related tags

Audio vintage
Overview

vintage - a declarative API for C++ audio plug-ins

This is an experiment in seeing how far modern C++ features allow to write purely declarative code and introspect this code through various reflection-like features.

Building plug-ins

$ g++ \
  examples/audio_effect/distortion.cpp \
  -std=c++20 \
  -I include/ \
  -fPIC \
  -shared \
  -o Distortion.so

Building very very smol plug-ins

The example plug-in can be as small as 6.4kb on Linux:

$ clang++ \
  examples/audio_effect/distortion.cpp \
  -I include/ \
  -O3 \
  -march=native \
  -std=c++20 \
  -shared \
  -s \
  -Bsymbolic \
  -fvisibility=internal \
  -fvisibility-inlines-hidden \
  -fvisibility-inlines-hidden-static-local-var \
  -fstruct-path-tbaa \
  -fstrict-aliasing \
  -fstrict-vtable-pointers \
  -fno-semantic-interposition \
  -fno-stack-protector \
  -fno-ident \
  -fno-unwind-tables \
  -fno-asynchronous-unwind-tables \
  -fno-plt \
  -fvirtual-function-elimination \
  -flto \
  -fno-exceptions \
  -fno-rtti \
  -ffunction-sections \
  -fdata-sections \
  -fuse-ld=lld \
  -Wl,-O2 \
  -Wl,--lto-O3 \
  -Wl,-z,defs \
  -Wl,--as-needed \
  -Wl,--no-undefined \
  -Wl,--gc-sections \
  -Wl,--icf=all \
  -o Distortion.so

$ du -b Distortion.so
6368	Distortion.so

$ nm -C -D Distortion.so
w [email protected]_2.2.5
w __gmon_start__
w _ITM_deregisterTMCloneTable
w _ITM_registerTMCloneTable
U [email protected]_2.2.5
U [email protected]_2.2.5
U [email protected]_2.2.5
U [email protected]_2.2.5
0000000000001940 T VSTPluginMain
U operator delete(void*)@GLIBCXX_3.4
U operator new(unsigned long)@GLIBCXX_3.4
You might also like...
SimplE Lossless Audio
SimplE Lossless Audio

SELA SimplE Lossless Audio A lossless audio codec which aims to be as simple as possible while still having good enough compression ratios. Code Quali

Easy and efficient audio synthesis in C++

Tonic Fast and easy audio synthesis in C++. Prefer coding to patching? Love clean syntax? Care about performance? That's how we feel too, and why we m

An audio mixer that supports various file formats for Simple Directmedia Layer.

An audio mixer that supports various file formats for Simple Directmedia Layer.

Explore fractals in an audio-visual sandbox
Explore fractals in an audio-visual sandbox

Fractal Sound Explorer Explore fractals in an audio-visual sandbox Download executable on my itch.io page: https://codeparade.itch.io/fractal-sound-ex

Audio out with an FTDI UART cable

Audio out with an FTDI UART cable This encodes audio as either PDM (using a first order sigma-delta stage), 32-bits PWM or 64-bits PWM and sends it as

Sexy, audio-responsive effects on LED strips.
Sexy, audio-responsive effects on LED strips.

Striptease Sexy, audio-responsive effects on LED strips. For Teensy 4 with Audio Adapter Board, by PJRC. Quick demo Shooting video of LEDs is very tri

audio monitor filter for OBS Studio
audio monitor filter for OBS Studio

Audio Monitor dock and filter for OBS Studio Plugin for OBS Studio to add Audio Monitor dock and filter. It allows you to put the audio of a OBS sourc

Lightweight Embedded Audio Framework

LEAF (Lightweight Embedded Audio Framework) is a C library for audio synthesis and processing created by Jeff Snyder, Mike Mulshine, and Matt Wang at Princeton University's New Instrument Research Lab. It was originally called OOPS when we started writing it in 2017, so you may see references to it under that name as well.

An Audio Steganography Tool, written in C++
An Audio Steganography Tool, written in C++

HiddenWave Hide your personal Data inside The Audio wav file Written in C++ by Gaurav Raj [TheHackersBrain] Hiddenwave is an audio steganography tool

Owner
Jean-Michaël Celerier
Computer art engineer & researcher @ossia lead dev : https://ossia.io
Jean-Michaël Celerier
RetroWave is a hardware sound board series that uses vintage sound chips and works with modern hardware.

RetroWave Authentic sounds from vintage sound chips, on modern hardware! Introduction RetroWave is a hardware sound board series that uses vintage sou

SudoMaker 58 Jan 2, 2023
C++ audio plug-in framework for desktop, mobile (iOS) and web

iPlug 2 C++ audio plug-in framework for desktop, mobile (iOS) and web iPlug 2 is a simple-to-use C++ framework for developing cross-platform audio plu

iPlug 2 Framework 1.4k Jan 2, 2023
PortAudio is a portable audio I/O library designed for cross-platform support of audio

PortAudio is a cross-platform, open-source C language library for real-time audio input and output.

PortAudio 786 Jan 1, 2023
Audio Plugin API

Audio Plugin API

null 1.3k Jan 3, 2023
A simple C++ library for reading and writing audio files.

AudioFile A simple header-only C++ library for reading and writing audio files. Current supported formats: WAV AIFF Author AudioFile is written and ma

Adam Stark 683 Jan 4, 2023
A C library for reading and writing sound files containing sampled audio data.

libsndfile libsndfile is a C library for reading and writing files containing sampled audio data. Authors The libsndfile project was originally develo

null 1.1k Jan 2, 2023
C library for cross-platform real-time audio input and output

libsoundio C library providing cross-platform audio input and output. The API is suitable for real-time software such as digital audio workstations as

Andrew Kelley 1.6k Jan 6, 2023
C++ Audio and Music DSP Library

_____ _____ ___ __ _ _____ __ __ __ ____ ____ / \\_ \\ \/ / |/ \| | | | \_ \/ \ | Y Y \/ /_ \> <| | Y Y \ | |_|

Mick Grierson 1.4k Jan 7, 2023
Single file audio playback and capture library written in C.

A single file library for audio playback and capture. Example - Documentation - Supported Platforms - Backends - Major Features - Building - Unofficia

David Reid 2.6k Jan 8, 2023