From 1cb8f934d476ae0df60f37ebd71120eaa3b84777 Mon Sep 17 00:00:00 2001 From: falkTX Date: Fri, 28 Sep 2012 14:27:49 +0100 Subject: [PATCH] Carla/Control: Implement & fix parameter midi-cc/channel --- src/carla.py | 29 +++++++++++++++++++++++------ src/carla_control.py | 1 - src/shared_carla.py | 8 ++++---- 3 files changed, 27 insertions(+), 11 deletions(-) diff --git a/src/carla.py b/src/carla.py index 423b952..6bab527 100755 --- a/src/carla.py +++ b/src/carla.py @@ -1082,8 +1082,8 @@ class CarlaAboutW(QDialog, ui_carla_about.Ui_CarlaAboutW): " /set_balance_left \n" " /set_balance_right \n" " /set_parameter_value \n" - #" /set_parameter_midi_cc \n" - #" /set_parameter_midi_channel \n" + " /set_parameter_midi_cc \n" + " /set_parameter_midi_channel \n" " /set_program \n" " /set_midi_program \n" " /note_on \n" @@ -1202,7 +1202,9 @@ class CarlaMainW(QMainWindow, ui_carla.Ui_CarlaMainW): self.connect(self, SIGNAL("SIGUSR1()"), SLOT("slot_handleSIGUSR1()")) self.connect(self, SIGNAL("DebugCallback(int, int, int, double)"), SLOT("slot_handleDebugCallback(int, int, int, double)")) - self.connect(self, SIGNAL("ParameterCallback(int, int, double)"), SLOT("slot_handleParameterCallback(int, int, double)")) + self.connect(self, SIGNAL("ParameterValueCallback(int, int, double)"), SLOT("slot_handleParameterValueCallback(int, int, double)")) + self.connect(self, SIGNAL("ParameterMidiChannelCallback(int, int, int)"), SLOT("slot_handleParameterMidiChannelCallback(int, int, int)")) + self.connect(self, SIGNAL("ParameterMidiCcCallback(int, int, int)"), SLOT("slot_handleParameterMidiCcCallback(int, int, int)")) self.connect(self, SIGNAL("ProgramCallback(int, int)"), SLOT("slot_handleProgramCallback(int, int)")) self.connect(self, SIGNAL("MidiProgramCallback(int, int)"), SLOT("slot_handleMidiProgramCallback(int, int)")) self.connect(self, SIGNAL("NoteOnCallback(int, int, int, int)"), SLOT("slot_handleNoteOnCallback(int, int, int, int)")) @@ -1350,7 +1352,7 @@ class CarlaMainW(QMainWindow, ui_carla.Ui_CarlaMainW): print("DEBUG :: %i, %i, %i, %f)" % (plugin_id, value1, value2, value3)) @pyqtSlot(int, int, float) - def slot_handleParameterCallback(self, pluginId, parameterId, value): + def slot_handleParameterValueCallback(self, pluginId, parameterId, value): pwidget = self.m_plugin_list[pluginId] if pwidget: pwidget.m_parameterIconTimer = ICON_STATE_ON @@ -1368,6 +1370,18 @@ class CarlaMainW(QMainWindow, ui_carla.Ui_CarlaMainW): elif parameterId >= 0: pwidget.edit_dialog.set_parameter_to_update(parameterId) + @pyqtSlot(int, int, int) + def slot_handleParameterMidiChannelCallback(self, pluginId, parameterId, channel): + pwidget = self.m_plugin_list[pluginId] + if pwidget: + pwidget.edit_dialog.set_parameter_midi_channel(parameterId, channel, True) + + @pyqtSlot(int, int, int) + def slot_handleParameterMidiCcCallback(self, pluginId, parameterId, cc): + pwidget = self.m_plugin_list[pluginId] + if pwidget: + pwidget.edit_dialog.set_parameter_midi_cc(parameterId, cc, True) + @pyqtSlot(int, int) def slot_handleProgramCallback(self, plugin_id, program_id): pwidget = self.m_plugin_list[plugin_id] @@ -2017,8 +2031,11 @@ def callback_function(ptr, action, pluginId, value1, value2, value3): if action == CALLBACK_DEBUG: Carla.gui.emit(SIGNAL("DebugCallback(int, int, int, double)"), pluginId, value1, value2, value3) elif action == CALLBACK_PARAMETER_VALUE_CHANGED: - Carla.gui.emit(SIGNAL("ParameterCallback(int, int, double)"), pluginId, value1, value3) - # TODO param midi callbacks + Carla.gui.emit(SIGNAL("ParameterValueCallback(int, int, double)"), pluginId, value1, value3) + elif action == CALLBACK_PARAMETER_MIDI_CHANNEL_CHANGED: + Carla.gui.emit(SIGNAL("ParameterMidiChannelCallback(int, int, int)"), pluginId, value1, value2) + elif action == CALLBACK_PARAMETER_MIDI_CC_CHANGED: + Carla.gui.emit(SIGNAL("ParameterMidiCcCallback(int, int, int)"), pluginId, value1, value2) elif action == CALLBACK_PROGRAM_CHANGED: Carla.gui.emit(SIGNAL("ProgramCallback(int, int)"), pluginId, value1) elif action == CALLBACK_MIDI_PROGRAM_CHANGED: diff --git a/src/carla_control.py b/src/carla_control.py index 7f13ede..bb217a7 100755 --- a/src/carla_control.py +++ b/src/carla_control.py @@ -745,7 +745,6 @@ class CarlaControlW(QMainWindow, ui_carla_control.Ui_CarlaControlW): @pyqtSlot(int, int, int) def slot_handleSetParameterMidiChannel(self, pluginId, index, channel): - channel += 1 Carla.Host._set_parameterMidiChannel(pluginId, index, channel) pwidget = self.m_plugin_list[pluginId] diff --git a/src/shared_carla.py b/src/shared_carla.py index e6e58bb..c05b7c9 100644 --- a/src/shared_carla.py +++ b/src/shared_carla.py @@ -511,8 +511,8 @@ class PluginParameter(QWidget, ui_carla_parameter.Ui_PluginParameter): self.set_MIDI_CC_in_ComboBox(cc) def set_parameter_midi_channel(self, channel): - self.m_midiChannel = channel - self.sb_channel.setValue(channel) + self.m_midiChannel = channel+1 + self.sb_channel.setValue(channel+1) def add_MIDI_CCs_to_ComboBox(self): for MIDI_CC in MIDI_CC_LIST: @@ -1121,7 +1121,7 @@ class PluginEdit(QDialog, ui_carla_edit.Ui_PluginEdit): @pyqtSlot(int, int) def slot_parameterMidiChannelChanged(self, parameter_id, channel): - Carla.Host.set_parameter_midi_channel(self.m_pluginId, parameter_id, channel) + Carla.Host.set_parameter_midi_channel(self.m_pluginId, parameter_id, channel-1) @pyqtSlot(int, int) def slot_parameterMidiCcChanged(self, parameter_id, cc_index): @@ -1799,7 +1799,7 @@ class PluginWidget(QFrame, ui_carla_plugin.Ui_PluginWidget): Carla.Host.set_parameter_value(self.m_pluginId, index, parameter['value']) Carla.Host.set_parameter_midi_cc(self.m_pluginId, index, parameter['midiCC']) - Carla.Host.set_parameter_midi_channel(self.m_pluginId, index, parameter['midiChannel']) + Carla.Host.set_parameter_midi_channel(self.m_pluginId, index, parameter['midiChannel']-1) else: print("Could not set parameter data for '%s')" % parameter['name'])