RustAudio / vst3-sys

Raw Bindings to the VST3 API
Other
288 stars 18 forks source link

Host specific extensions #51

Closed mschnell1 closed 2 years ago

mschnell1 commented 2 years ago

I recently did a (testing / proof of concept) VST3 in C++ using JUCE. Same uses the host specific extensions to VST3 to take advantage of two Reaper specific features: using the internal Reaper API, and allowing for a second ("embedded") GUI that Reaper shows in the appropriate track either in the track header (left) as in the Mixer. I in fact have no idea how JUCE under the hood handles this host specific stuff, but I would like to port my code to Rust - which JUCE does not support, and hence would need to use or do the appropriate enhancement in RustAudio. Any comments ? Thanks, -Michael

m-hilgendorf commented 2 years ago

Hi @mschnell1 -

To implement this we'd need to write bindings to Reaper's VST3 extensions.

From there you would need bindings to the specific structs/constants you want to use defined in the rest of that repo in order to support Reaper extensions in your plugin.

mschnell1 commented 2 years ago

To implement this we'd need to write bindings to Reaper's VST3 extensions.

I in fact have no idea about how host specific extensions to VST3 work under the hood, and what specifics for the Reaper bindings (Reaper API and/or embedded Plugin GUI needs to be implemented at the VST3 API layer, as JUCE did that for me.

From there you would need bindings to the specific structs/constants you want to use defined in the rest of that repo in order to support Reaper extensions in your plugin.

This supposedly is what I already got working within JUCE (with the kind help of the Reaper forum members) as well Reaper API as embedded Plugin GUI. Cocos provides C++ code (including complex Macros) for this. Once same included actually using it is rather easy.

-Michael

m-hilgendorf commented 2 years ago

Support for this was merged in #53

mschnell1 commented 2 years ago

Great ! I am totally impressed by this team !