Browse Source

Start to get rid of global host object in UI

tags/1.9.5
falkTX 10 years ago
parent
commit
93bb134021
6 changed files with 108 additions and 126 deletions
  1. +8
    -0
      source/carla_backend.py
  2. +2
    -2
      source/carla_host.py
  3. +2
    -2
      source/carla_patchbay.py
  4. +1
    -1
      source/carla_shared.py
  5. +1
    -1
      source/carla_skin.py
  6. +94
    -120
      source/carla_widgets.py

+ 8
- 0
source/carla_backend.py View File

@@ -1240,6 +1240,11 @@ else:
#class CarlaHostMeta(object):
class CarlaHostMeta(metaclass=ABCMeta):
def __init__(self):
# info about this host object
self.isControl = False
self.isPlugin = False

# use _putenv on windows
if not WINDOWS:
self.msvcrt = None
return
@@ -2718,6 +2723,9 @@ class CarlaHostPlugin(CarlaHostMeta, metaclass=ABCMeta):
def __init__(self):
CarlaHostMeta.__init__(self)

# info about this host object
self.isPlugin = True

# text data to return when requested
self.fCompleteLicentText = ""
self.fJuceVersion = ""


+ 2
- 2
source/carla_host.py View File

@@ -1030,11 +1030,11 @@ class HostWindow(QMainWindow):

@pyqtSlot()
def slot_aboutCarla(self):
CarlaAboutW(self).exec_()
CarlaAboutW(self, gCarla.host).exec_()

@pyqtSlot()
def slot_aboutJuce(self):
JuceAboutW(self).exec_()
JuceAboutW(self, gCarla.host).exec_()

@pyqtSlot()
def slot_aboutQt(self):


+ 2
- 2
source/carla_patchbay.py View File

@@ -254,9 +254,9 @@ class CarlaPatchbayW(QFrame, PluginEditParentMeta, metaclass=PyQtMetaClass):

def addPlugin(self, pluginId, isProjectLoading):
if self.fIsOnlyPatchbay:
pitem = PluginEdit(self, pluginId)
pitem = PluginEdit(self, gCarla.host, pluginId)
else:
pitem = PluginInfo(self, pluginId)
pitem = PluginInfo(self, gCarla.host, pluginId)

self.fPluginList.append(pitem)
self.fPluginCount += 1


+ 1
- 1
source/carla_shared.py View File

@@ -231,7 +231,7 @@ CARLA_KEY_CUSTOM_PAINTING = "UseCustomPainting" # bool
# Carla Settings defaults

# Main
CARLA_DEFAULT_MAIN_PROJECT_FOLDER = QDir.homePath()
CARLA_DEFAULT_MAIN_PROJECT_FOLDER = HOME
CARLA_DEFAULT_MAIN_USE_PRO_THEME = True
CARLA_DEFAULT_MAIN_PRO_THEME_COLOR = "Black"
CARLA_DEFAULT_MAIN_REFRESH_INTERVAL = 20


+ 1
- 1
source/carla_skin.py View File

@@ -90,7 +90,7 @@ class AbstractPluginSlot(QFrame, PluginEditParentMeta, metaclass=PyQtMetaClass):
# -------------------------------------------------------------
# Set-up GUI

self.fEditDialog = PluginEdit(self, self.fPluginId)
self.fEditDialog = PluginEdit(self, gCarla.host, self.fPluginId)

# -------------------------------------------------------------
# Set-up common widgets (as none)


+ 94
- 120
source/carla_widgets.py View File

