Browse Source

Make it possible to run some python code as standalone

tags/1.9.4
falkTX 11 years ago
parent
commit
cbad5c04ed
6 changed files with 326 additions and 229 deletions
  1. +5
    -11
      source/carla-mini
  2. +53
    -38
      source/carla_database.py
  3. +3
    -60
      source/carla_host.py
  4. +39
    -20
      source/carla_settings.py
  5. +206
    -89
      source/carla_shared.py
  6. +20
    -11
      source/carla_widgets.py

+ 5
- 11
source/carla-mini View File

@@ -31,7 +31,7 @@ except:

from carla_host import *
from carla_rack import CarlaRackW
#from carla_patchbay import CarlaPatchbayW
from carla_patchbay import CarlaPatchbayW

# ------------------------------------------------------------------------------------------------------------
# Main Window
@@ -40,8 +40,8 @@ class CarlaMiniW(HostWindow):
def __init__(self, parent=None):
HostWindow.__init__(self, parent)

self.fContainer = CarlaRackW(self)
#self.fContainer = CarlaPatchbayW(self)
#self.fContainer = CarlaRackW(self)
self.fContainer = CarlaPatchbayW(self)
self.setCentralWidget(self.fContainer)

Carla.host.engine_init("JACK", "Carla")
@@ -55,7 +55,7 @@ class CarlaMiniW(HostWindow):
HostWindow.closeEvent(self, event)

# ------------------------------------------------------------------------------------------------------------
# --------------- main ------------------
# Main

if __name__ == '__main__':
# App initialization
@@ -65,15 +65,9 @@ if __name__ == '__main__':
app.setOrganizationName("falkTX")
app.setWindowIcon(QIcon(":/scalable/carla.svg"))

libName = carla_library_filename
libPath = os.path.join(carla_library_filename.replace(carla_libname, ""), "..", "modules", "carla_native", "resources")

# Init backend
print("libName:", libName, ":", carla_libname)
Carla.host = Host(libName)
initHost()

Carla.host.set_engine_option(OPTION_PROCESS_NAME, 0, "carla")
Carla.host.set_engine_option(OPTION_PATH_RESOURCES, 0, libPath)

# Create GUI and start engine
Carla.gui = CarlaMiniW()


+ 53
- 38
source/carla_database.py View File

@@ -350,7 +350,7 @@ class SearchPluginsThread(QThread):
self.fCheckSF2 = False
self.fCheckSFZ = False

self.fToolNative = carla_discovery_native
self.fToolNative = Carla.discovery_native

self.fCurCount = 0
self.fCurPercentValue = 0
@@ -365,6 +365,8 @@ class SearchPluginsThread(QThread):
self.fCsoundPlugins = []
self.fKitPlugins = []

print(Carla.discovery_native)

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

def hasSomethingChanged(self):
@@ -466,25 +468,25 @@ class SearchPluginsThread(QThread):
if not self.fContinueChecking: return

if self.fCheckPosix32:
self._checkLADSPA(OS, carla_discovery_posix32)
self._checkLADSPA(OS, Carla.discovery_posix32)
settingsDB.setValue("Plugins/LADSPA_posix32", self.fLadspaPlugins)

if not self.fContinueChecking: return

if self.fCheckPosix64:
self._checkLADSPA(OS, carla_discovery_posix64)
self._checkLADSPA(OS, Carla.discovery_posix64)
settingsDB.setValue("Plugins/LADSPA_posix64", self.fLadspaPlugins)

if not self.fContinueChecking: return

if self.fCheckWin32:
self._checkLADSPA("WINDOWS", carla_discovery_win32, not WINDOWS)
self._checkLADSPA("WINDOWS", Carla.discovery_win32, not WINDOWS)
settingsDB.setValue("Plugins/LADSPA_win32", self.fLadspaPlugins)

if not self.fContinueChecking: return

if self.fCheckWin64:
self._checkLADSPA("WINDOWS", carla_discovery_win64, not WINDOWS)
self._checkLADSPA("WINDOWS", Carla.discovery_win64, not WINDOWS)
settingsDB.setValue("Plugins/LADSPA_win64", self.fLadspaPlugins)

settingsDB.sync()
@@ -512,25 +514,25 @@ class SearchPluginsThread(QThread):
if not self.fContinueChecking: return

if self.fCheckPosix32:
self._checkDSSI(OS, carla_discovery_posix32)
self._checkDSSI(OS, Carla.discovery_posix32)
settingsDB.setValue("Plugins/DSSI_posix32", self.fDssiPlugins)

if not self.fContinueChecking: return

