HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
celtera
avendish
C++2021–2025
celtera / avendish

avendish

declarative polyamorous cross-system intermedia objects

3Distinct people
27Mentions
0Explicit recommenders
488GitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

declarative polyamorous cross-system intermedia objects

GitHub

Where it is used

No documented product use has been verified yet.

What people are saying

No recommendation phrase was found in the indexed comments.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

Mentioned in the same Hacker News threads. That is not proof they are substitutes.

This week on Hacker News

Nov 7–Nov 14 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/14/2026, 1:49:46 PM UTC.

No direct repository links were found in the indexed HN discussions over the past seven days. Older discussions are available below.

Mentions over time

HN mentions by year27 dated mentions

Observed mentions: 2021-10-30 12:53:29 UTC to 2025-02-14 01:04:20 UTC.

0510152021-01-01 00:00:00 UTC to 2022-01-01 00:00:00 UTC (exclusive): 5 mentions; 3 submissions, 2 comments20212022-01-01 00:00:00 UTC to 2023-01-01 00:00:00 UTC (exclusive): 17 mentions; 0 submissions, 17 comments2023-01-01 00:00:00 UTC to 2024-01-01 00:00:00 UTC (exclusive): 3 mentions; 0 submissions, 3 comments20232024-01-01 00:00:00 UTC to 2025-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2025-01-01 00:00:00 UTC to 2026-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2025

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
20212021-01-01 00:00:00 UTC2022-01-01 00:00:00 UTC532
20222022-01-01 00:00:00 UTC2023-01-01 00:00:00 UTC17017
20232023-01-01 00:00:00 UTC2024-01-01 00:00:00 UTC303
20242024-01-01 00:00:00 UTC2025-01-01 00:00:00 UTC101
20252025-01-01 00:00:00 UTC2026-01-01 00:00:00 UTC101

What Hacker News says