@@ -100,14 +100,18 @@ gFakePortCountInfo = {
# Carla About dialog

class CarlaAboutW(QDialog):
def __init__(self, parent):
def __init__(self, parent, host):
QDialog.__init__(self, parent)
self.ui = ui_carla_about.Ui_CarlaAboutW()
self.ui.setupUi(self)

if gCarla.isControl:
if False:
# kdevelop likes this :)
host = CarlaHostMeta()

if host.isControl:
extraInfo = " - <b>%s</b>" % self.tr("OSC Bridge Version")
elif gCarla.isPlugin:
elif host.isPlugin:
extraInfo = " - <b>%s</b>" % self.tr("Plugin Version")
else:
extraInfo = ""
@@ -118,17 +122,17 @@ class CarlaAboutW(QDialog):
"<br>Copyright (C) 2011-2014 falkTX<br>"
"" % (VERSION, extraInfo)))

if gCarla.isControl or gCarla.isPlugin or gCarla.host is None:
if host.isControl or host.isPlugin:
self.ui.l_extended.hide()
self.ui.tabWidget.removeTab(1)
self.ui.tabWidget.removeTab(1)

else:
self.ui.l_extended.setText(gCarla.host.get_complete_license_text())
self.ui.l_extended.setText(host.get_complete_license_text())

if gCarla.host.is_engine_running():
self.ui.le_osc_url_tcp.setText(gCarla.host.get_host_osc_url_tcp())
self.ui.le_osc_url_udp.setText(gCarla.host.get_host_osc_url_udp())
if host.is_engine_running():
self.ui.le_osc_url_tcp.setText(host.get_host_osc_url_tcp())
self.ui.le_osc_url_udp.setText(host.get_host_osc_url_udp())
else:
self.ui.le_osc_url_tcp.setText(self.tr("(Engine not running)"))
self.ui.le_osc_url_udp.setText(self.tr("(Engine not running)"))
@@ -203,12 +207,16 @@ class CarlaAboutW(QDialog):
# JUCE About dialog

class JuceAboutW(QDialog):
def __init__(self, parent):
def __init__(self, parent, host):
QDialog.__init__(self, parent)
self.ui = ui_carla_about_juce.Ui_JuceAboutW()
self.ui.setupUi(self)

self.ui.l_text2.setText(self.tr("This program uses JUCE version %s." % (gCarla.host.get_juce_version() if gCarla.host is not None else "3.0")))
if False:
# kdevelop likes this :)
host = CarlaHostMeta()

self.ui.l_text2.setText(self.tr("This program uses JUCE version %s." % host.get_juce_version()))

self.adjustSize()
self.setFixedSize(self.size())
@@ -228,11 +236,16 @@ class PluginParameter(QWidget):
midiChannelChanged = pyqtSignal(int, int)
valueChanged = pyqtSignal(int, float)

def __init__(self, parent, pInfo, pluginId, tabIndex):
def __init__(self, parent, host, pInfo, pluginId, tabIndex):
QWidget.__init__(self, parent)
self.host = host
self.ui = ui_carla_parameter.Ui_PluginParameter()
self.ui.setupUi(self)

if False:
# kdevelop likes this :)
host = CarlaHostMeta()

# -------------------------------------------------------------
# Internal stuff

@@ -284,7 +297,7 @@ class PluginParameter(QWidget):
self.ui.sb_control.setVisible(False)
self.ui.sb_channel.setVisible(False)

if pHints & PARAMETER_USES_CUSTOM_TEXT and not gCarla.isPlugin:
if pHints & PARAMETER_USES_CUSTOM_TEXT and not host.isPlugin:
self.ui.widget.setTextCallback(self._textCallBack)

self.ui.widget.updateAll()
@@ -393,7 +406,7 @@ class PluginParameter(QWidget):
self.valueChanged.emit(self.fParameterId, value)

def _textCallBack(self):
return gCarla.host.get_parameter_text(self.fPluginId, self.fParameterId)
return self.host.get_parameter_text(self.fPluginId, self.fParameterId)

# ------------------------------------------------------------------------------------------------------------
# Plugin Editor Parent (Meta class)
@@ -434,13 +447,15 @@ class PluginEditParentMeta(metaclass=ABCMeta):
class PluginEdit(QDialog):
kParamsPerPage = 8

