-
InfluxDB
Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
-
essentia
C++ library for audio and music analysis, description and synthesis, including Python bindings
-
SaaSHub
SaaSHub - Software Alternatives and Reviews. SaaSHub helps you find the best software and product alternatives
> but no examples of what it's like to consume those objects.
I'm not sure I understand: the whole idea is that since the objects are just C++ structs, to "consume" them from some C++ program would just mean including the file and using it.
Otherwise, if you want to know how you can do similar reflection on it (for instance to generate an UI from any of those processor) the simplest example is the python binding, the meat of it fits in ~100 lines of code:
https://github.com/celtera/avendish/blob/main/src/python/pro...
if that is what you mean, then yeah what I plan to do is to write some documentation to explain the techniques and reflection API
If you wrote a software that worked with soundflower it means that at some point you used to call either the CoreAudio API directly or any abstraction on top of it (RtAudio, PortAudio, ...). Thus harder to port to another OS :-)
Here the idea is to write the algorithms in a way that is more future-proof, by not having them to depend on any run-time API, just a generic specification. This way the algorithms will still be useful in 10 years when everyone has moved to API N+1, unlike a metric ton of existing audio software which depends on a specific audio / media-object API for no good reason (today ! When they were written C++ wasn't advanced enough to allow this at all)
- all the objects in https://github.com/pcastine-lp/LitterPower for instance
- ditto for all the VCV algorithms : https://github.com/VCVRack/Fundamental/tree/v1/src
etc etc, there's a couple hundred of those, which always depend on some API and are thus not easily portable across environments.
> it does generate something compatible with VST2.x and I've been working on VST3 this week-end (and pulling a few hairs, that API is horrendous, the smallest example is a few thousand lines of codes).
Oh that is awesome!!!
If you want a tip about the smallest possible VST3 implementation, (and maybe you already know this) there is a class called "SingleComponentEffect", and an example called "AGainSimple" that uses it and is a fully self-contained single file full VST3 plugin:
https://github.com/steinbergmedia/vst3_public_sdk/search?q=s...
Also, I spent some time trying to get VST3 SDK usable with vcpkg so you could just do:
// vcpkg.json
And your CMake would just install it for you:
https://github.com/microsoft/vcpkg/issues/5660#issuecomment-...
It ended up requiring more changes than this, but in the end I wound up fixing the CMake build so it spit out both the VST3 SDK (helper classes) shared lib and the almost-header-only lib ("pluginterfaces" directory).
I ought to upload the patches somewhere in case it's useful for you/anyone else.
> "yes, that's a goal, make your DSP processor in C++ and then write a small UI for it in python or QML without having to write binding code."
Which has a patch with the changes -- EXCEPT for the file "Config.cmake.in", which I can't remember what it does.
I also just said fuck it and zipped up the whole project, you can download it here:
https://github.com/GavinRay97/vst3sdk/blob/master/vst3sdk.zi...
With this fixed version, using the VST3 SDK becomes much much easier.
All you have to do is add it as a vendored subproject in CMake:
project(VST3Example CXX)
Using gcc extended asm you can pass literal constants to the asm and they will be expanded textually (or at least their address will). I don't think the details are fully documented anywhere and I had to use intel syntax to make it work, but it might be possible even wit AT&T syntax.
Take a look a this[1] for example. See how trampoline, the destructor and the size are passed in with the 'i' constraint and are referred to their value with the %cX constraint (yes, the code is write only and even with a lot of comments I have only the most vague idea of what I was trying to do here).
Probably more work is require for PIC though.
[1] https://github.com/gpderetta/delimited/blob/7e755d643ee45897...
Re 1: Why not create a DPF wrapper for this and have DPF create the ladspa/dssi/vst2/vst3/lv2 for you? -> https://github.com/DISTRHO/DPF
These 2 soul-crushing lines in the build file:
https://github.com/steinbergmedia/vst3_pluginterfaces/blob/m...
# pluginterfaces should actually be a header-only library,