diff --git a/c++/carla-backend/carla_native.cpp b/c++/carla-backend/carla_native.cpp index e13fe7c..bfe2262 100644 --- a/c++/carla-backend/carla_native.cpp +++ b/c++/carla-backend/carla_native.cpp @@ -371,8 +371,8 @@ public: { fixParameterValue(value, param.ranges[parameterId]); - descriptor->set_parameter_value(handle, parameterId, value); - if (h2) descriptor->set_parameter_value(h2, parameterId, value); + descriptor->set_parameter_value(handle, param.data[parameterId].rindex, value); + if (h2) descriptor->set_parameter_value(h2, param.data[parameterId].rindex, value); } CarlaPlugin::setParameterValue(parameterId, value, sendGui, sendOsc, sendCallback); diff --git a/c++/carla-backend/plugins/carla_nativemm.h b/c++/carla-backend/plugins/carla_nativemm.h index 27c3836..791f63e 100644 --- a/c++/carla-backend/plugins/carla_nativemm.h +++ b/c++/carla-backend/plugins/carla_nativemm.h @@ -176,7 +176,7 @@ protected: return nullptr; } - virtual void getParameterRanges(uint32_t index, ParameterRanges* ranges) + virtual void getParameterRanges(uint32_t index, ParameterRanges* const ranges) { CARLA_ASSERT(index < getPortCount()); CARLA_ASSERT(ranges); @@ -400,6 +400,9 @@ private: port->type = getPortType(i); port->hints = getPortHints(i); port->name = getPortName(i); + + port->scalePointCount = 0; + port->scalePoints = nullptr; } } } @@ -407,7 +410,17 @@ private: void _handleFini() { if (desc.portCount > 0 && desc.ports) + { + for (uint32_t i=0; i < desc.portCount; i++) + { + PluginPort* const port = &desc.ports[i]; + + if (port->scalePointCount > 0 && port->scalePoints) + delete[] port->scalePoints; + } + delete[] desc.ports; + } desc.portCount = 0; desc.ports = nullptr;