if self.fCheckPosix64:
self._checkDSSI(OS, carla_discovery_posix64)
self._checkDSSI(OS, Carla.discovery_posix64)
settingsDB.setValue("Plugins/DSSI_posix64", self.fDssiPlugins)

if not self.fContinueChecking: return

if self.fCheckWin32:
self._checkDSSI("WINDOWS", carla_discovery_win32, not WINDOWS)
self._checkDSSI("WINDOWS", Carla.discovery_win32, not WINDOWS)
settingsDB.setValue("Plugins/DSSI_win32", self.fDssiPlugins)

if not self.fContinueChecking: return

if self.fCheckWin64:
self._checkDSSI("WINDOWS", carla_discovery_win64, not WINDOWS)
self._checkDSSI("WINDOWS", Carla.discovery_win64, not WINDOWS)
settingsDB.setValue("Plugins/DSSI_win64", self.fDssiPlugins)

settingsDB.sync()
@@ -545,25 +547,25 @@ class SearchPluginsThread(QThread):
if not self.fContinueChecking: return

if self.fCheckPosix32:
self._checkLV2(carla_discovery_posix32)
self._checkLV2(Carla.discovery_posix32)
settingsDB.setValue("Plugins/LV2_posix32", self.fLv2Plugins)

if not self.fContinueChecking: return

if self.fCheckPosix64:
self._checkLV2(carla_discovery_posix64)
self._checkLV2(Carla.discovery_posix64)
settingsDB.setValue("Plugins/LV2_posix64", self.fLv2Plugins)

if not self.fContinueChecking: return

if self.fCheckWin32:
self._checkLV2(carla_discovery_win32, not WINDOWS)
self._checkLV2(Carla.discovery_win32, not WINDOWS)
settingsDB.setValue("Plugins/LV2_win32", self.fLv2Plugins)

if not self.fContinueChecking: return

if self.fCheckWin64:
self._checkLV2(carla_discovery_win64, not WINDOWS)
self._checkLV2(Carla.discovery_win64, not WINDOWS)
settingsDB.setValue("Plugins/LV2_win64", self.fLv2Plugins)

settingsDB.sync()
@@ -578,25 +580,25 @@ class SearchPluginsThread(QThread):
if not self.fContinueChecking: return

if self.fCheckPosix32:
self._checkVST(OS, carla_discovery_posix32)
self._checkVST(OS, Carla.discovery_posix32)
settingsDB.setValue("Plugins/VST_posix32", self.fVstPlugins)

if not self.fContinueChecking: return

if self.fCheckPosix64:
self._checkVST(OS, carla_discovery_posix64)
self._checkVST(OS, Carla.discovery_posix64)
settingsDB.setValue("Plugins/VST_posix64", self.fVstPlugins)

if not self.fContinueChecking: return

if self.fCheckWin32:
self._checkVST("WINDOWS", carla_discovery_win32, not WINDOWS)
self._checkVST("WINDOWS", Carla.discovery_win32, not WINDOWS)
settingsDB.setValue("Plugins/VST_win32", self.fVstPlugins)

if not self.fContinueChecking: return

if self.fCheckWin64:
self._checkVST("WINDOWS", carla_discovery_win64, not WINDOWS)
self._checkVST("WINDOWS", Carla.discovery_win64, not WINDOWS)
settingsDB.setValue("Plugins/VST_win64", self.fVstPlugins)

settingsDB.sync()
@@ -611,13 +613,13 @@ class SearchPluginsThread(QThread):
if not self.fContinueChecking: return

if self.fCheckPosix32:
self._checkAU(carla_discovery_posix32)
self._checkAU(Carla.discovery_posix32)
settingsDB.setValue("Plugins/AU_posix32", self.fAuPlugins)

if not self.fContinueChecking: return

if self.fCheckPosix64:
self._checkAU(carla_discovery_posix64)
self._checkAU(Carla.discovery_posix64)
settingsDB.setValue("Plugins/AU_posix64", self.fAuPlugins)

settingsDB.sync()
@@ -939,28 +941,28 @@ class PluginRefreshW(QDialog):
self.ui.ch_posix32.setText("MacOS 32bit")
self.ui.ch_posix64.setText("MacOS 64bit")

if carla_discovery_posix32 and not WINDOWS:
if Carla.discovery_posix32 and not WINDOWS:
self.ui.ico_posix32.setPixmap(self.fIconYes)
else:
self.ui.ico_posix32.setPixmap(self.fIconNo)
self.ui.ch_posix32.setChecked(False)
self.ui.ch_posix32.setEnabled(False)

