Signed-off-by: falkTX <falktx@falktx.com>tags/v2.1-rc1
@@ -2312,7 +2312,8 @@ static const NativePluginDescriptor carlaRackDesc = { | |||
CarlaEngineNative::_dispatcher, | |||
/* _render_inline_dsplay */ nullptr, | |||
/* cvIns */ 0, | |||
/* cvOuts */ 0 | |||
/* cvOuts */ 0, | |||
/* _get_buffer_port_name */ nullptr | |||
}; | |||
static const NativePluginDescriptor carlaRackNoMidiOutDesc = { | |||
@@ -2356,7 +2357,8 @@ static const NativePluginDescriptor carlaRackNoMidiOutDesc = { | |||
CarlaEngineNative::_dispatcher, | |||
/* _render_inline_dsplay */ nullptr, | |||
/* cvIns */ 0, | |||
/* cvOuts */ 0 | |||
/* cvOuts */ 0, | |||
/* _get_buffer_port_name */ nullptr | |||
}; | |||
static const NativePluginDescriptor carlaPatchbayDesc = { | |||
@@ -2400,7 +2402,8 @@ static const NativePluginDescriptor carlaPatchbayDesc = { | |||
CarlaEngineNative::_dispatcher, | |||
/* _render_inline_dsplay */ nullptr, | |||
/* cvIns */ 0, | |||
/* cvOuts */ 0 | |||
/* cvOuts */ 0, | |||
/* _get_buffer_port_name */ nullptr | |||
}; | |||
static const NativePluginDescriptor carlaPatchbay3sDesc = { | |||
@@ -2444,7 +2447,8 @@ static const NativePluginDescriptor carlaPatchbay3sDesc = { | |||
CarlaEngineNative::_dispatcher, | |||
/* _render_inline_dsplay */ nullptr, | |||
/* cvIns */ 0, | |||
/* cvOuts */ 0 | |||
/* cvOuts */ 0, | |||
/* _get_buffer_port_name */ nullptr | |||
}; | |||
static const NativePluginDescriptor carlaPatchbay16Desc = { | |||
@@ -2488,7 +2492,8 @@ static const NativePluginDescriptor carlaPatchbay16Desc = { | |||
CarlaEngineNative::_dispatcher, | |||
/* _render_inline_dsplay */ nullptr, | |||
/* cvIns */ 0, | |||
/* cvOuts */ 0 | |||
/* cvOuts */ 0, | |||
/* _get_buffer_port_name */ nullptr | |||
}; | |||
static const NativePluginDescriptor carlaPatchbay32Desc = { | |||
@@ -2532,7 +2537,8 @@ static const NativePluginDescriptor carlaPatchbay32Desc = { | |||
CarlaEngineNative::_dispatcher, | |||
/* _render_inline_dsplay */ nullptr, | |||
/* cvIns */ 0, | |||
/* cvOuts */ 0 | |||
/* cvOuts */ 0, | |||
/* _get_buffer_port_name */ nullptr | |||
}; | |||
static const NativePluginDescriptor carlaPatchbay64Desc = { | |||
@@ -2576,7 +2582,8 @@ static const NativePluginDescriptor carlaPatchbay64Desc = { | |||
CarlaEngineNative::_dispatcher, | |||
/* _render_inline_dsplay */ nullptr, | |||
/* cvIns */ 0, | |||
/* cvOuts */ 0 | |||
/* cvOuts */ 0, | |||
/* _get_buffer_port_name */ nullptr | |||
}; | |||
static const NativePluginDescriptor carlaPatchbayCVDesc = { | |||
@@ -2621,7 +2628,8 @@ static const NativePluginDescriptor carlaPatchbayCVDesc = { | |||
CarlaEngineNative::_dispatcher, | |||
/* _render_inline_dsplay */ nullptr, | |||
/* cvIns */ 5, | |||
/* cvOuts */ 5 | |||
/* cvOuts */ 5, | |||
/* _get_buffer_port_name */ nullptr | |||
}; | |||
CARLA_BACKEND_END_NAMESPACE | |||
@@ -1086,7 +1086,11 @@ public: | |||
portName += ":"; | |||
} | |||
if (aIns > 1 && ! forcedStereoIn) | |||
if (fDescriptor->get_buffer_port_name != nullptr) | |||
{ | |||
portName += fDescriptor->get_buffer_port_name(fHandle, forcedStereoIn ? 0 : j, false); | |||
} | |||
else if (aIns > 1 && ! forcedStereoIn) | |||
{ | |||
portName += "input_"; | |||
portName += CarlaString(j+1); | |||
@@ -1119,7 +1123,11 @@ public: | |||
portName += ":"; | |||
} | |||
if (aOuts > 1 && ! forcedStereoOut) | |||
if (fDescriptor->get_buffer_port_name != nullptr) | |||
{ | |||
portName += fDescriptor->get_buffer_port_name(fHandle, forcedStereoOut ? 0 : j, true); | |||
} | |||
else if (aOuts > 1 && ! forcedStereoOut) | |||
{ | |||
portName += "output_"; | |||
portName += CarlaString(j+1); | |||
@@ -1152,7 +1160,11 @@ public: | |||
portName += ":"; | |||
} | |||
if (cvIns > 1) | |||
if (fDescriptor->get_buffer_port_name != nullptr) | |||
{ | |||
portName += fDescriptor->get_buffer_port_name(fHandle, fDescriptor->audioIns + j, false); | |||
} | |||
else if (cvIns > 1) | |||
{ | |||
portName += "cv_input_"; | |||
portName += CarlaString(j+1); | |||
@@ -1177,7 +1189,11 @@ public: | |||
portName += ":"; | |||
} | |||
if (cvOuts > 1) | |||
if (fDescriptor->get_buffer_port_name != nullptr) | |||
{ | |||
portName += fDescriptor->get_buffer_port_name(fHandle, fDescriptor->audioOuts + j, true); | |||
} | |||
else if (cvOuts > 1) | |||
{ | |||
portName += "cv_output_"; | |||
portName += CarlaString(j+1); | |||
@@ -277,6 +277,7 @@ typedef struct _NativePluginDescriptor { | |||
// placed at the end for backwards compatibility. only valid if NATIVE_PLUGIN_USES_CONTROL_VOLTAGE is set | |||
const uint32_t cvIns; | |||
const uint32_t cvOuts; | |||
const char* (*get_buffer_port_name)(NativePluginHandle handle, uint32_t index, bool isOutput); | |||
} NativePluginDescriptor; | |||
@@ -618,7 +618,7 @@ public: \ | |||
ClassName::_set_state, \ | |||
ClassName::_dispatcher, \ | |||
ClassName::_render_inline_display, \ | |||
0, 0 | |||
0, 0, nullptr | |||
// -------------------------------------------------------------------------------------------------------------------- | |||
@@ -28,7 +28,7 @@ | |||
nullptr, nullptr, nullptr, nullptr, nullptr, \ | |||
nullptr, nullptr | |||
#define DESCFUNCS_WITHOUTCV \ | |||
DESCFUNCS_WITHCV, 0, 0 | |||
DESCFUNCS_WITHCV, 0, 0, nullptr | |||
static const NativePluginDescriptor sNativePluginDescriptors[] = { | |||
@@ -196,6 +196,7 @@ static const NativePluginDescriptor sNativePluginDescriptors[] = { | |||
DESCFUNCS_WITHCV, | |||
/* cvIns */ 0, | |||
/* cvOuts */ 3, | |||
/* bufnamefn */ nullptr | |||
}, | |||
{ | |||
/* category */ NATIVE_PLUGIN_CATEGORY_UTILITY, | |||
@@ -483,6 +484,7 @@ static const NativePluginDescriptor sNativePluginDescriptors[] = { | |||
DESCFUNCS_WITHCV, | |||
/* cvIns */ 5, | |||
/* cvOuts */ 5, | |||
/* bufnamefn */ nullptr | |||
}, | |||
#endif | |||
@@ -179,6 +179,27 @@ static void midi2cv_set_parameter_value(NativePluginHandle handle, uint32_t inde | |||
handlePtr->params[index] = value; | |||
} | |||
static const char* midi2cv_get_buffer_port_name(NativePluginHandle handle, uint32_t index, bool isOutput) | |||
{ | |||
if (! isOutput) | |||
return NULL; | |||
switch (index) | |||
{ | |||
case 0: | |||
return "Pitch"; | |||
case 1: | |||
return "Velocity"; | |||
case 2: | |||
return "Trigger"; | |||
default: | |||
return NULL; | |||
} | |||
// unused | |||
(void)handle; | |||
} | |||
static void midi2cv_activate(NativePluginHandle handle) | |||
{ | |||
panic(handlePtr); | |||
@@ -334,6 +355,8 @@ static const NativePluginDescriptor midi2cvDesc = { | |||
.set_midi_program = NULL, | |||
.set_custom_data = NULL, | |||
.get_buffer_port_name = midi2cv_get_buffer_port_name, | |||
.ui_show = NULL, | |||
.ui_idle = NULL, | |||