Heady
avendish
Heady | avendish | |
---|---|---|
3 | 34 | |
41 | 410 | |
- | 1.0% | |
0.0 | 8.5 | |
about 2 years ago | 5 days ago | |
C++ | C++ | |
MIT License | GNU General Public License v3.0 or later |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
Heady
-
C++ Show and Tell - April 2022
I've recently made a small update to Heady, which is a C++ library and command-line tool used to create amalgamated single-header libraries from standard C++ source files. In the readme, I also describe how to prepare your source code for header amalgamation using four rules.
-
Example of a well organized header-only lib
If you're interested, I've made an open source utility called Heady that converts normal C++ library code into an amalgamated header file. You obviously have to follow a few rules and mark up your functions appropriately, but I've been using this successfully in my Jinx scripting library for a while now.
-
Jinx Scripting Language 1.3 released
In of the first sections in the tutorial and on the Github landing page, I mention that Jinx requires C++ 17, because I do make use of a few C++ 17-specific features. For example, one of those techniques makes it simpler to offer an amalgamated header-only version of the library. I specifically test on the big three: MSVC, Clang, and gcc, on Windows, Mac, and Linux respectively, so I typically don't use features not available on the latest versions of those OSes and their toolchains, or else offer conditional compilation.
avendish
-
Ask HN: What audio/sound-related OSS projects can I contribute to?
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...
-
Learning C++ for Multimedia and Audio programming
If you are interested in making max, pd, etc... extension you can look into https://github.com/celtera/avendish : it's made exactly for this and tries to stay very close from standard C++ unlike most existing audio frameworks which often come with their own bespoke standard library reimplementation. The documentation also tries to explain the c++ features it used, you might find this useful!
-
Soursop and Ponies in Kona: A C++ Committee Trip Report
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...
to pre-instantiate get(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]
-
Cognitive Loads in Programming
I really don't know about this, I'm writing audio & media effects in a fairly declarative style with https://github.com/celtera/avendish and I'm so much more productive that it's not even funny - I can rewrite entire effects from scratch in the time that it used to take me to find a bug somewhere
- Ask HN: Who is using C++ as the main language for new project?
- A framework for audio software development
-
Clap: The New Audio Plug-In Standard
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.
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 : 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...
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
-
WG21, aka C++ Standard Committee, April 2022 Mailing
I've ported my lib https://github.com/celtera/avendish to P1061's experimental clang implementation to replace boost.pfr (https://github.com/celtera/avendish/blob/main/include/avnd/common/aggregates.hpp#L67) and it works great, it's only missing pack indexing because right now one still needs to do something like
-
Why LSP?
Working on a sunset of this with https://github.com/celtera/avendish - C++ reflection makes this very easy
-
Unreal vs. Unity Opinion
so interesting, as a mostly C++ dev, UE's C++ style feels absolutely awful aha. Of course they have to be here because c++ used to not have reflection 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
What are some alternatives?
muzero-cpp - A C++ pytorch implementation of MuZero
proposal - Go Project Design Documents
seer - Seer - a gui frontend to gdb
DtBlkFx - Fast-Fourier-Transform (FFT) based VST plug-in
nomenus-rex - A CLI utility for the file mass-renaming
csound_max - csound6~ object for Max/MSP
ctcsound - Python Bindings for Csound using ctypes. Can be used from python2.x and python3.x as well.
nanobind - nanobind: tiny and efficient C++/Python bindings
Magic Enum C++ - Static reflection for enums (to string, from string, iteration) for modern C++, work with any enum type without any macro or boilerplate code
DPF - DISTRHO Plugin Framework
chrgfx - Converts to and from tile based graphics from retro video game hardware
clap-imgui - Minimal example of prototyping CLAP audio plugins using Dear ImGui as the user interface.