27 sources
I wrote a DAW (https://ossia.io) and a few dozen plugins (actually 150+ if I count the various small tests and examples in https://github.com/celtera/avendish) and I can assure you that most plug-ins don't add latency. > There is no way eliminate CPU cycles being spent on whatever the plugin does. that's not how DAW works, they don't output audio immediately anyways, everything is buffered at the driver level or just above so that there's always 1 or 2 buffers of delay between the input and the output. There's no difference in terms of latency between putting one or 50 bitcrushers in series for instance because in the end the audio main loop looks like (in a very simplified way): void process_soundcard_buffers(float** in, float** out, int samples) { for(int i = 0; i < samples; i++) // samples would usually be the buffer size
Read the rest
you set in your audio config out[0][0] = f(in[0][0]); } where f can be one distortion, or 50 distortions - what matters is that their processing time is < than the time you have to write the output and if so you'll always get the same fixed latency. (And if not so, you don't get delayed output, you get crackles because the soundcard will be reading its buffer whether you wrote something meaningful in it or not)
In OpenDAW – a new holistic exploration of music creation inside the browser
boost::pfr is also huge for reflection in C++. It leverages corner cases of the language and compilers but does so uniformly (works for MSVC, GCC, clang which is all that matters in 2023). It allowed me to write for instance https://GitHub.com/celtera/avendish which keeps on giving. The last version even add automatic field name reflection which is huge: https://www.boost.org/doc/libs/master/doc/html/boost_pfr/tut...
In Trip report: Autumn ISO C++ standards meeting (Kona, HI, USA)
Happy to introduce you to https://ossia.io there are a lots of tasks open! You can check the projects for the general development axes: https://github.com/ossia/score/projects?query=is%3Aopen ; e.g. Audio, Musicality, Integrations, JACK & Linux integration (some are in Classic projects mode) all have audio-related tasks, some easy, some hard. Creating new Avendish plug-ins (docs: https://celtera.github.io/avendish/) could also be fairly useful, here's a very basic example one: https://github.com/celtera/avendish/blob/main/examples/Advan...
In Ask HN: What audio/sound-related OSS projects can I contribute to?
not op, but i've done this a couple times both through the python API: https://github.com/jcelerier/dynalizer to automatically generate safe dlopen stubs for runtime dynamic library loading from header files and through the C++ one (this one is an extremely quick and dirty prototype): https://github.com/ossia/score/blob/master/src/plugins/score-plugin-avnd/SourcePar… to pre-instantiate get<N>(aggregate), for_each(aggregate, f) and other similar functions in https://github.com/celtera/avendish because of how slow it is when done through TMP (doing it that way removed literally dozens of megabytes from my .o and had a positive performance impact even with -O3) ; so I weep a lot when I read that people in the committee object to pack...[indexing]
In Soursop and Ponies in Kona: A C++ Committee Trip Report
I absolutely disagree. I use Qt for most of my GUI C++ apps, it is very framework-y and a joy to get things done with. Since last year I've been working on a framework for making media processors (audio, etc): https://github.com/celtera/avendish Every year I have 2/3 internship students. This year I put them on this framework as a baseline, compared to the previous years where the students would have to do things more manually through libraries. They all got at least 5 times as much done as the students of the previous years in the same 3-4 months span of time.
In Using a framework will harm the maintenance of your software
For anyone using c++, my declarative system has some amount of support for clap: https://github.com/celtera/avendish / https://celtera.github.io/avendish/ But unlike clap, targetting this also gives direct access to a few other environments, namely Max, Pd, ossia score, with the list hopefully growing. Here is an example minimal plugin : https://github.com/celtera/avendish/blob/main/examples/Raw/M... Note that unlike pretty much every other c/c++ plugin API, the plugin code does not need to include any header, everything is done through reflection of struct members at compile-time. This means that it's dead easy to port plugins to e.g. microcontrollers. Here's a per-sample noise generator which uses a small library of pre-made ports: https://github.com/celtera/avendish/blob/main/examples/Helpe... And a very naive buffer-based audio filter
Read the rest
: https://github.com/celtera/avendish/blob/main/examples/Helpe... UI is supported without relying on a specific UI library, only on a canvas painter concept which can then target Qt, NanoVG, and others to come: https://github.com/celtera/avendish/blob/main/examples/Helpe... It does not only support audio but also has an "API-free" gpu abstraction since it's tailored for media arts in general: https://github.com/celtera/avendish/blob/main/examples/Gpu/D... since it binds directly to audio APIs at compile time, it has pretty much zero code size in itself, the smallest plugin it generates for VST2 is around 7kb IIRC
In Clap: The New Audio Plug-In Standard
Working on a subset of this with https://github.com/celtera/avendish - C++ reflection makes some aspects of this problem very easy to solve ; while my lib focusses on media objects (audio / video / GPU processors with a control UI), the same concepts could likely be extended to a more general shared object ontology..
In Why LSP?
so interesting, as a mostly C++ dev, UE's C++ style feels absolutely awful aha. Of course it mostly has to be like this because c++ used to not have reflection at all but I think that nowadays one could use similar principles as the ones I've tried to develop for audio / media objects in https://github.com/celtera/avendish to implement game objects / UObject in a much cleaner way and with better compile times. Add a couple custom attributes implemented as a clang plug-in like e.g. [[ue::name("Player HP")]] int hp{}; which can be done in a couple afternoons by an intern and things would look sooo muuuch better.
In Unreal vs. Unity Opinion
if the object you wanna bind fits into the mold of "an algorithm with inputs and outputs, and some helper methods" I've got automatic binding of a limited set of C++ features working in https://github.com/celtera/avendish ; for now I've been using pybind11 but I guess everything I need is supported by nanobind so maybe i'll do the port...
In Cython is 20

Showing the 15 most recent of 27 sources. Enable JavaScript to search and browse every indexed mention.

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.