Skip to content

Instantly share code, notes, and snippets.

@jpcima
Created September 17, 2020 14:23
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jpcima/d8fcd356fe491146b4137c526b00ae37 to your computer and use it in GitHub Desktop.
Save jpcima/d8fcd356fe491146b4137c526b00ae37 to your computer and use it in GitHub Desktop.
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