juce-framework / JUCE

JUCE is an open-source cross-platform C++ application framework for desktop and mobile applications, including VST, VST3, AU, AUv3, LV2 and AAX audio plug-ins.
https://juce.com
Other
6.44k stars 1.7k forks source link

Support for JACK/LV2 CV port metadata? #664

Open mxmilkiib opened 4 years ago

mxmilkiib commented 4 years ago

JACK metadata allows for ports to be marked as "CV", facilitating both a software modular synth environment and a connection with real world modular synths.

Might it be possible to see support for marking certain audio inputs and outputs as CV for JACK apps in JUCE?

mxmilkiib commented 3 years ago

Note that this would also apply for LV2 plugins if JUCE were to officially target that format https://github.com/juce-framework/JUCE/issues/123

dromer commented 2 years ago

Now that JUCE7 will have LV2 it would be nice to put some attention to this again. It might be good to simultaneously look at the VST3 CV port implementation, so as to work on concurrent functionality and developer APIs.

LV2 CV ports are more extensive than VST3 though, as they are not just an audio port with a tag but also support full control port attributes, so you can also set ranges and more meaningful values: https://lv2plug.in/ns/lv2core#CVPort

Example LV2&VST3 plugin that has a set of CV Port I/O is Cardinal

The main advantage of CV ports is that the Host can keep audio and CV streams separated as to protect the users hardware (without a DC-coupled audio interface one would very likely blow up ones devices). And because they are audio-rate control ports they are very useful for dynamic realtime automations.

Ultimately an implementation for JACK would also be nice, but I think JACK implementation in JUCE is quite lacking overall and not even cross-platform.

mxmilkiib commented 2 years ago

"JACK implementation is quite lacking overall and not even cross-platform"

I'm not sure I understand what that means? Maybe you are confused and thinking instead of the DPF stance of "plugins first with the JACK target as primarily for testing" meaning something other than it does? JACK is cross-platform, and JACK CV is cross-platform, do you not agree?

dromer commented 2 years ago

I mean JUCE jack standalone, it only works on Linux, from what I read. The JACK implementation in JUCE needs a lot more work than just adding CV ports, is the thing.

mxmilkiib commented 10 months ago

Might looking at implementing CV ports be something that could happen in the not-to-distant future? AFAIU, VST3 supports CV ports also.

dromer commented 10 months ago

@mxmilkiib I already mentioned that here: https://github.com/juce-framework/JUCE/issues/664#issuecomment-1152972708

However there are still nearly no hosts that support this, so I can't imagine this to have very high priority.

Btw Kushview Element now has LV2 CV support (it's JUCE based, but their LV2 hosting is not).

mxmilkiib commented 10 months ago

JUCE can make hosts, so if JUCE supported CV then that would crack that chicken-and-egg.