pierreguillot / Camomile

An audio plugin with Pure Data embedded that allows to load and to control patches
GNU General Public License v3.0
897 stars 62 forks source link

Linux VST3: extra MIDI parameters added to generic interface #194

Open GModal opened 3 years ago

GModal commented 3 years ago
  1. Describe your environment Debian Buster, stable Carla 2.2.0-RC1 Camomile 1.0.7 Beta14 (Linux 64 binary zip)

  2. Describe the problem or the feature request

Each vst3 plugin registers a list of extra MIDI CC parameters (192 total), as plugin parameters. Carla already offers the built-in ability to map parameters to MIDI CC data.

I don't know if this is behavior is unique to Carla, or to the plugin. The number of vst3 hosts is currently limited for Linux, so it's difficult to test. Pic below --

vst3_params

pierreguillot commented 3 years ago

This is explained in this thread.

So there is an option JUCE_VST3_EMULATE_MIDI_CC_WITH_PARAMETERS (that emulates MIDI CC with parameters). An ideal solution would have been to enable/disable this option dynamically but it is a compile-time definition so I cannot change it based on the text file for example. As with most of the DAW, we can't receive any MIDI CC in a VST3 plugin, if we don't use this option, so I will keep it like this even if it's a bit annoying. And I guess Carla should not do that by default because it seems that even Cubase from Steinberg doesn't manage that (and Steinberg develop the VST3 format).

If there is any VST3 and/or Carla guru in this area, I'll be glad to know their opinion about it. But at first sight, the issue is classified ;)

GModal commented 3 years ago

OK, I read the thread, get it (Cubase filters out the CC data, and this is one way to compensate). It's too bad the JUCE option is set during compilation. That would be the most convenient way to shape the behavior.

Carla must have a limit on parameters, because it's clear the JUCE code exposes all 128 CC values for each MIDI channel (0/1, 0/2. 0/3...0/128, 1/1, 1/2, etc), which is 2048 total. Looks as though Carla limits parameter totals to 256 (not unreasonable) -- correction: # of parameters is user-configurable. Carla's VST3 support is relatively new.

Does JUCE even provide a hook to differentiate these parameters from user-created ones?

Too bad there aren't more VST3 capable Linux hosts. I tried Element, but it's too unstable here to even load plugins...

GModal commented 3 years ago

The developer of Carla, Filipe Coelho (falkTX), commented on this issue here: https://github.com/falkTX/Carla/issues/1240

Is this the fundamental behavior with DAWs on other platforms? (or is it just Cubase?) On Linux, Ardour and other audio apps have always integrated LADSPA and LV2 plugins, and that seems to work fine with the DAW or host handling the CC data. Even JackRack did that 15+ yrs ago.

Alternately, could just the Linux version have it turned off?

Thanks!

pierreguillot commented 3 years ago

It happens on Reaper also, I will on other DAWs but I guess this is the common behavior.

It's already hard to maintain the plugin for different formats and OS, if I can avoid to do such things I prefer.

GModal commented 3 years ago

That's understandable. Maybe JUCE will offer more flexible options for VST3 in future versions.

Until then, the LV2 plugins generated by Camomile work very well. Thanks again, Pierre.