Mercurial > hg > pub > prymula > com
diff DPF-Prymula-audioplugins/dpf/FEATURES.md @ 3:84e66ea83026
DPF-Prymula-audioplugins-0.231015-2
author | prymula <prymula76@outlook.com> |
---|---|
date | Mon, 16 Oct 2023 21:53:34 +0200 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/DPF-Prymula-audioplugins/dpf/FEATURES.md Mon Oct 16 21:53:34 2023 +0200 @@ -0,0 +1,98 @@ +# 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. +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 | CLAP | Feature | +|---------------------|---------------------------------------|--------------------|---------------------|-------------------------------|----------------------------|----------------------------|-------------------------------|---------------------| +| Audio port groups | [Yes*](#jack-audio-port-groups) | No | No | Yes | No | Yes | Yes | Audio port groups | +| Audio port as CV | Yes | No | No | Yes | No | [Yes*](#vst3-cv) | [No*](#work-in-progress) | Audio port as CV | +| Audio sidechan | Yes | No | No | Yes | [No*](#vst2-deprecated) | Yes | Yes | Audio sidechan | +| Bypass control | No | No | No | Yes | [No*](#vst2-deprecated) | Yes | Yes | Bypass control | +| MIDI input | Yes | No | Yes | Yes | Yes | Yes | Yes | MIDI input | +| MIDI output | Yes | No | No | Yes | Yes | Yes | Yes | MIDI output | +| Parameter changes | Yes | No | No | [No*](#lv2-parameter-changes) | Yes | Yes | Yes | Parameter changes | +| Parameter groups | No | No | No | Yes | Yes | [No*](#work-in-progress) | Yes | Parameter groups | +| Parameter outputs | No | No | No | Yes | No | Yes | Yes | Parameter outputs | +| Parameter triggers | Yes | No | No | Yes | [No*](#parameter-triggers) | [No*](#parameter-triggers) | [No*](#parameter-triggers) | Parameter triggers | +| Programs | [Yes*](#jack-parameters-and-programs) | [No*](#ladspa-rdf) | [Yes*](#dssi-state) | Yes | [No*](#vst2-programs) | Yes | No | Programs | +| States | Yes | No | [Yes*](#dssi-state) | Yes | Yes | Yes | Yes | States | +| Full/internal state | Yes | No | No | Yes | Yes | Yes | Yes | Full/internal state | +| Time position | Yes | No | No | Yes | Yes | Yes | Yes | Time position | +| UI | [Yes*](#jack-custom-ui-only) | No | External only | Yes | Embed only | Embed only | Yes | UI | +| UI bg/fg colors | No | No | No | Yes | No | No? | No | UI bg/fg colors | +| UI direct access | Yes | No | No | Yes | Yes | Yes | Yes | UI direct access | +| UI host-filebrowser | No | No | No | Yes | [No*](#vst2-deprecated) | [No*](#work-in-progress) | [No*](#work-in-progress) | UI host-filebrowser | +| UI host-resize | Yes | No | Yes | Yes | No | Yes | Yes | UI host-resize | +| UI remote control | No | No | Yes | Yes | No | Yes | No | UI remote control | +| UI send midi note | Yes | No | Yes | Yes | Yes | Yes | Yes | UI send midi note | + +For things that could be unclear: + +- "States" refers to DPF API support, supporting key-value string pairs for internal state saving +- "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. +This is not supported by most JACK applications at the moment. + +## JACK parameters and programs + +Under JACK/Stanlone mode, MIDI input events will trigger program and parameter changes. +MIDI program change events work as expected (that is, MIDI program change 0 will load 1st plugin program). +MIDI CCs are used for parameter changes (matching the `midiCC` value you set on each parameter). + +## JACK custom UI only + +There is no generic plugin editor view. +If your plugin has no custom UI, the standalone executable will run but not show any window. + +## LADSPA RDF + +Programs for LADSPA could be done via LRDF but this is not supported in DPF. + +## DSSI State + +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 + +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 deprecated + +Not supported in DPF at the moment. +It could eventually be, but likely not due to VST2 being phased out by Steinberg. +Contact DPF authors if you require such a feature. + +## VST2 programs + +VST2 program support requires saving state of all programs in memory, which is very expensive and thus not done in DPF. + +## VST3 CV + +Although VST3 officially supports CV (Control Voltage) tagged audio ports, +at the moment no host supports such feature and thus it is not possible to validate it. + +## Work in progress + +Feature is possible, just not implemented yet in DPF.