def __init__(self, parent, pluginId):
def __init__(self, parent, host, pluginId):
QDialog.__init__(self, parent.window() if parent is not None else None)
self.host = host
self.ui = ui_carla_edit.Ui_PluginEdit()
self.ui.setupUi(self)

if False:
parent = PluginEditParentMeta()
host = CarlaHostMeta()

# -------------------------------------------------------------
# Internal stuff
@@ -453,7 +468,7 @@ class PluginEdit(QDialog):
self.fCurrentProgram = -1
self.fCurrentMidiProgram = -1
self.fCurrentStateFilename = None
self.fControlChannel = int(gCarla.host.get_internal_parameter_value(pluginId, PARAMETER_CTRL_CHANNEL)) if gCarla.host is not None else 0
self.fControlChannel = int(host.get_internal_parameter_value(pluginId, PARAMETER_CTRL_CHANNEL))
self.fFirstInit = True

self.fParameterCount = 0
@@ -500,18 +515,11 @@ class PluginEdit(QDialog):
self.ui.dial_pan.setMinimum(-1.0)
self.ui.dial_pan.setMaximum(1.0)

if gCarla.host is not None:
self.ui.dial_drywet.setValue(gCarla.host.get_internal_parameter_value(pluginId, PARAMETER_DRYWET))
self.ui.dial_vol.setValue(gCarla.host.get_internal_parameter_value(pluginId, PARAMETER_VOLUME))
self.ui.dial_b_left.setValue(gCarla.host.get_internal_parameter_value(pluginId, PARAMETER_BALANCE_LEFT))
self.ui.dial_b_right.setValue(gCarla.host.get_internal_parameter_value(pluginId, PARAMETER_BALANCE_RIGHT))
self.ui.dial_pan.setValue(gCarla.host.get_internal_parameter_value(pluginId, PARAMETER_PANNING))
else:
self.ui.dial_drywet.setValue(1.0)
self.ui.dial_vol.setValue(1.0)
self.ui.dial_b_left.setValue(-1.0)
self.ui.dial_b_right.setValue(1.0)
self.ui.dial_pan.setValue(0.0)
self.ui.dial_drywet.setValue(host.get_internal_parameter_value(pluginId, PARAMETER_DRYWET))
self.ui.dial_vol.setValue(host.get_internal_parameter_value(pluginId, PARAMETER_VOLUME))
self.ui.dial_b_left.setValue(host.get_internal_parameter_value(pluginId, PARAMETER_BALANCE_LEFT))
self.ui.dial_b_right.setValue(host.get_internal_parameter_value(pluginId, PARAMETER_BALANCE_RIGHT))
self.ui.dial_pan.setValue(host.get_internal_parameter_value(pluginId, PARAMETER_PANNING))

self.ui.sb_ctrl_channel.setValue(self.fControlChannel+1)

@@ -563,12 +571,8 @@ class PluginEdit(QDialog):
self.ui.cb_programs.currentIndexChanged.connect(self.slot_programIndexChanged)
self.ui.cb_midi_programs.currentIndexChanged.connect(self.slot_midiProgramIndexChanged)

if gCarla.isLocal:
self.ui.b_save_state.clicked.connect(self.slot_stateSave)
self.ui.b_load_state.clicked.connect(self.slot_stateLoad)
else:
self.ui.b_load_state.setEnabled(False)
self.ui.b_save_state.setEnabled(False)
self.ui.b_save_state.clicked.connect(self.slot_stateSave)
self.ui.b_load_state.clicked.connect(self.slot_stateLoad)

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

@@ -576,14 +580,14 @@ class PluginEdit(QDialog):
# Update current program text
if self.ui.cb_programs.count() > 0:
pIndex = self.ui.cb_programs.currentIndex()
pName = gCarla.host.get_program_name(self.fPluginId, pIndex)
pName = self.host.get_program_name(self.fPluginId, pIndex)
#pName = pName[:40] + (pName[40:] and "...")
self.ui.cb_programs.setItemText(pIndex, pName)

