Browse Source

Show all possible parameters within limit, instead of none if >= limit

tags/1.9.6
falkTX 10 years ago
parent
commit
a845c5a295
4 changed files with 15 additions and 59 deletions
  1. +10
    -9
      source/backend/engine/CarlaEngineBridge.cpp
  2. +3
    -13
      source/backend/plugin/CarlaPluginBridge.cpp
  3. +1
    -36
      source/carla_widgets.py
  4. +1
    -1
      source/utils/CarlaBridgeUtils.hpp

+ 10
- 9
source/backend/engine/CarlaEngineBridge.cpp View File

@@ -605,21 +605,22 @@ public:
// kPluginBridgeNonRtServerParameter* // kPluginBridgeNonRtServerParameter*
if (const uint32_t count = plugin->getParameterCount()) if (const uint32_t count = plugin->getParameterCount())
{ {
uint32_t paramIns, paramOuts;
plugin->getParameterCountInfo(paramIns, paramOuts);

// uint/ins, uint/outs
// uint/count
fShmNonRtServerControl.writeOpcode(kPluginBridgeNonRtServerParameterCount); fShmNonRtServerControl.writeOpcode(kPluginBridgeNonRtServerParameterCount);
fShmNonRtServerControl.writeUInt(paramIns);
fShmNonRtServerControl.writeUInt(paramOuts);
fShmNonRtServerControl.writeUInt(count);
fShmNonRtServerControl.commitWrite(); fShmNonRtServerControl.commitWrite();


for (uint32_t i=0, maxParams=pData->options.maxParameters; i<count && i<maxParams; ++i)
for (uint32_t i=0; i<count; ++i)
{ {
const ParameterData& paramData(plugin->getParameterData(i));

if (paramData.type != PARAMETER_INPUT && paramData.type != PARAMETER_OUTPUT)
continue;
if ((paramData.hints & PARAMETER_IS_ENABLED) == 0)
continue;

// kPluginBridgeNonRtServerParameterData1 // kPluginBridgeNonRtServerParameterData1
{ {
const ParameterData& paramData(plugin->getParameterData(i));

// uint/index, int/rindex, uint/type, uint/hints, short/cc // uint/index, int/rindex, uint/type, uint/hints, short/cc
fShmNonRtServerControl.writeOpcode(kPluginBridgeNonRtServerParameterData1); fShmNonRtServerControl.writeOpcode(kPluginBridgeNonRtServerParameterData1);
fShmNonRtServerControl.writeUInt(i); fShmNonRtServerControl.writeUInt(i);


+ 3
- 13
source/backend/plugin/CarlaPluginBridge.cpp View File

@@ -1933,9 +1933,8 @@ public:
} break; } break;


case kPluginBridgeNonRtServerParameterCount: { case kPluginBridgeNonRtServerParameterCount: {
// uint/ins, uint/outs
const uint32_t ins = fShmNonRtServerControl.readUInt();
const uint32_t outs = fShmNonRtServerControl.readUInt();
// uint/count
const uint32_t count = fShmNonRtServerControl.readUInt();


// delete old data // delete old data
pData->param.clear(); pData->param.clear();
@@ -1946,17 +1945,8 @@ public:
fParams = nullptr; fParams = nullptr;
} }


if (uint32_t count = ins+outs)
if (count > 0)
{ {
const uint32_t maxParams(pData->engine->getOptions().maxParameters);

if (count > maxParams)
{
// this is expected right now, to be handled better later
//carla_safe_assert_int2("count <= pData->engine->getOptions().maxParameters", __FILE__, __LINE__, count, maxParams);
count = maxParams;
}

pData->param.createNew(count, false); pData->param.createNew(count, false);
fParams = new BridgeParamInfo[count]; fParams = new BridgeParamInfo[count];




+ 1
- 36
source/carla_widgets.py View File

@@ -777,41 +777,6 @@ class PluginEdit(QDialog):


# ----------------------------------------------------------------- # -----------------------------------------------------------------


if parameterCount > self.host.maxParameters:
fakeName = self.tr("This plugin has too many parameters to display here!")

paramFakeListFull = []
paramFakeList = []
paramFakeWidth = QFontMetrics(self.font()).width(fakeName)

parameter = {
'type': PARAMETER_UNKNOWN,
'hints': 0x0,
'name': fakeName,
'unit': "",
'scalePoints': [],

'index': 0,
'default': 0.0,
'minimum': 0.0,
'maximum': 1.0,
'step': 0.0,
'stepSmall': 0.0,
'stepLarge': 0.0,
'midiCC': -1,
'midiChannel': 1,

'current': 0.0
}

paramFakeList.append(parameter)
paramFakeListFull.append((paramFakeList, paramFakeWidth))

self._createParameterWidgets(PARAMETER_UNKNOWN, paramFakeListFull, self.tr("Information"))
return

# -----------------------------------------------------------------

paramInputList = [] paramInputList = []
paramOutputList = [] paramOutputList = []
paramInputWidth = 0 paramInputWidth = 0
@@ -820,7 +785,7 @@ class PluginEdit(QDialog):
paramInputListFull = [] # ([params], width) paramInputListFull = [] # ([params], width)
paramOutputListFull = [] # ([params], width) paramOutputListFull = [] # ([params], width)


for i in range(parameterCount):
for i in range(min(parameterCount, self.host.maxParameters)):
paramInfo = self.host.get_parameter_info(self.fPluginId, i) paramInfo = self.host.get_parameter_info(self.fPluginId, i)
paramData = self.host.get_parameter_data(self.fPluginId, i) paramData = self.host.get_parameter_data(self.fPluginId, i)
paramRanges = self.host.get_parameter_ranges(self.fPluginId, i) paramRanges = self.host.get_parameter_ranges(self.fPluginId, i)


+ 1
- 1
source/utils/CarlaBridgeUtils.hpp View File

@@ -79,7 +79,7 @@ enum PluginBridgeNonRtServerOpcode {
kPluginBridgeNonRtServerPluginInfo2, // uint/size, str[] (realName), uint/size, str[] (label), uint/size, str[] (maker), uint/size, str[] (copyright) kPluginBridgeNonRtServerPluginInfo2, // uint/size, str[] (realName), uint/size, str[] (label), uint/size, str[] (maker), uint/size, str[] (copyright)
kPluginBridgeNonRtServerAudioCount, // uint/ins, uint/outs kPluginBridgeNonRtServerAudioCount, // uint/ins, uint/outs
kPluginBridgeNonRtServerMidiCount, // uint/ins, uint/outs kPluginBridgeNonRtServerMidiCount, // uint/ins, uint/outs
kPluginBridgeNonRtServerParameterCount, // uint/ins, uint/outs
kPluginBridgeNonRtServerParameterCount, // uint/count
kPluginBridgeNonRtServerProgramCount, // uint/count kPluginBridgeNonRtServerProgramCount, // uint/count
kPluginBridgeNonRtServerMidiProgramCount, // uint/count kPluginBridgeNonRtServerMidiProgramCount, // uint/count
kPluginBridgeNonRtServerParameterData1, // uint/index, int/rindex, uint/type, uint/hints, short/cc kPluginBridgeNonRtServerParameterData1, // uint/index, int/rindex, uint/type, uint/hints, short/cc


Loading…
Cancel
Save