Browse Source

Make the new keyboard/canvas features work in main Carla

tags/1.9.4
falkTX 11 years ago
parent
commit
614ea1f966
2 changed files with 31 additions and 21 deletions
  1. +5
    -1
      source/carla
  2. +26
    -20
      source/carla_patchbay.py

+ 5
- 1
source/carla View File

@@ -36,7 +36,7 @@ class CarlaMultiW(QTabWidget):
QTabWidget.__init__(self, parent)

self.fRack = CarlaRackW(parent, False)
self.fPatchbay = CarlaPatchbayW(parent, False)
self.fPatchbay = CarlaPatchbayW(parent, False, False)
self.fParent = parent
self.fUseCustomPaint = False

@@ -74,7 +74,9 @@ class CarlaMultiW(QTabWidget):
parent.MidiProgramChangedCallback.connect(self.fRack.slot_handleMidiProgramChangedCallback)
parent.UiStateChangedCallback.connect(self.fRack.slot_handleUiStateChangedCallback)
parent.NoteOnCallback.connect(self.fRack.slot_handleNoteOnCallback)
parent.NoteOnCallback.connect(self.fPatchbay.slot_handleNoteOnCallback)
parent.NoteOffCallback.connect(self.fRack.slot_handleNoteOffCallback)
parent.NoteOffCallback.connect(self.fPatchbay.slot_handleNoteOffCallback)
parent.UpdateCallback.connect(self.fRack.slot_handleUpdateCallback)
parent.ReloadInfoCallback.connect(self.fRack.slot_handleReloadInfoCallback)
parent.ReloadParametersCallback.connect(self.fRack.slot_handleReloadParametersCallback)
@@ -100,9 +102,11 @@ class CarlaMultiW(QTabWidget):

def addPlugin(self, pluginId, isProjectLoading):
self.fRack.addPlugin(pluginId, isProjectLoading)
self.fPatchbay.addPlugin(pluginId, isProjectLoading)

def removePlugin(self, pluginId):
self.fRack.removePlugin(pluginId)
self.fPatchbay.removePlugin(pluginId)

def renamePlugin(self, pluginId, newName):
self.fRack.renamePlugin(pluginId, newName)


+ 26
- 20
source/carla_patchbay.py View File

@@ -49,7 +49,7 @@ CARLA_DEFAULT_CANVAS_SIZE_HEIGHT = 2400
# Patchbay widget

class CarlaPatchbayW(QFrame):
def __init__(self, parent, doSetup = True):
def __init__(self, parent, doSetup = True, onlyPatchbay = True):
QFrame.__init__(self, parent)

self.fLayout = QVBoxLayout(self)
@@ -69,6 +69,8 @@ class CarlaPatchbayW(QFrame):
self.fParent = parent
self.fPluginCount = 0
self.fPluginList = []

self.fIsOnlyPatchbay = onlyPatchbay
self.fSelectedPlugins = []

self.fCanvasWidth = 0
@@ -165,6 +167,10 @@ class CarlaPatchbayW(QFrame):
# -----------------------------------------------------------------

def addPlugin(self, pluginId, isProjectLoading):
if not self.fIsOnlyPatchbay:
self.fPluginCount += 1
return

pitem = PluginEdit(self, pluginId)

self.fPluginList.append(pitem)
@@ -174,6 +180,10 @@ class CarlaPatchbayW(QFrame):
Carla.host.set_active(pluginId, True)

def removePlugin(self, pluginId):
if not self.fIsOnlyPatchbay:
self.fPluginCount -= 1
return

if pluginId >= self.fPluginCount:
return

@@ -564,6 +574,11 @@ class CarlaPatchbayW(QFrame):

@pyqtSlot(int, int, int, int)
def slot_handleNoteOnCallback(self, pluginId, channel, note, velo):
if pluginId in self.fSelectedPlugins:
self.fKeys.keyboard.sendNoteOn(note, False)

if not self.fIsOnlyPatchbay:
return
if pluginId >= self.fPluginCount:
return

@@ -573,11 +588,13 @@ class CarlaPatchbayW(QFrame):

pitem.sendNoteOn(channel, note)

if pluginId in self.fSelectedPlugins:
self.fKeys.keyboard.sendNoteOn(note, False)

@pyqtSlot(int, int, int)
def slot_handleNoteOffCallback(self, pluginId, channel, note):
if pluginId in self.fSelectedPlugins:
self.fKeys.keyboard.sendNoteOff(note, False)

if not self.fIsOnlyPatchbay:
return
if pluginId >= self.fPluginCount:
return

@@ -587,9 +604,6 @@ class CarlaPatchbayW(QFrame):

pitem.sendNoteOff(channel, note)

if pluginId in self.fSelectedPlugins:
self.fKeys.keyboard.sendNoteOff(note, False)

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

@pyqtSlot(int)
@@ -671,15 +685,11 @@ class CarlaPatchbayW(QFrame):

if pluginId < 0:
return
if pluginId >= self.getPluginCount():
print("sorry, can't map this plugin to canvas client", pluginId, self.getPluginCount())
return

pitem = self.fPluginList[pluginId]
if pitem is None:
if pluginId >= self.fPluginCount:
print("sorry, can't map this plugin to canvas client", pluginId, self.fPluginCount)
return

patchcanvas.setGroupAsPlugin(clientId, pluginId, bool(pitem.fPluginInfo['hints'] & PLUGIN_HAS_CUSTOM_UI))
patchcanvas.setGroupAsPlugin(clientId, pluginId, bool(Carla.host.get_plugin_info(pluginId)['hints'] & PLUGIN_HAS_CUSTOM_UI))

@pyqtSlot(int)
def slot_handlePatchbayClientRemovedCallback(self, clientId):
@@ -712,15 +722,11 @@ class CarlaPatchbayW(QFrame):

if pluginId < 0:
return
if pluginId >= self.getPluginCount():
if pluginId >= self.fPluginCount:
print("sorry, can't map this plugin to canvas client", pluginId, self.getPluginCount())
return

pitem = self.fPluginList[pluginId]
if pitem is None:
return

patchcanvas.setGroupAsPlugin(clientId, pluginId, bool(pitem.fPluginInfo['hints'] & PLUGIN_HAS_CUSTOM_UI))
patchcanvas.setGroupAsPlugin(clientId, pluginId, bool(Carla.host.get_plugin_info(pluginId)['hints'] & PLUGIN_HAS_CUSTOM_UI))

@pyqtSlot(int, int, int, str)
def slot_handlePatchbayPortAddedCallback(self, clientId, portId, portFlags, portName):


Loading…
Cancel
Save