if carla_discovery_posix64 and not WINDOWS:
if Carla.discovery_posix64 and not WINDOWS:
self.ui.ico_posix64.setPixmap(self.fIconYes)
else:
self.ui.ico_posix64.setPixmap(self.fIconNo)
self.ui.ch_posix64.setChecked(False)
self.ui.ch_posix64.setEnabled(False)

if carla_discovery_win32:
if Carla.discovery_win32:
self.ui.ico_win32.setPixmap(self.fIconYes)
else:
self.ui.ico_win32.setPixmap(self.fIconNo)
self.ui.ch_win32.setChecked(False)
self.ui.ch_win32.setEnabled(False)

if carla_discovery_win64:
if Carla.discovery_win64:
self.ui.ico_win64.setPixmap(self.fIconYes)
else:
self.ui.ico_win64.setPixmap(self.fIconNo)
@@ -972,35 +974,35 @@ class PluginRefreshW(QDialog):
else:
self.ui.ico_rdflib.setPixmap(self.fIconNo)

hasNative = bool(carla_discovery_native)
hasNative = bool(Carla.discovery_native)
hasNonNative = False

if WINDOWS:
if kIs64bit:
hasNative = bool(carla_discovery_win64)
hasNonNative = bool(carla_discovery_win32)
self.fThread.setSearchToolNative(carla_discovery_win64)
hasNative = bool(Carla.discovery_win64)
hasNonNative = bool(Carla.discovery_win32)
self.fThread.setSearchToolNative(Carla.discovery_win64)
self.ui.ch_win64.setChecked(False)
self.ui.ch_win64.setVisible(False)
self.ui.ico_win64.setVisible(False)
self.ui.label_win64.setVisible(False)
else:
hasNative = bool(carla_discovery_win32)
hasNonNative = bool(carla_discovery_win64)
self.fThread.setSearchToolNative(carla_discovery_win32)
hasNative = bool(Carla.discovery_win32)
hasNonNative = bool(Carla.discovery_win64)
self.fThread.setSearchToolNative(Carla.discovery_win32)
self.ui.ch_win32.setChecked(False)
self.ui.ch_win32.setVisible(False)
self.ui.ico_win32.setVisible(False)
self.ui.label_win32.setVisible(False)
elif LINUX or MACOS:
if kIs64bit:
hasNonNative = bool(carla_discovery_posix32 or carla_discovery_win32 or carla_discovery_win64)
hasNonNative = bool(Carla.discovery_posix32 or Carla.discovery_win32 or Carla.discovery_win64)
self.ui.ch_posix64.setChecked(False)
self.ui.ch_posix64.setVisible(False)
self.ui.ico_posix64.setVisible(False)
self.ui.label_posix64.setVisible(False)
else:
hasNonNative = bool(carla_discovery_posix64 or carla_discovery_win32 or carla_discovery_win64)
hasNonNative = bool(Carla.discovery_posix64 or Carla.discovery_win32 or Carla.discovery_win64)
self.ui.ch_posix32.setChecked(False)
self.ui.ch_posix32.setVisible(False)
self.ui.ico_posix32.setVisible(False)
@@ -1662,10 +1664,23 @@ class PluginDatabaseW(QDialog):
self.close()

# ------------------------------------------------------------------------------------------------------------
# TESTING
# Main

if __name__ == '__main__':
try:
from PyQt5.QtWidgets import QApplication
except:
from PyQt4.QtGui import QApplication

app = QApplication(sys.argv)
app.setApplicationName("Carla")
app.setApplicationVersion(VERSION)
app.setOrganizationName("falkTX")
app.setWindowIcon(QIcon(":/scalable/carla.svg"))

initHost(False)

gui = PluginDatabaseW(None)
gui.show()

#from PyQt5.QtWidgets import QApplication
#app = QApplication(sys.argv)
#gui = PluginDatabaseW(None)
#gui.show()
#app.exec_()
sys.exit(app.exec_())

+ 3
- 60
source/carla_host.py View File

@@ -198,70 +198,15 @@ class HostWindow(QMainWindow):
self.ui = ui_carla_host.Ui_CarlaHostW()
self.ui.setupUi(self)

# -------------------------------------------------------------
# Set bridge paths

if carla_bridge_native:
Carla.host.set_engine_option(OPTION_PATH_BRIDGE_NATIVE, 0, carla_bridge_native)

if carla_bridge_posix32:
Carla.host.set_engine_option(OPTION_PATH_BRIDGE_POSIX32, 0, carla_bridge_posix32)

