From 2118653bd3634aaf00f784a1f710d38d0d8f1125 Mon Sep 17 00:00:00 2001 From: falkTX Date: Tue, 25 Sep 2012 18:58:10 +0100 Subject: [PATCH] Carla-Control: Fix parameter&program sort issues (use indexes now) --- src/carla_control.py | 82 +++++++++++++++++++++++++++++--------------- 1 file changed, 54 insertions(+), 28 deletions(-) diff --git a/src/carla_control.py b/src/carla_control.py index dd9766d..249148e 100755 --- a/src/carla_control.py +++ b/src/carla_control.py @@ -163,19 +163,49 @@ class Host(object): def _set_parameterCountInfo(self, index, info): self.pluginInfo[index].parameterCountInfo = info + # clear + self.pluginInfo[index].parameterInfoS = [] + self.pluginInfo[index].parameterDataS = [] + self.pluginInfo[index].parameterRangeS = [] + self.pluginInfo[index].parameterValueS = [] + + # add placeholders + for x in range(info['total']): + self.pluginInfo[index].parameterInfoS.append(ParameterInfo) + self.pluginInfo[index].parameterDataS.append(ParameterData) + self.pluginInfo[index].parameterRangeS.append(ParameterRanges) + self.pluginInfo[index].parameterValueS.append(0.0) + def _set_programCount(self, index, count): self.pluginInfo[index].programCount = count + # clear + self.pluginInfo[index].programNameS = [] + + # add placeholders + for x in range(count): + self.pluginInfo[index].programNameS.append(None) + def _set_midiProgramCount(self, index, count): self.pluginInfo[index].midiProgramCount = count - def _set_inPeak(self, index, port, value): - self.pluginInfo[index].inPeak[port] = value + # clear + self.pluginInfo[index].midiProgramDataS = [] - def _set_outPeak(self, index, port, value): - self.pluginInfo[index].outPeak[port] = value + # add placeholders + for x in range(count): + self.pluginInfo[index].midiProgramDataS.append(midi_program_t) + + def _set_parameterInfoS(self, index, paramIndex, data): + self.pluginInfo[index].parameterInfoS[paramIndex] = data - def _set_parameterValue(self, index, paramIndex, value): + def _set_parameterDataS(self, index, paramIndex, data): + self.pluginInfo[index].parameterDataS[paramIndex] = data + + def _set_parameterRangeS(self, index, paramIndex, data): + self.pluginInfo[index].parameterRangeS[paramIndex] = data + + def _set_parameterValueS(self, index, paramIndex, value): self.pluginInfo[index].parameterValueS[paramIndex] = value def _set_parameterDefaultValue(self, index, paramIndex, value): @@ -193,23 +223,17 @@ class Host(object): def _set_currentMidiProgram(self, index, mpIndex): self.pluginInfo[index].midiProgramCurrent = mpIndex - def _append_parameterInfoS(self, index, data): - self.pluginInfo[index].parameterInfoS.append(data) - - def _append_parameterDataS(self, index, data): - self.pluginInfo[index].parameterDataS.append(data) + def _set_programNameS(self, index, pIndex, data): + self.pluginInfo[index].programNameS[pIndex] = data - def _append_parameterRangeS(self, index, data): - self.pluginInfo[index].parameterRangeS.append(data) + def _set_midiProgramDataS(self, index, mpIndex, data): + self.pluginInfo[index].midiProgramDataS[mpIndex] = data - def _append_parameterValueS(self, index, value): - self.pluginInfo[index].parameterValueS.append(value) - - def _append_programNameS(self, index, data): - self.pluginInfo[index].programNameS.append(data) + def _set_inPeak(self, index, port, value): + self.pluginInfo[index].inPeak[port] = value - def _append_midiProgramDataS(self, index, data): - self.pluginInfo[index].midiProgramDataS.append(data) + def _set_outPeak(self, index, port, value): + self.pluginInfo[index].outPeak[port] = value def get_plugin_info(self, plugin_id): return self.pluginInfo[plugin_id].pluginInfo @@ -685,9 +709,9 @@ class CarlaControlW(QMainWindow, ui_carla_control.Ui_CarlaControlW): info['name'] = name info['label'] = label - Carla.Host._append_parameterDataS(pluginId, data) - Carla.Host._append_parameterInfoS(pluginId, info) - Carla.Host._append_parameterValueS(pluginId, current) + Carla.Host._set_parameterDataS(pluginId, index, data) + Carla.Host._set_parameterInfoS(pluginId, index, info) + Carla.Host._set_parameterValueS(pluginId, index, current) @pyqtSlot(int, int, float, float, float, float, float, float) def slot_handleSetParameterRanges(self, pluginId, index, min_, max_, def_, step, stepSmall, stepLarge): @@ -699,7 +723,7 @@ class CarlaControlW(QMainWindow, ui_carla_control.Ui_CarlaControlW): ranges['stepSmall'] = stepSmall ranges['stepLarge'] = stepLarge - Carla.Host._append_parameterRangeS(pluginId, ranges) + Carla.Host._set_parameterRangeS(pluginId, index, ranges) @pyqtSlot(int, int, int) def slot_handleSetParameterMidiCC(self, pluginId, index, cc): @@ -720,6 +744,9 @@ class CarlaControlW(QMainWindow, ui_carla_control.Ui_CarlaControlW): @pyqtSlot(int, int, float) def slot_handleSetParameterValue(self, pluginId, parameterId, value): + if parameterId >= 0: + Carla.Host._set_parameterValueS(pluginId, parameterId, value) + pwidget = self.m_plugin_list[pluginId] if pwidget: if parameterId < PARAMETER_NULL: @@ -742,7 +769,6 @@ class CarlaControlW(QMainWindow, ui_carla_control.Ui_CarlaControlW): elif parameterId == PARAMETER_BALANCE_RIGHT: pwidget.set_balance_right(value * 1000, True, False) elif parameterId >= 0: - Carla.Host._set_parameterValue(pluginId, parameterId, value) pwidget.edit_dialog.set_parameter_to_update(parameterId) @pyqtSlot(int, int, float) @@ -767,7 +793,7 @@ class CarlaControlW(QMainWindow, ui_carla_control.Ui_CarlaControlW): @pyqtSlot(int, int, str) def slot_handleSetProgramName(self, pluginId, index, name): - Carla.Host._append_programNameS(pluginId, name) + Carla.Host._set_programNameS(pluginId, index, name) @pyqtSlot(int, int) def slot_handleSetMidiProgram(self, pluginId, index): @@ -784,10 +810,10 @@ class CarlaControlW(QMainWindow, ui_carla_control.Ui_CarlaControlW): @pyqtSlot(int, int, int, int, str) def slot_handleSetMidiProgramData(self, pluginId, index, bank, program, name): data = deepcopy(midi_program_t) - data['bank'] = bank + data['bank'] = bank data['program'] = program - data['label'] = name - Carla.Host._append_midiProgramDataS(pluginId, data) + data['label'] = name + Carla.Host._set_midiProgramDataS(pluginId, index, data) @pyqtSlot(int, int, float) def slot_handleSetInputPeakValue(self, pluginId, portId, value):