| @@ -1,31 +1,32 @@ | |||
| # DPF - DISTRHO Plugin Framework | |||
| This file describes the available features for each plugin format. | |||
| The limitations could be due to the plugin format itself or within DPF. | |||
| | Feature | JACK/Standalone | LADSPA | DSSI | LV2 | VST2 | VST3 | | |||
| |---------------------|--------------------------------------------------|------------------------------------|------|---------------|--------|--------| | |||
| | Audio port groups | [Yes*](FEATURES.md#jack-audio-port-groups) | No | No | Yes | No | No* | | |||
| | Audio port as CV | Yes | No | No | Yes | No | [No*](#vst3-is-work-in-progress) | | |||
| | Audio sidechan | Yes | No | No | Yes | [No*](#vst2-potential-support) | [No*](FEATURES.md#vst3-is-work-in-progress) | | |||
| | Bypass control | |||
| | MIDI input | Yes | No | Yes | Yes | Yes | Yes | | |||
| | MIDI output | Yes | No | No | Yes | Yes | Yes | | |||
| | Parameter changes | Yes | No | No | [No*](FEATURES.md#lv2-parameter-changes) | Yes | Yes | | |||
| | Parameter groups | No | No | No | Yes | Yes* | [No*](FEATURES.md#vst3-is-work-in-progress) | | |||
| | Parameter outputs | No | No | No | Yes | Yes | [No*](FEATURES.md#vst3-is-work-in-progress) | | |||
| | Parameter triggers | | |||
| | Programs | [Yes*](FEATURES.md#jack-parameters-and-programs) | [No*](FEATURES.md#ladspa-programs) | Yes* | Yes | No* | Yes | | |||
| | States | Yes | No | Yes* | Yes | Yes | Yes | | |||
| | Full/internal state | |||
| | Time position | |||
| | UI | [Yes*](FEATURES.md#jack-custom-ui-only) | No | Ext. | Embed or Ext. | Embed | Embed | | |||
| | UI bg/fg colors | |||
| | UI direct access | |||
| | UI host-filebrowser | |||
| | UI host-resize | Yes | No | Yes | Yes | No | [No*](FEATURES.md#vst3-is-work-in-progress) | | |||
| | UI remote control | |||
| | UI sendNote | Yes | No | Yes | Yes | Yes | Yes | | |||
| The limitations could be due to the plugin format itself or within DPF. | |||
| If the limitation is within DPF, a link is provided to a description below on the reason for it. | |||
| | Feature | JACK/Standalone | LADSPA | DSSI | LV2 | VST2 | VST3 | | |||
| |---------------------|---------------------------------------|-------------------------|---------------------|-------------------------------|--------------------------------|----------------------------------| | |||
| | Audio port groups | [Yes*](#jack-audio-port-groups) | No | No | Yes | No | [No*](#vst3-is-work-in-progress) | | |||
| | Audio port as CV | Yes | No | No | Yes | No | [No*](#vst3-is-work-in-progress) | | |||
| | Audio sidechan | Yes | No | No | Yes | [No*](#vst2-potential-support) | [No*](#vst3-is-work-in-progress) | | |||
| | Bypass control | No | No | No | Yes | [No*](#vst2-potential-support) | [No*](#vst3-is-work-in-progress) | | |||
| | MIDI input | Yes | No | Yes | Yes | Yes | Yes | | |||
| | MIDI output | Yes | No | No | Yes | Yes | Yes | | |||
| | Parameter changes | Yes | No | No | [No*](#lv2-parameter-changes) | Yes | Yes | | |||
| | Parameter groups | No | No | No | Yes | Yes | [No*](#vst3-is-work-in-progress) | | |||
| | Parameter outputs | No | No | No | Yes | No | [No*](#vst3-is-work-in-progress) | | |||
| | Parameter triggers | Yes | No | No | Yes | [No*](#parameter-triggers) | [No*](#parameter-triggers) | | |||
| | Programs | [Yes*](#jack-parameters-and-programs) | [No*](#ladspa-programs) | [Yes*](#dssi-state) | Yes | [No*](#vst2-programs) | Yes | | |||
| | States | Yes | No | [Yes*](#dssi-state) | Yes | Yes | Yes | | |||
| | Full/internal state | Yes | No | No | Yes | Yes | Yes | | |||
| | Time position | Yes | No | No | Yes | Yes | Yes | | |||
| | UI | [Yes*](#jack-custom-ui-only) | No | External only | Yes | Embed only | Embed only | | |||
| | UI bg/fg colors | No | No | No | Yes | No | No? | | |||
| | UI direct access | Yes | No | No | Yes | Yes | Yes | | |||
| | UI host-filebrowser | No | No | No | Yes | [No*](#vst2-potential-support) | [No*](#vst3-is-work-in-progress) | | |||
| | UI host-resize | Yes | No | Yes | Yes | No | [No*](#vst3-is-work-in-progress) | | |||
| | UI remote control | No | No | Yes | Yes | No | Yes | | |||
| | UI send midi note | Yes | No | Yes | Yes | Yes | Yes | | |||
| For things that could be unclear: | |||
| @@ -33,9 +34,15 @@ For things that could be unclear: | |||
| - "Full state" refers to plugins updating their state internally without outside intervention (like host or UI) | |||
| - "UI direct access" means `DISTRHO_PLUGIN_WANT_DIRECT_ACCESS` is possible, that is, running DSP and UI on the same process | |||
| - "UI remote control" means running the UI on a separate machine (for example over the network) | |||
| - An external UI on this table means that it cannot be embed into the host window, but the plugin can still provide one | |||
| # Special notes | |||
| ## Parameter triggers | |||
| Trigger-style parameters (parameters which value is reset to its default every run) are only supported in JACK and LV2. | |||
| For all other plugin formats DPF will simulate the behaviour through a parameter change request. | |||
| ## JACK audio port groups | |||
| DPF will set JACK metadata information for grouping audio ports. | |||
| @@ -58,12 +65,18 @@ Programs for LADSPA could be done via LRDF but this is not supported in DPF. | |||
| ## DSSI State | |||
| DSSI only supports states when called via UI, no "full state" possible | |||
| DSSI only supports state changes when called via UI, no "full state" possible. | |||
| This also makes it impossibe to use programs and state at the same time with DSSI, | |||
| because in DPF changing programs can lead to state changes but there is no way to fetch this information on DSSI plugins. | |||
| To make it simpler to understand, think of DSSI programs and states as UI properties. | |||
| Because in DPF changing the state happens from UI to DSP side, regular DSSI can be supported. | |||
| But if we involve programs, they would need to pass through the UI in order to work. Which goes against DPF's design. | |||
| ## LV2 parameter changes | |||
| Possible through a custom extension, not implemented on most hosts. | |||
| For now you can pretty much assume it is not supported. | |||
| Although this is already implemented in DPF (through a custom extension), this is not implemented on most hosts. | |||
| So for now you can pretty much treat it as if not supported. | |||
| ## VST2 potential support | |||