if carla_bridge_posix64:
Carla.host.set_engine_option(OPTION_PATH_BRIDGE_POSIX64, 0, carla_bridge_posix64)

if carla_bridge_win32:
Carla.host.set_engine_option(OPTION_PATH_BRIDGE_WIN32, 0, carla_bridge_win32)

if carla_bridge_win64:
Carla.host.set_engine_option(OPTION_PATH_BRIDGE_WIN64, 0, carla_bridge_win64)

if carla_bridge_lv2_external:
Carla.host.set_engine_option(OPTION_PATH_BRIDGE_LV2_EXTERNAL, 0, carla_bridge_lv2_external)

if WINDOWS:
if carla_bridge_lv2_windows:
Carla.host.set_engine_option(OPTION_PATH_BRIDGE_LV2_WINDOWS, 0, carla_bridge_lv2_windows)

if carla_bridge_vst_hwnd:
Carla.host.set_engine_option(OPTION_PATH_BRIDGE_VST_HWND, 0, carla_bridge_vst_hwnd)

elif MACOS:
if carla_bridge_lv2_cocoa:
Carla.host.set_engine_option(OPTION_PATH_BRIDGE_LV2_COCOA, 0, carla_bridge_lv2_cocoa)

if carla_bridge_vst_mac:
Carla.host.set_engine_option(OPTION_PATH_BRIDGE_VST_MAC, 0, carla_bridge_vst_mac)

else:
if carla_bridge_lv2_gtk2:
Carla.host.set_engine_option(OPTION_PATH_BRIDGE_LV2_GTK2, 0, carla_bridge_lv2_gtk2)

if carla_bridge_lv2_gtk3:
Carla.host.set_engine_option(OPTION_PATH_BRIDGE_LV2_GTK3, 0, carla_bridge_lv2_gtk3)

if carla_bridge_lv2_qt4:
Carla.host.set_engine_option(OPTION_PATH_BRIDGE_LV2_QT4, 0, carla_bridge_lv2_qt4)

if carla_bridge_lv2_qt5:
Carla.host.set_engine_option(OPTION_PATH_BRIDGE_LV2_QT5, 0, carla_bridge_lv2_qt5)

if carla_bridge_lv2_x11:
Carla.host.set_engine_option(OPTION_PATH_BRIDGE_LV2_X11, 0, carla_bridge_lv2_x11)

if carla_bridge_vst_x11:
Carla.host.set_engine_option(OPTION_PATH_BRIDGE_VST_X11, 0, carla_bridge_vst_x11)
if False:
Carla.gui = self
self.fContainer = CarlaDummyW(self)

# -------------------------------------------------------------
# Set callback

Carla.host.set_engine_callback(EngineCallback)

# -------------------------------------------------------------
# Set custom signal handling

setUpSignals()

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

@@ -272,8 +217,6 @@ class HostWindow(QMainWindow):
self.fLadspaRdfNeedsUpdate = True
self.fLadspaRdfList = []

self.fContainer = CarlaDummyW(self)

# -------------------------------------------------------------
# Connect actions to functions



+ 39
- 20
source/carla_settings.py View File

@@ -31,11 +31,11 @@ except:
# ------------------------------------------------------------------------------------------------------------
# Imports (Custom)

#import patchcanvas
import ui_carla_settings
import ui_carla_settings_driver

from carla_shared import *
from patchcanvas_theme import *

# ------------------------------------------------------------------------------------------------------------
# Carla defaults
@@ -70,6 +70,12 @@ else:
CARLA_DEFAULT_PROCESS_MODE = PROCESS_MODE_CONTINUOUS_RACK
CARLA_DEFAULT_TRANSPORT_MODE = TRANSPORT_MODE_INTERNAL

# ------------------------------------------------------------------------------------------------------------
# PatchCanvas defines

CANVAS_ANTIALIASING_SMALL = 1
CANVAS_EYECANDY_SMALL = 1

# ------------------------------------------------------------------------------------------------------------
# ...

@@ -177,7 +183,7 @@ class CarlaSettingsW(QDialog):
# so add +2 pos padding if driverName != "JACK".
PROCESS_MODE_NON_JACK_PADDING = 2

def __init__(self, parent, hasGL):
def __init__(self, parent, hasCanvas, hasGL):
QDialog.__init__(self, parent)
self.ui = ui_carla_settings.Ui_CarlaSettingsW()
self.ui.setupUi(self)
@@ -256,20 +262,20 @@ class CarlaSettingsW(QDialog):

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

