| @@ -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() | |||
| @@ -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_()) | |||
| @@ -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 | |||
| @@ -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_()) | |||
| @@ -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 | |||
| @@ -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_()) | |||