Created
September 17, 2020 14:23
-
-
Save jpcima/d8fcd356fe491146b4137c526b00ae37 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
diff --git a/plugins/MIDICCMapX4/PluginMIDICCMapX4.cpp b/plugins/MIDICCMapX4/PluginMIDICCMapX4.cpp | |
index 6dbe08f..545e8bb 100644 | |
--- a/plugins/MIDICCMapX4/PluginMIDICCMapX4.cpp | |
+++ b/plugins/MIDICCMapX4/PluginMIDICCMapX4.cpp | |
@@ -25,6 +25,7 @@ | |
*/ | |
#include "PluginMIDICCMapX4.hpp" | |
+#include <algorithm> | |
START_NAMESPACE_DISTRHO | |
@@ -56,6 +57,19 @@ const ParameterEnumerationValue paramEnumModes[] { | |
// ----------------------------------------------------------------------- | |
+template <size_t N> | |
+static inline void fillEnumValues( | |
+ ParameterEnumerationValues& pev, | |
+ const ParameterEnumerationValue(& list)[N]) | |
+{ | |
+ ParameterEnumerationValue* values = new ParameterEnumerationValue[N]; | |
+ pev.count = N; | |
+ pev.values = values; | |
+ std::copy(list, list + N, values); | |
+} | |
+ | |
+// ----------------------------------------------------------------------- | |
+ | |
PluginMIDICCMapX4::PluginMIDICCMapX4() | |
: Plugin(paramCount, presetCount, 0) // 0 states | |
{ | |
@@ -84,9 +98,8 @@ void PluginMIDICCMapX4::initParameter(uint32_t index, Parameter& parameter) { | |
parameter.name = "Filter Channel"; | |
parameter.symbol = "channelf"; | |
parameter.ranges.max = 16; | |
- parameter.enumValues.count = 17; | |
parameter.enumValues.restrictedMode = true; | |
- parameter.enumValues.values = paramEnumChannels; | |
+ fillEnumValues(parameter.enumValues, paramEnumChannels); | |
break; | |
case paramKeepOriginal: | |
parameter.name = "Keep Source CC Events"; | |
@@ -105,9 +118,8 @@ void PluginMIDICCMapX4::initParameter(uint32_t index, Parameter& parameter) { | |
parameter.shortName = "CC1 Mode"; | |
parameter.symbol = "cc1_mode"; | |
parameter.ranges.max = 2; | |
- parameter.enumValues.count = 3; | |
parameter.enumValues.restrictedMode = true; | |
- parameter.enumValues.values = paramEnumModes; | |
+ fillEnumValues(parameter.enumValues, paramEnumModes); | |
break; | |
case paramCC1Dest: | |
parameter.name = "CC 1 Destination"; | |
@@ -150,9 +162,8 @@ void PluginMIDICCMapX4::initParameter(uint32_t index, Parameter& parameter) { | |
parameter.shortName = "CC2 Mode"; | |
parameter.symbol = "cc2_mode"; | |
parameter.ranges.max = 2; | |
- parameter.enumValues.count = 3; | |
parameter.enumValues.restrictedMode = true; | |
- parameter.enumValues.values = paramEnumModes; | |
+ fillEnumValues(parameter.enumValues, paramEnumModes); | |
break; | |
case paramCC2Dest: | |
parameter.name = "CC 2 Destination"; | |
@@ -196,9 +207,8 @@ void PluginMIDICCMapX4::initParameter(uint32_t index, Parameter& parameter) { | |
parameter.shortName = "CC3 Mode"; | |
parameter.symbol = "cc3_mode"; | |
parameter.ranges.max = 2; | |
- parameter.enumValues.count = 3; | |
parameter.enumValues.restrictedMode = true; | |
- parameter.enumValues.values = paramEnumModes; | |
+ fillEnumValues(parameter.enumValues, paramEnumModes); | |
break; | |
case paramCC3Dest: | |
parameter.name = "CC 3 Destination"; | |
@@ -241,9 +251,8 @@ void PluginMIDICCMapX4::initParameter(uint32_t index, Parameter& parameter) { | |
parameter.shortName = "CC4 Mode"; | |
parameter.symbol = "cc4_mode"; | |
parameter.ranges.max = 2; | |
- parameter.enumValues.count = 3; | |
parameter.enumValues.restrictedMode = true; | |
- parameter.enumValues.values = paramEnumModes; | |
+ fillEnumValues(parameter.enumValues, paramEnumModes); | |
break; | |
case paramCC4Dest: | |
parameter.name = "CC 4 Destination"; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment