diff --git a/source/carla_host.py b/source/carla_host.py index caa6abd5a..320c7be28 100644 --- a/source/carla_host.py +++ b/source/carla_host.py @@ -2022,7 +2022,7 @@ def engineCallback(host, action, pluginId, value1, value2, value3, valueStr): elif action == ENGINE_CALLBACK_UI_STATE_CHANGED: host.UiStateChangedCallback.emit(pluginId, value1) elif action == ENGINE_CALLBACK_NOTE_ON: - host.NoteOnCallback.emit(pluginId, value1, value2, int(value3)) + host.NoteOnCallback.emit(pluginId, value1, value2, round(value3)) elif action == ENGINE_CALLBACK_NOTE_OFF: host.NoteOffCallback.emit(pluginId, value1, value2) elif action == ENGINE_CALLBACK_UPDATE: diff --git a/source/carla_skin.py b/source/carla_skin.py index f5dee8366..3ade3e5c6 100755 --- a/source/carla_skin.py +++ b/source/carla_skin.py @@ -258,8 +258,8 @@ class AbstractPluginSlot(QFrame, PluginEditParentMeta): audioCountInfo = host.get_audio_port_count_info(self.fPluginId) - self.fPeaksInputCount = int(audioCountInfo['ins']) - self.fPeaksOutputCount = int(audioCountInfo['outs']) + self.fPeaksInputCount = audioCountInfo['ins'] + self.fPeaksOutputCount = audioCountInfo['outs'] if self.fPeaksInputCount > 2: self.fPeaksInputCount = 2 @@ -1083,32 +1083,52 @@ class AbstractPluginSlot(QFrame, PluginEditParentMeta): current = sender.fRealValue label = sender.fLabel - if index in (PARAMETER_DRYWET, PARAMETER_VOLUME): - default = 1.0 - resetText = self.tr("Reset (%i%%)" % int(default*100.0)) - minimText = self.tr("Set to Minimum (%i%%)" % int(minimum*100.0)) - maximText = self.tr("Set to Maximum (%i%%)" % int(maximum*100.0)) + if index in (PARAMETER_NULL, PARAMETER_CTRL_CHANNEL) or index <= PARAMETER_MAX: + return + elif index in (PARAMETER_DRYWET, PARAMETER_VOLUME): + default = 1.0 + elif index == PARAMETER_BALANCE_LEFT: + default = -1.0 + elif index == PARAMETER_BALANCE_RIGHT: + default = 1.0 + elif index == PARAMETER_PANNING: + default = 0.0 + else: + default = self.host.get_default_parameter_value(self.fPluginId, index) + + if index < PARAMETER_NULL: + # show in integer percentage + textReset = self.tr("Reset (%i%%)" % round(default*100.0)) + textMinim = self.tr("Set to Minimum (%i%%)" % round(minimum*100.0)) + textMaxim = self.tr("Set to Maximum (%i%%)" % round(maximum*100.0)) else: - default = self.host.get_default_parameter_value(self.fPluginId, index) - resetText = self.tr("Reset (%f)" % default) - minimText = self.tr("Set to Minimum (%f)" % minimum) - maximText = self.tr("Set to Maximum (%f)" % maximum) + # show in full float value + textReset = self.tr("Reset (%f)" % default) + textMinim = self.tr("Set to Minimum (%f)" % minimum) + textMaxim = self.tr("Set to Maximum (%f)" % maximum) menu = QMenu(self) - actReset = menu.addAction(resetText) + actReset = menu.addAction(textReset) menu.addSeparator() - actMinimum = menu.addAction(minimText) - actMaximum = menu.addAction(maximText) + actMinimum = menu.addAction(textMinim) + actCenter = menu.addAction(self.tr("Set to Center")) + actMaximum = menu.addAction(textMaxim) menu.addSeparator() actSet = menu.addAction(self.tr("Set value...")) + if index > PARAMETER_NULL or index not in (PARAMETER_BALANCE_LEFT, PARAMETER_BALANCE_RIGHT, PARAMETER_PANNING): + menu.removeAction(actCenter) + actSelected = menu.exec_(QCursor.pos()) if actSelected == actSet: - valueTry = QInputDialog.getDouble(self, self.tr("Set value"), label, current, minimum, maximum, 3) # FIXME - 3 decimals - if valueTry[1]: - value = valueTry[0] * 10 + if index < PARAMETER_NULL: + value, ok = QInputDialog.getInteger(self, self.tr("Set value"), label, round(current*100), round(minimum*100), round(maximum*100), 1) + if ok: value = float(value)/100.0 else: + value, ok = QInputDialog.getDouble(self, self.tr("Set value"), label, current, minimum, maximum, 3) # FIXME - 3 decimals + + if not ok: return elif actSelected == actMinimum: @@ -1117,6 +1137,8 @@ class AbstractPluginSlot(QFrame, PluginEditParentMeta): value = maximum elif actSelected == actReset: value = default + elif actSelected == actCenter: + value = 0.0 else: return diff --git a/source/carla_widgets.py b/source/carla_widgets.py index 385b037c7..713fa371a 100755 --- a/source/carla_widgets.py +++ b/source/carla_widgets.py @@ -442,7 +442,7 @@ class PluginEdit(QDialog): self.fPluginInfo = None self.fCurrentStateFilename = None - self.fControlChannel = int(host.get_internal_parameter_value(pluginId, PARAMETER_CTRL_CHANNEL)) + self.fControlChannel = round(host.get_internal_parameter_value(pluginId, PARAMETER_CTRL_CHANNEL)) self.fFirstInit = True self.fParameterList = [] # (type, id, widget) @@ -673,7 +673,7 @@ class PluginEdit(QDialog): self.ui.dial_pan.setValue(self.host.get_internal_parameter_value(self.fPluginId, PARAMETER_PANNING)) self.ui.dial_pan.blockSignals(False) - self.fControlChannel = int(self.host.get_internal_parameter_value(self.fPluginId, PARAMETER_CTRL_CHANNEL)) + self.fControlChannel = round(self.host.get_internal_parameter_value(self.fPluginId, PARAMETER_CTRL_CHANNEL)) self.ui.sb_ctrl_channel.blockSignals(True) self.ui.sb_ctrl_channel.setValue(self.fControlChannel+1) self.ui.sb_ctrl_channel.blockSignals(False) @@ -1100,7 +1100,7 @@ class PluginEdit(QDialog): self.ui.dial_pan.blockSignals(False) elif index == PARAMETER_CTRL_CHANNEL: - self.fControlChannel = int(value) + self.fControlChannel = round(value) self.ui.sb_ctrl_channel.blockSignals(True) self.ui.sb_ctrl_channel.setValue(self.fControlChannel+1) self.ui.sb_ctrl_channel.blockSignals(False) @@ -1365,7 +1365,9 @@ class PluginEdit(QDialog): @pyqtSlot() def slot_knobCustomMenu(self): - knobName = self.sender().objectName() + sender = self.sender() + knobName = sender.objectName() + if knobName == "dial_drywet": minimum = 0.0 maximum = 1.0 @@ -1397,8 +1399,6 @@ class PluginEdit(QDialog): default = 0.5 label = "Unknown" - current = self.sender().value() / 10 - menu = QMenu(self) actReset = menu.addAction(self.tr("Reset (%i%%)" % (default*100))) menu.addSeparator() @@ -1414,10 +1414,11 @@ class PluginEdit(QDialog): actSelected = menu.exec_(QCursor.pos()) if actSelected == actSet: - valueTry = QInputDialog.getDouble(self, self.tr("Set value"), label, current, minimum, maximum, 3) - if valueTry[1]: - value = valueTry[0] * 10 - else: + current = minimum + (maximum-minimum)*(float(sender.value())/10000) + value, ok = QInputDialog.getInteger(self, self.tr("Set value"), label, round(current*100.0), round(minimum*100.0), round(maximum*100.0), 1) + if ok: value = float(value)/100.0 + + if not ok: return elif actSelected == actMinimum: