Browse Source

Set cv port range when mapped range changes

tags/v2.1-rc1
falkTX 5 years ago
parent
commit
84dc3c69f0
5 changed files with 36 additions and 3 deletions
  1. +6
    -1
      source/backend/CarlaEngine.hpp
  2. +4
    -0
      source/backend/engine/CarlaEngineClient.cpp
  3. +20
    -1
      source/backend/engine/CarlaEnginePorts.cpp
  4. +4
    -1
      source/backend/plugin/CarlaPlugin.cpp
  5. +2
    -0
      source/backend/plugin/CarlaPluginInternal.cpp

+ 6
- 1
source/backend/CarlaEngine.hpp View File

@@ -646,7 +646,12 @@ public:
/*!
* Remove a CV port as a source of events.
*/
bool removeCVSource(uint32_t portIndexOffset) noexcept;
bool removeCVSource(uint32_t portIndexOffset);

/*!
* Set value range for a CV port.
*/
bool setCVSourceRange(uint32_t portIndexOffset, float minimum, float maximum);

/*!
* Get events and add them to an event port.


+ 4
- 0
source/backend/engine/CarlaEngineClient.cpp View File

@@ -132,6 +132,10 @@ CarlaEnginePort* CarlaEngineClient::addPort(const EnginePortType portType, const
#ifndef BUILD_BRIDGE_ALTERNATIVE_ARCH
CarlaEngineCVSourcePorts* CarlaEngineClient::createCVSourcePorts()
{
// AudioProcessorGraph::Node* const oldNode(graph.getNodeForId(oldPlugin->getPatchbayNodeId()));
// CARLA_SAFE_ASSERT_RETURN(oldNode != nullptr,);
// pData->engine.pData->graph;

return new CarlaEngineCVSourcePorts();
}
#endif


+ 20
- 1
source/backend/engine/CarlaEnginePorts.cpp View File

@@ -380,7 +380,7 @@ bool CarlaEngineCVSourcePorts::addCVSource(CarlaEngineCVPort* const port, const
return true;
}

bool CarlaEngineCVSourcePorts::removeCVSource(const uint32_t portIndexOffset) noexcept
bool CarlaEngineCVSourcePorts::removeCVSource(const uint32_t portIndexOffset)
{
carla_debug("CarlaEngineCVSourcePorts::removeCVSource(%u)", portIndexOffset);

@@ -406,6 +406,25 @@ bool CarlaEngineCVSourcePorts::removeCVSource(const uint32_t portIndexOffset) no
return true;
}

bool CarlaEngineCVSourcePorts::setCVSourceRange(const uint32_t portIndexOffset, const float minimum, const float maximum)
{
const CarlaRecursiveMutexLocker crml(pData->rmutex);

for (int i = pData->cvs.size(); --i >= 0;)
{
CarlaEngineEventCV& ecv(pData->cvs.getReference(i));

if (ecv.indexOffset == portIndexOffset)
{
CARLA_SAFE_ASSERT_RETURN(ecv.cvPort != nullptr, false);
ecv.cvPort->setRange(minimum, maximum);
return true;
}
}

return false;
}

void CarlaEngineCVSourcePorts::initPortBuffers(const float* const* const buffers,
const uint32_t frames,
const bool sampleAccurate,


+ 4
- 1
source/backend/plugin/CarlaPlugin.cpp View File

@@ -1723,7 +1723,7 @@ void CarlaPlugin::setParameterMappedControlIndex(const uint32_t parameterId, con

CarlaEngineCVPort* const cvPort =
(CarlaEngineCVPort*)pData->client->addPort(kEnginePortTypeCV, strBuf, true, parameterId);
cvPort->setRange(pData->param.ranges[parameterId].min, pData->param.ranges[parameterId].max);
cvPort->setRange(pData->param.data[parameterId].mappedMinimum, pData->param.data[parameterId].mappedMaximum);
pData->event.cvSourcePorts->addCVSource(cvPort, parameterId);
}
else if (pData->param.data[parameterId].mappedControlIndex == CONTROL_INDEX_CV)
@@ -1761,6 +1761,9 @@ void CarlaPlugin::setParameterMappedRange(const uint32_t parameterId, const floa
pData->param.data[parameterId].mappedMinimum = minimum;
pData->param.data[parameterId].mappedMaximum = maximum;

if (pData->event.cvSourcePorts != nullptr && pData->param.data[parameterId].mappedControlIndex == CONTROL_INDEX_CV)
pData->event.cvSourcePorts->setCVSourceRange(parameterId, minimum, maximum);

char strBuf[STR_MAX+1];
carla_zeroChars(strBuf, STR_MAX+1);
std::snprintf(strBuf, STR_MAX, "%.12g:%.12g", static_cast<double>(minimum), static_cast<double>(maximum));


+ 2
- 0
source/backend/plugin/CarlaPluginInternal.cpp View File

@@ -223,6 +223,8 @@ void PluginParameterData::createNew(const uint32_t newCount, const bool withSpec
data[i].index = PARAMETER_NULL;
data[i].rindex = PARAMETER_NULL;
data[i].mappedControlIndex = CONTROL_INDEX_NONE;
data[i].mappedMinimum = -1.0f;
data[i].mappedMaximum = 1.0f;
}

ranges = new ParameterRanges[newCount];


Loading…
Cancel
Save