# Update current midi program text
if self.ui.cb_midi_programs.count() > 0:
mpIndex = self.ui.cb_midi_programs.currentIndex()
mpData = gCarla.host.get_midi_program_data(self.fPluginId, mpIndex)
mpData = self.host.get_midi_program_data(self.fPluginId, mpIndex)
mpBank = mpData['bank']
mpProg = mpData['program']
mpName = mpData['name']
@@ -592,7 +596,7 @@ class PluginEdit(QDialog):

# Update all parameter values
for paramType, paramId, paramWidget in self.fParameterList:
paramWidget.setValue(gCarla.host.get_current_parameter_value(self.fPluginId, paramId), False)
paramWidget.setValue(self.host.get_current_parameter_value(self.fPluginId, paramId), False)
paramWidget.update()

self.fParametersToUpdate = []
@@ -600,14 +604,7 @@ class PluginEdit(QDialog):
#------------------------------------------------------------------

def reloadAll(self):
if gCarla.host is not None:
self.fPluginInfo = gCarla.host.get_plugin_info(self.fPluginId)

if not gCarla.isLocal:
self.fPluginInfo['hints'] &= ~PLUGIN_HAS_CUSTOM_UI

else:
self.fPluginInfo = gFakePluginInfo
self.fPluginInfo = self.host.get_plugin_info(self.fPluginId)

self.reloadInfo()
self.reloadParameters()
@@ -632,16 +629,10 @@ class PluginEdit(QDialog):
#------------------------------------------------------------------

def reloadInfo(self):
if gCarla.host is not None:
pluginName = gCarla.host.get_real_plugin_name(self.fPluginId)
#audioCountInfo = gCarla.host.get_audio_port_count_info(self.fPluginId)
midiCountInfo = gCarla.host.get_midi_port_count_info(self.fPluginId)
#paramCountInfo = gCarla.host.get_parameter_count_info(self.fPluginId)
else:
pluginName = ""
#audioCountInfo = gFakePortCountInfo
midiCountInfo = gFakePortCountInfo
#paramCountInfo = gFakePortCountInfo
pluginName = self.host.get_real_plugin_name(self.fPluginId)
#audioCountInfo = self.host.get_audio_port_count_info(self.fPluginId)
midiCountInfo = self.host.get_midi_port_count_info(self.fPluginId)
#paramCountInfo = self.host.get_parameter_count_info(self.fPluginId)

pluginHints = self.fPluginInfo['hints']

@@ -755,18 +746,7 @@ class PluginEdit(QDialog):
self.ui.tabWidget.widget(1).deleteLater()
self.ui.tabWidget.removeTab(1)

if gCarla.host is None:
paramFakeListFull = []
paramFakeList = []
paramFakeWidth = QFontMetrics(self.font()).width(gFakeParamInfo['name'])

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

self._createParameterWidgets(PARAMETER_INPUT, paramFakeListFull, self.tr("Parameters"))
return

parameterCount = gCarla.host.get_parameter_count(self.fPluginId)
parameterCount = self.host.get_parameter_count(self.fPluginId)

if parameterCount <= 0:
pass
@@ -781,10 +761,10 @@ class PluginEdit(QDialog):
paramOutputWidth = 0

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

if paramData['type'] not in (PARAMETER_INPUT, PARAMETER_OUTPUT):
continue
@@ -812,7 +792,7 @@ class PluginEdit(QDialog):
}

for j in range(paramInfo['scalePointCount']):
scalePointInfo = gCarla.host.get_parameter_scalepoint_info(self.fPluginId, i, j)
scalePointInfo = self.host.get_parameter_scalepoint_info(self.fPluginId, i, j)