#self.ui.cb_canvas_hide_groups.setChecked(settings.value("Canvas/AutoHideGroups", False, type=bool))
#self.ui.cb_canvas_bezier_lines.setChecked(settings.value("Canvas/UseBezierLines", True, type=bool))
#self.ui.cb_canvas_eyecandy.setCheckState(settings.value("Canvas/EyeCandy", patchcanvas.EYECANDY_SMALL, type=int))
#self.ui.cb_canvas_use_opengl.setChecked(settings.value("Canvas/UseOpenGL", False, type=bool))
#self.ui.cb_canvas_render_aa.setCheckState(settings.value("Canvas/Antialiasing", patchcanvas.ANTIALIASING_SMALL, type=int))
#self.ui.cb_canvas_render_hq_aa.setChecked(settings.value("Canvas/HighQualityAntialiasing", False, type=bool))
self.ui.cb_canvas_hide_groups.setChecked(settings.value("Canvas/AutoHideGroups", False, type=bool))
self.ui.cb_canvas_bezier_lines.setChecked(settings.value("Canvas/UseBezierLines", True, type=bool))
self.ui.cb_canvas_eyecandy.setCheckState(settings.value("Canvas/EyeCandy", CANVAS_EYECANDY_SMALL, type=int))
self.ui.cb_canvas_use_opengl.setChecked(settings.value("Canvas/UseOpenGL", False, type=bool))
self.ui.cb_canvas_render_aa.setCheckState(settings.value("Canvas/Antialiasing", CANVAS_ANTIALIASING_SMALL, type=int))
self.ui.cb_canvas_render_hq_aa.setChecked(settings.value("Canvas/HighQualityAntialiasing", False, type=bool))

#canvasThemeName = settings.value("Canvas/Theme", patchcanvas.getDefaultThemeName(), type=str)
canvasThemeName = settings.value("Canvas/Theme", getDefaultThemeName(), type=str)

#for i in range(patchcanvas.Theme.THEME_MAX):
#thisThemeName = patchcanvas.getThemeName(i)
#self.ui.cb_canvas_theme.addItem(thisThemeName)
#if thisThemeName == canvasThemeName:
#self.ui.cb_canvas_theme.setCurrentIndex(i)
for i in range(Theme.THEME_MAX):
thisThemeName = getThemeName(i)
self.ui.cb_canvas_theme.addItem(thisThemeName)
if thisThemeName == canvasThemeName:
self.ui.cb_canvas_theme.setCurrentIndex(i)

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

@@ -637,10 +643,23 @@ class CarlaSettingsW(QDialog):
self.close()

# ------------------------------------------------------------------------------------------------------------
# TESTING
# Main

if __name__ == '__main__':
try:
from PyQt5.QtWidgets import QApplication
except:
from PyQt4.QtGui import QApplication

app = QApplication(sys.argv)
app.setApplicationName("Carla")
app.setApplicationVersion(VERSION)
app.setOrganizationName("falkTX")
app.setWindowIcon(QIcon(":/scalable/carla.svg"))

initHost(False)

gui = CarlaSettingsW(None, True, True)
gui.show()

#from PyQt5.QtWidgets import QApplication
#app = QApplication(sys.argv)
#gui = CarlaSettingsW(None, True)
#gui.show()
#app.exec_()
sys.exit(app.exec_())

+ 206
- 89
source/carla_shared.py View File

@@ -305,12 +305,25 @@ else:

class CarlaObject(object):
__slots__ = [
# Host library object
'host',
# Host Window
'gui',
# bool, is controller
'isControl',
# bool, is controller local
'isLocal',
# current process mode
'processMode',
# current max parameters
'maxParameters',
# discovery tools
'discovery_native',
'discovery_posix32',
'discovery_posix64',
'discovery_win32',
'discovery_win64',
# default paths
'DEFAULT_LADSPA_PATH',
'DEFAULT_DSSI_PATH',
'DEFAULT_LV2_PATH',
@@ -330,6 +343,12 @@ Carla.isLocal = True
Carla.processMode = PROCESS_MODE_MULTIPLE_CLIENTS if LINUX else PROCESS_MODE_CONTINUOUS_RACK
Carla.maxParameters = MAX_DEFAULT_PARAMETERS

Carla.discovery_native = ""
Carla.discovery_posix32 = ""
Carla.discovery_posix64 = ""
Carla.discovery_win32 = ""
Carla.discovery_win64 = ""

# ------------------------------------------------------------------------------------------------------------
# Default Plugin Folders (set)

@@ -373,43 +392,7 @@ else:
Carla.DEFAULT_SFZ_PATH = DEFAULT_SFZ_PATH.split(splitter)

# ------------------------------------------------------------------------------------------------------------
# Search for Carla library and tools

carla_library_filename = ""

carla_discovery_native = ""
carla_discovery_posix32 = ""
carla_discovery_posix64 = ""
carla_discovery_win32 = ""
carla_discovery_win64 = ""

carla_bridge_native = ""
carla_bridge_posix32 = ""
carla_bridge_posix64 = ""
carla_bridge_win32 = ""
carla_bridge_win64 = ""

carla_bridge_lv2_external = ""
carla_bridge_lv2_gtk2 = ""
carla_bridge_lv2_gtk3 = ""
carla_bridge_lv2_qt4 = ""
carla_bridge_lv2_qt5 = ""
carla_bridge_lv2_cocoa = ""
carla_bridge_lv2_windows = ""
carla_bridge_lv2_x11 = ""

carla_bridge_vst_mac = ""
carla_bridge_vst_hwnd = ""
carla_bridge_vst_x11 = ""

carla_libname = "libcarla_%s" % ("control" if Carla.isControl else "standalone")

if WINDOWS:
carla_libname += ".dll"
elif MACOS:
carla_libname += ".dylib"
else:
carla_libname += ".so"
# Search for Carla tools

CWD = sys.path[0]

@@ -419,24 +402,6 @@ if CWD.endswith("/carla"):
elif CWD.endswith("\\carla.exe"):
CWD = CWD.rsplit("\\carla.exe", 1)[0]

# find carla_library_filename
if os.path.exists(os.path.join(CWD, "backend", carla_libname)):
carla_library_filename = os.path.join(CWD, "backend", carla_libname)
else:
if WINDOWS:
CARLA_PATH = (os.path.join(PROGRAMFILES, "Carla"),)
elif MACOS:
CARLA_PATH = ("/opt/local/lib", "/usr/local/lib/", "/usr/lib")
else:
CARLA_PATH = ("/usr/local/lib/", "/usr/lib")

for path in CARLA_PATH:
if os.path.exists(os.path.join(path, "carla", carla_libname)):
carla_library_filename = os.path.join(path, "carla", carla_libname)
break

del CARLA_PATH

# find tool
def findTool(toolDir, toolName):
if os.path.exists(os.path.join(CWD, toolDir, toolName)):
@@ -448,42 +413,194 @@ def findTool(toolDir, toolName):

return ""

# find windows tools
carla_discovery_win32 = findTool("discovery", "carla-discovery-win32.exe")
carla_discovery_win64 = findTool("discovery", "carla-discovery-win64.exe")
carla_bridge_win32 = findTool("bridges", "carla-bridge-win32.exe")
carla_bridge_win64 = findTool("bridges", "carla-bridge-win64.exe")

# find native and posix tools
if not WINDOWS:
carla_discovery_native = findTool("discovery", "carla-discovery-native")
carla_discovery_posix32 = findTool("discovery", "carla-discovery-posix32")
carla_discovery_posix64 = findTool("discovery", "carla-discovery-posix64")
carla_bridge_native = findTool("bridges", "carla-bridge-native")
carla_bridge_posix32 = findTool("bridges", "carla-bridge-posix32")
carla_bridge_posix64 = findTool("bridges", "carla-bridge-posix64")

# find generic tools
carla_bridge_lv2_external = findTool("bridges", "carla-bridge-lv2-external")

# find windows only tools
if WINDOWS:
carla_bridge_lv2_windows = findTool("bridges", "carla-bridge-lv2-windows.exe")
carla_bridge_vst_hwnd = findTool("bridges", "carla-bridge-vst-hwnd.exe")
# ------------------------------------------------------------------------------------------------------------
# Init host

# find mac os only tools
elif MACOS:
carla_bridge_lv2_cocoa = findTool("bridges", "carla-bridge-lv2-cocoa")
carla_bridge_vst_mac = findTool("bridges", "carla-bridge-vst-mac")
def initHost(failError = True):
# -------------------------------------------------------------
# Search for Carla library

# find other tools
else:
carla_bridge_lv2_gtk2 = findTool("bridges", "carla-bridge-lv2-gtk2")
carla_bridge_lv2_gtk3 = findTool("bridges", "carla-bridge-lv2-gtk3")
carla_bridge_lv2_qt4 = findTool("bridges", "carla-bridge-lv2-qt4")
carla_bridge_lv2_qt5 = findTool("bridges", "carla-bridge-lv2-qt5")
carla_bridge_lv2_x11 = findTool("bridges", "carla-bridge-lv2-x11")
carla_bridge_vst_x11 = findTool("bridges", "carla-bridge-vst-x11")
libname = "libcarla_"

if Carla.isControl:
libname += "control"
else:
libname += "standalone"

if WINDOWS:
libname += ".dll"
elif MACOS:
libname += ".dylib"
else:
libname += ".so"

libfilename = ""

if os.path.exists(os.path.join(CWD, "backend", libname)):
libfilename = os.path.join(CWD, "backend", libname)
#else:
#CARLA_LIB_PATH = os.getenv("CARLA_LIB_PATH")

#if CARLA_LIB_PATH and os.path.exists(CARLA_LIB_PATH):
#CARLA_LIB_PATH = os.path.join(CARLA_LIB_PATH, "..")
#elif WINDOWS:
#CARLA_LIB_PATH = (os.path.join(PROGRAMFILES, "Carla"),)
#elif MACOS:
#CARLA_LIB_PATH = ("/opt/local/lib", "/usr/local/lib/", "/usr/lib")
#else:
#CARLA_LIB_PATH = ("/usr/local/lib/", "/usr/lib")

#for path in CARLA_LIB_PATH:
#if os.path.exists(os.path.join(path, "carla", libname)):
#libfilename = os.path.join(path, "carla", libname)
#break

# -------------------------------------------------------------
# Search for Carla tools

carla_bridge_native = ""
carla_bridge_posix32 = ""
carla_bridge_posix64 = ""
carla_bridge_win32 = ""
carla_bridge_win64 = ""

carla_bridge_lv2_external = ""
carla_bridge_lv2_gtk2 = ""
carla_bridge_lv2_gtk3 = ""
carla_bridge_lv2_qt4 = ""
carla_bridge_lv2_qt5 = ""
carla_bridge_lv2_cocoa = ""
carla_bridge_lv2_windows = ""
carla_bridge_lv2_x11 = ""

carla_bridge_vst_mac = ""
carla_bridge_vst_hwnd = ""
carla_bridge_vst_x11 = ""

# -------------------------------------------------------------
# find windows tools

Carla.discovery_win32 = findTool("discovery", "carla-discovery-win32.exe")
Carla.discovery_win64 = findTool("discovery", "carla-discovery-win64.exe")
carla_bridge_win32 = findTool("bridges", "carla-bridge-win32.exe")
carla_bridge_win64 = findTool("bridges", "carla-bridge-win64.exe")

# -------------------------------------------------------------
# find native and posix tools

if not WINDOWS:
Carla.discovery_native = findTool("discovery", "carla-discovery-native")
Carla.discovery_posix32 = findTool("discovery", "carla-discovery-posix32")
Carla.discovery_posix64 = findTool("discovery", "carla-discovery-posix64")
carla_bridge_native = findTool("bridges", "carla-bridge-native")
carla_bridge_posix32 = findTool("bridges", "carla-bridge-posix32")
carla_bridge_posix64 = findTool("bridges", "carla-bridge-posix64")

# -------------------------------------------------------------
# find generic tools

carla_bridge_lv2_external = findTool("bridges", "carla-bridge-lv2-external")

# -------------------------------------------------------------
# find windows only tools

if WINDOWS:
carla_bridge_lv2_windows = findTool("bridges", "carla-bridge-lv2-windows.exe")
carla_bridge_vst_hwnd = findTool("bridges", "carla-bridge-vst-hwnd.exe")

# -------------------------------------------------------------
# find mac os only tools

elif MACOS:
carla_bridge_lv2_cocoa = findTool("bridges", "carla-bridge-lv2-cocoa")
carla_bridge_vst_mac = findTool("bridges", "carla-bridge-vst-mac")

# -------------------------------------------------------------
# find other tools

else:
carla_bridge_lv2_gtk2 = findTool("bridges", "carla-bridge-lv2-gtk2")
carla_bridge_lv2_gtk3 = findTool("bridges", "carla-bridge-lv2-gtk3")
carla_bridge_lv2_qt4 = findTool("bridges", "carla-bridge-lv2-qt4")
carla_bridge_lv2_qt5 = findTool("bridges", "carla-bridge-lv2-qt5")
carla_bridge_lv2_x11 = findTool("bridges", "carla-bridge-lv2-x11")
carla_bridge_vst_x11 = findTool("bridges", "carla-bridge-vst-x11")

if not libfilename:
if failError:
QMessageBox.critical(None, "Error", "Failed to find the carla library, cannot continue")
sys.exit(1)
return

# -------------------------------------------------------------
# Init now

Carla.host = Host(libfilename)

# -------------------------------------------------------------
# Set resource path

localResources = os.path.join(libfilename.replace(libname, ""), "..", "modules", "carla_native", "resources")
systemResources = os.path.join(libfilename.replace(libname, ""), "resources")

if os.path.exists(localResources):
Carla.host.set_engine_option(OPTION_PATH_RESOURCES, 0, localResources)
elif os.path.exists(systemResources):
Carla.host.set_engine_option(OPTION_PATH_RESOURCES, 0, systemResources)

# -------------------------------------------------------------
# Set bridge paths

if carla_bridge_native:
Carla.host.set_engine_option(OPTION_PATH_BRIDGE_NATIVE, 0, carla_bridge_native)

if carla_bridge_posix32:
Carla.host.set_engine_option(OPTION_PATH_BRIDGE_POSIX32, 0, carla_bridge_posix32)

if carla_bridge_posix64:
Carla.host.set_engine_option(OPTION_PATH_BRIDGE_POSIX64, 0, carla_bridge_posix64)

if carla_bridge_win32:
Carla.host.set_engine_option(OPTION_PATH_BRIDGE_WIN32, 0, carla_bridge_win32)

if carla_bridge_win64:
Carla.host.set_engine_option(OPTION_PATH_BRIDGE_WIN64, 0, carla_bridge_win64)

if carla_bridge_lv2_external:
Carla.host.set_engine_option(OPTION_PATH_BRIDGE_LV2_EXTERNAL, 0, carla_bridge_lv2_external)

if WINDOWS:
if carla_bridge_lv2_windows:
Carla.host.set_engine_option(OPTION_PATH_BRIDGE_LV2_WINDOWS, 0, carla_bridge_lv2_windows)

if carla_bridge_vst_hwnd:
Carla.host.set_engine_option(OPTION_PATH_BRIDGE_VST_HWND, 0, carla_bridge_vst_hwnd)

elif MACOS:
if carla_bridge_lv2_cocoa:
Carla.host.set_engine_option(OPTION_PATH_BRIDGE_LV2_COCOA, 0, carla_bridge_lv2_cocoa)

if carla_bridge_vst_mac:
Carla.host.set_engine_option(OPTION_PATH_BRIDGE_VST_MAC, 0, carla_bridge_vst_mac)

else:
if carla_bridge_lv2_gtk2:
Carla.host.set_engine_option(OPTION_PATH_BRIDGE_LV2_GTK2, 0, carla_bridge_lv2_gtk2)

if carla_bridge_lv2_gtk3:
Carla.host.set_engine_option(OPTION_PATH_BRIDGE_LV2_GTK3, 0, carla_bridge_lv2_gtk3)

if carla_bridge_lv2_qt4:
Carla.host.set_engine_option(OPTION_PATH_BRIDGE_LV2_QT4, 0, carla_bridge_lv2_qt4)

if carla_bridge_lv2_qt5:
Carla.host.set_engine_option(OPTION_PATH_BRIDGE_LV2_QT5, 0, carla_bridge_lv2_qt5)

if carla_bridge_lv2_x11:
Carla.host.set_engine_option(OPTION_PATH_BRIDGE_LV2_X11, 0, carla_bridge_lv2_x11)

if carla_bridge_vst_x11:
Carla.host.set_engine_option(OPTION_PATH_BRIDGE_VST_X11, 0, carla_bridge_vst_x11)

# ------------------------------------------------------------------------------------------------------------
# Convert a ctypes c_char_p into a python string


+ 20
- 11
source/carla_widgets.py View File

@@ -1645,14 +1645,23 @@ class PluginWidget(QFrame):
QFrame.paintEvent(self, event)

# ------------------------------------------------------------------------------------------------------------
# TESTING

#hasGL = True

#from PyQt5.QtWidgets import QApplication
#app = QApplication(sys.argv)
#gui = PluginParameter(None, pInfo, 0, 0)
#gui = PluginEdit(None, 0)
#gui = PluginWidget(None, 0)
#gui.show()
#app.exec_()
# Main

if __name__ == '__main__':
try:
from PyQt5.QtWidgets import QApplication
except:
from PyQt4.QtGui import QApplication

app = QApplication(sys.argv)
app.setApplicationName("Carla")
app.setApplicationVersion(VERSION)
app.setOrganizationName("falkTX")
app.setWindowIcon(QIcon(":/scalable/carla.svg"))

#gui = PluginParameter(None, gFakeParamInfo, 0, 0)
#gui = PluginEdit(None, 0)
gui = PluginWidget(None, 0)
gui.show()

sys.exit(app.exec_())

Loading…
Cancel
Save