DPF

DISTRHO Plugin Framework
Log | Files | Refs | Submodules | README | LICENSE

commit 7b080d498b64730b8eab373268c2271e9438d650
parent 1b408abe9505cc38e6a7f809b0aa14fec5779601
Author: falkTX <falktx@falktx.com>
Date:   Wed, 29 Sep 2021 16:00:35 +0100

Complete the feature table

Signed-off-by: falkTX <falktx@falktx.com>

Diffstat:
MFEATURES.md | 69+++++++++++++++++++++++++++++++++++++++++----------------------------
1 file changed, 41 insertions(+), 28 deletions(-)

diff --git a/FEATURES.md b/FEATURES.md @@ -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