parameter['scalePoints'].append({
'value': scalePointInfo['value'],
@@ -902,18 +882,18 @@ class PluginEdit(QDialog):
self.ui.cb_programs.blockSignals(True)
self.ui.cb_programs.clear()

programCount = gCarla.host.get_program_count(self.fPluginId) if gCarla.host is not None else 0
programCount = self.host.get_program_count(self.fPluginId)

if programCount > 0:
self.ui.cb_programs.setEnabled(True)
self.ui.label_programs.setEnabled(True)

for i in range(programCount):
pName = gCarla.host.get_program_name(self.fPluginId, i)
pName = self.host.get_program_name(self.fPluginId, i)
#pName = pName[:40] + (pName[40:] and "...")
self.ui.cb_programs.addItem(pName)

self.fCurrentProgram = gCarla.host.get_current_program_index(self.fPluginId)
self.fCurrentProgram = self.host.get_current_program_index(self.fPluginId)
self.ui.cb_programs.setCurrentIndex(self.fCurrentProgram)

else:
@@ -927,14 +907,14 @@ class PluginEdit(QDialog):
self.ui.cb_midi_programs.blockSignals(True)
self.ui.cb_midi_programs.clear()

midiProgramCount = gCarla.host.get_midi_program_count(self.fPluginId) if gCarla.host is not None else 0
midiProgramCount = self.host.get_midi_program_count(self.fPluginId)

if midiProgramCount > 0:
self.ui.cb_midi_programs.setEnabled(True)
self.ui.label_midi_programs.setEnabled(True)

for i in range(midiProgramCount):
mpData = gCarla.host.get_midi_program_data(self.fPluginId, i)
mpData = self.host.get_midi_program_data(self.fPluginId, i)
mpBank = mpData['bank']
mpProg = mpData['program']
mpName = mpData['name']
@@ -942,7 +922,7 @@ class PluginEdit(QDialog):

self.ui.cb_midi_programs.addItem("%03i:%03i - %s" % (mpBank+1, mpProg+1, mpName))

self.fCurrentMidiProgram = gCarla.host.get_current_midi_program_index(self.fPluginId)
self.fCurrentMidiProgram = self.host.get_current_midi_program_index(self.fPluginId)
self.ui.cb_midi_programs.setCurrentIndex(self.fCurrentMidiProgram)

else:
@@ -1146,7 +1126,7 @@ class PluginEdit(QDialog):
# Update parameter outputs
for paramType, paramId, paramWidget in self.fParameterList:
if paramType == PARAMETER_OUTPUT:
value = gCarla.host.get_current_parameter_value(self.fPluginId, paramId)
value = self.host.get_current_parameter_value(self.fPluginId, paramId)
paramWidget.setValue(value, False)

#------------------------------------------------------------------
@@ -1161,7 +1141,7 @@ class PluginEdit(QDialog):
askTry = QMessageBox.question(self, self.tr("Overwrite?"), self.tr("Overwrite previously created file?"), QMessageBox.Ok|QMessageBox.Cancel)

if askTry == QMessageBox.Ok:
gCarla.host.save_plugin_state(self.fPluginId, self.fCurrentStateFilename)
self.host.save_plugin_state(self.fPluginId, self.fCurrentStateFilename)
return

self.fCurrentStateFilename = None
@@ -1178,22 +1158,22 @@ class PluginEdit(QDialog):
filename += ".carxs"

self.fCurrentStateFilename = filename
gCarla.host.save_plugin_state(self.fPluginId, self.fCurrentStateFilename)
self.host.save_plugin_state(self.fPluginId, self.fCurrentStateFilename)

@pyqtSlot()
def slot_stateLoad(self):
if self.fPluginInfo['type'] == PLUGIN_LV2:
presetList = []

for i in range(gCarla.host.get_program_count(self.fPluginId)):
presetList.append("%03i - %s" % (i+1, gCarla.host.get_program_name(self.fPluginId, i)))
for i in range(self.host.get_program_count(self.fPluginId)):
presetList.append("%03i - %s" % (i+1, self.host.get_program_name(self.fPluginId, i)))

ret = QInputDialog.getItem(self, self.tr("Open LV2 Preset"), self.tr("Select an LV2 Preset:"), presetList, 0, False)

if ret[1]:
index = int(ret[0].split(" - ", 1)[0])-1
gCarla.host.set_midi_program(self.fPluginId, -1)
gCarla.host.set_program(self.fPluginId, index)
self.host.set_midi_program(self.fPluginId, -1)
self.host.set_program(self.fPluginId, index)
self.setMidiProgram(-1)

return
@@ -1207,15 +1187,12 @@ class PluginEdit(QDialog):
return

self.fCurrentStateFilename = filename
gCarla.host.load_plugin_state(self.fPluginId, self.fCurrentStateFilename)
self.host.load_plugin_state(self.fPluginId, self.fCurrentStateFilename)

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

@pyqtSlot(bool)
def slot_optionChanged(self, clicked):
if gCarla.host is None:
return

sender = self.sender()

if sender == self.ui.ch_fixed_buffer:
@@ -1239,51 +1216,49 @@ class PluginEdit(QDialog):
else:
return

gCarla.host.set_option(self.fPluginId, option, clicked)
self.host.set_option(self.fPluginId, option, clicked)

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

@pyqtSlot(int)
def slot_dryWetChanged(self, value):
if gCarla.host is not None:
gCarla.host.set_drywet(self.fPluginId, value)
self.host.set_drywet(self.fPluginId, value)
if self.fRealParent is not None:
self.fRealParent.parameterValueChanged(PARAMETER_DRYWET, value)

@pyqtSlot(int)
def slot_volumeChanged(self, value):
if gCarla.host is not None:
gCarla.host.set_volume(self.fPluginId, value)
self.host.set_volume(self.fPluginId, value)
if self.fRealParent is not None:
self.fRealParent.parameterValueChanged(PARAMETER_VOLUME, value)

@pyqtSlot(int)
def slot_balanceLeftChanged(self, value):
if gCarla.host is not None:
gCarla.host.set_balance_left(self.fPluginId, value)
self.host.set_balance_left(self.fPluginId, value)
if self.fRealParent is not None:
self.fRealParent.parameterValueChanged(PARAMETER_BALANCE_LEFT, value)

@pyqtSlot(int)
def slot_balanceRightChanged(self, value):
if gCarla.host is not None:
gCarla.host.set_balance_right(self.fPluginId, value)
self.host.set_balance_right(self.fPluginId, value)
if self.fRealParent is not None:
self.fRealParent.parameterValueChanged(PARAMETER_BALANCE_RIGHT, value)

@pyqtSlot(int)
def slot_panChanged(self, value):
if gCarla.host is not None:
gCarla.host.set_panning(self.fPluginId, value)
self.host.set_panning(self.fPluginId, value)
if self.fRealParent is not None:
self.fRealParent.parameterValueChanged(PARAMETER_PANNING, value)

@pyqtSlot(int)
def slot_ctrlChannelChanged(self, value):
self.fControlChannel = value-1

if gCarla.host is not None:
gCarla.host.set_ctrl_channel(self.fPluginId, self.fControlChannel)
self.host.set_ctrl_channel(self.fPluginId, self.fControlChannel)

self.ui.keyboard.allNotesOff()
self._updateCtrlPrograms()
@@ -1292,38 +1267,34 @@ class PluginEdit(QDialog):

@pyqtSlot(int, float)
def slot_parameterValueChanged(self, parameterId, value):
if gCarla.host is not None:
gCarla.host.set_parameter_value(self.fPluginId, parameterId, value)
self.host.set_parameter_value(self.fPluginId, parameterId, value)
if self.fRealParent is not None:
self.fRealParent.parameterValueChanged(parameterId, value)

@pyqtSlot(int, int)
def slot_parameterMidiControlChanged(self, parameterId, control):
if gCarla.host is not None:
gCarla.host.set_parameter_midi_cc(self.fPluginId, parameterId, control)
self.host.set_parameter_midi_cc(self.fPluginId, parameterId, control)

@pyqtSlot(int, int)
def slot_parameterMidiChannelChanged(self, parameterId, channel):
if gCarla.host is not None:
gCarla.host.set_parameter_midi_channel(self.fPluginId, parameterId, channel-1)
self.host.set_parameter_midi_channel(self.fPluginId, parameterId, channel-1)

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

@pyqtSlot(int)
def slot_programIndexChanged(self, index):
self.fCurrentProgram = index
self.host.set_program(self.fPluginId, index)

if gCarla.host is not None:
gCarla.host.set_program(self.fPluginId, index)
if self.fRealParent is not None:
self.fRealParent.programChanged(index)

@pyqtSlot(int)
def slot_midiProgramIndexChanged(self, index):
self.fCurrentMidiProgram = index
self.host.set_midi_program(self.fPluginId, index)

if gCarla.host is not None:
gCarla.host.set_midi_program(self.fPluginId, index)
if self.fRealParent is not None:
self.fRealParent.midiProgramChanged(index)

@@ -1331,15 +1302,17 @@ class PluginEdit(QDialog):

@pyqtSlot(int)
def slot_noteOn(self, note):
if self.fControlChannel >= 0 and gCarla.host is not None:
gCarla.host.send_midi_note(self.fPluginId, self.fControlChannel, note, 100)
if self.fControlChannel >= 0:
self.host.send_midi_note(self.fPluginId, self.fControlChannel, note, 100)

if self.fRealParent is not None:
self.fRealParent.notePressed(note)

@pyqtSlot(int)
def slot_noteOff(self, note):
if self.fControlChannel >= 0 and gCarla.host is not None:
gCarla.host.send_midi_note(self.fPluginId, self.fControlChannel, note, 0)
if self.fControlChannel >= 0:
self.host.send_midi_note(self.fPluginId, self.fControlChannel, note, 0)

if self.fRealParent is not None:
self.fRealParent.noteReleased(note)

@@ -1465,7 +1438,7 @@ class PluginEdit(QDialog):
tabPageContainer.setLayout(tabPageLayout)

for paramInfo in paramList:
paramWidget = PluginParameter(tabPageContainer, paramInfo, self.fPluginId, tabIndex)
paramWidget = PluginParameter(tabPageContainer, self.host, paramInfo, self.fPluginId, tabIndex)
paramWidget.setLabelWidth(width)
tabPageLayout.addWidget(paramWidget)

@@ -1499,12 +1472,12 @@ class PluginEdit(QDialog):
self.ui.cb_programs.setEnabled(True)
self.ui.cb_midi_programs.setEnabled(True)

pIndex = gCarla.host.get_current_program_index(self.fPluginId)
pIndex = self.host.get_current_program_index(self.fPluginId)

if self.ui.cb_programs.currentIndex() != pIndex:
self.setProgram(pIndex)

mpIndex = gCarla.host.get_current_midi_program_index(self.fPluginId)
mpIndex = self.host.get_current_midi_program_index(self.fPluginId)

if self.ui.cb_midi_programs.currentIndex() != mpIndex:
self.setMidiProgram(mpIndex)
@@ -1522,6 +1495,7 @@ if __name__ == '__main__':
from carla_app import CarlaApplication

app = CarlaApplication()
host = CarlaHostNull()

#gui1 = CarlaAboutW(None)
#gui1.show()
@@ -1529,7 +1503,7 @@ if __name__ == '__main__':
#gui2 = PluginParameter(None, gFakeParamInfo, 0, 0)
#gui2.show()

gui3 = PluginEdit(None, 0)
gui3 = PluginEdit(None, host, 0)
gui3.show()

app.exit_exec()

Loading…
Cancel
Save