commit 8c27ddb0bb103c8e3e0332db538bbed029a836c8
parent 91d1a9bdf74fc073c932c0903bd9779ab7bf7d2c
Author: falkTX <falktx@gmail.com>
Date: Fri, 10 Feb 2017 14:15:58 +0100
Implement bypass (enabled) for LV2
Diffstat:
3 files changed, 42 insertions(+), 2 deletions(-)
diff --git a/distrho/src/DistrhoPluginInternal.hpp b/distrho/src/DistrhoPluginInternal.hpp
@@ -290,6 +290,13 @@ public:
return fData->parameters[index].hints;
}
+ ParameterDesignation getParameterDesignation(const uint32_t index) const noexcept
+ {
+ DISTRHO_SAFE_ASSERT_RETURN(fData != nullptr && index < fData->parameterCount, kParameterDesignationNull);
+
+ return fData->parameters[index].designation;
+ }
+
bool isParameterOutput(const uint32_t index) const noexcept
{
return (getParameterHints(index) & kParameterIsOutput);
diff --git a/distrho/src/DistrhoPluginLV2.cpp b/distrho/src/DistrhoPluginLV2.cpp
@@ -512,6 +512,12 @@ public:
if (fLastControlValues[i] != curValue && ! fPlugin.isParameterOutput(i))
{
fLastControlValues[i] = curValue;
+
+ if (fPlugin.getParameterDesignation(i) == kParameterDesignationBypass)
+ {
+ curValue = 1.0f - curValue;
+ }
+
fPlugin.setParameterValue(i, curValue);
}
}
diff --git a/distrho/src/DistrhoPluginLV2export.cpp b/distrho/src/DistrhoPluginLV2export.cpp
@@ -377,10 +377,34 @@ void lv2_generate_ttl(const char* const basename)
pluginString += " a lv2:InputPort, lv2:ControlPort ;\n";
pluginString += " lv2:index " + String(portIndex) + " ;\n";
- pluginString += " lv2:name \"" + plugin.getParameterName(i) + "\" ;\n";
- // symbol
+ bool designated = false;
+
+ // designation
+ if (! plugin.isParameterOutput(i))
{
+ switch (plugin.getParameterDesignation(i))
+ {
+ case kParameterDesignationNull:
+ break;
+ case kParameterDesignationBypass:
+ designated = true;
+ pluginString += " lv2:name \"Enabled\" ;\n";
+ pluginString += " lv2:symbol \"lv2_enabled\" ;\n";
+ pluginString += " lv2:default 1 ;\n";
+ pluginString += " lv2:minimum 0 ;\n";
+ pluginString += " lv2:maximum 1 ;\n";
+ pluginString += " lv2:portProperty lv2:toggled , lv2:integer ;\n";
+ pluginString += " lv2:designation lv2:enabled ;\n";
+ break;
+ }
+ }
+
+ // name and symbol
+ if (! designated)
+ {
+ pluginString += " lv2:name \"" + plugin.getParameterName(i) + "\" ;\n";
+
String symbol(plugin.getParameterSymbol(i));
if (symbol.isEmpty())
@@ -390,6 +414,7 @@ void lv2_generate_ttl(const char* const basename)
}
// ranges
+ if (! designated)
{
const ParameterRanges& ranges(plugin.getParameterRanges(i));
@@ -410,6 +435,7 @@ void lv2_generate_ttl(const char* const basename)
}
// unit
+ if (! designated)
{
const String& unit(plugin.getParameterUnit(i));
@@ -455,6 +481,7 @@ void lv2_generate_ttl(const char* const basename)
}
// hints
+ if (! designated)
{
const uint32_t hints(plugin.getParameterHints(i));