Going to ask some really stupid questions, apologies in advance: This is mindblowing work. I'm having some trouble wrapping my head around all of it. Will lead with the context that: A) I am not very familiar with audio programming specifics, or DSP at all. I have done some things with VST2 + VST3, and looked into LV2. B) I have very little background with C++ I am curious: 1. Is this targeted more towards the DSP an…
> 1. Is this targeted more towards the DSP and algorithm side of audio plugin development, or is there interest/use for the plugin side too (IE, generating VST/LV2 compatible interfaces)?
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).
For LV2 I don't think it will be directly possible as LV2 requires separate .ttl files which describe the plug-in. Technically one could make a small program which from the C++ reflection, outputs the .ttl on stdout and kindly ask CMake to call it and generate the .ttl file from it.
> 2. Would a byproduct of this be that you would be able to implement functionality + interact with C++ classes from other languages?
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.
I've tried to find ways to auto-generate a C ABI but sadly:
- asm("...") only wants string literals, strings generated through constexpr don't cut it (otherwise it'd be possible and even relatively easy to generate e.g.
asm(R"(
.global foo_set_x
.text
foo_set_x:
jmp _ZN3foo5set_xEi
)");
to wrap for instance a foo::set_x(int) method.- I tried writing directly the binary code and appending it to the ELF sections but it seems that there's no easy way to do append to .symtab / .stringtab where the name of the symbols are without using a linker script.