diff --git a/source/backend/engine/CarlaEngineJack.cpp b/source/backend/engine/CarlaEngineJack.cpp index e774fc4ed..9efd37d77 100644 --- a/source/backend/engine/CarlaEngineJack.cpp +++ b/source/backend/engine/CarlaEngineJack.cpp @@ -1854,7 +1854,7 @@ private: if (thisPortId == -1) continue; - if (const char** connections = jackbridge_port_get_connections(jackPort)) + if (const char** connections = jackbridge_port_get_all_connections(jackPort)) { for (int j=0; connections[j] != nullptr; ++j) { @@ -1869,7 +1869,7 @@ private: jackbridge_free(connections); } else - carla_stderr("jack_port_get_connections failed for port %s", fullPortName); + carla_stderr("jack_port_get_all_connections failed for port %s", fullPortName); } jackbridge_free(ports); diff --git a/source/backend/standalone/CarlaStandalone.cpp b/source/backend/standalone/CarlaStandalone.cpp index afe3e157b..820df6973 100644 --- a/source/backend/standalone/CarlaStandalone.cpp +++ b/source/backend/standalone/CarlaStandalone.cpp @@ -663,6 +663,10 @@ void carla_set_engine_option(EngineOption option, int value, const char* valueSt case CB::ENGINE_OPTION_AUDIO_DEVICE: CARLA_SAFE_ASSERT_RETURN(valueStr != nullptr && valueStr[0] != '\0',); + + if (gStandalone.engineOptions.audioDevice != nullptr) + delete[] gStandalone.engineOptions.audioDevice; + gStandalone.engineOptions.audioDevice = valueStr; break; diff --git a/source/carla-patchbay b/source/carla-patchbay index 8a9776956..3176ba95b 100755 --- a/source/carla-patchbay +++ b/source/carla-patchbay @@ -75,7 +75,7 @@ if __name__ == '__main__': Carla.isControl = False Carla.isLocal = True Carla.isPlugin = False - Carla.processMode = PROCESS_MODE_MULTIPLE_CLIENTS + Carla.processMode = ENGINE_PROCESS_MODE_MULTIPLE_CLIENTS initHost(appName, libPrefix) diff --git a/source/carla-rack b/source/carla-rack index d9ac629c3..7c47795da 100755 --- a/source/carla-rack +++ b/source/carla-rack @@ -75,7 +75,7 @@ if __name__ == '__main__': Carla.isControl = False Carla.isLocal = True Carla.isPlugin = False - Carla.processMode = PROCESS_MODE_CONTINUOUS_RACK + Carla.processMode = ENGINE_PROCESS_MODE_CONTINUOUS_RACK initHost(appName, libPrefix) diff --git a/source/carla_host.py b/source/carla_host.py index 811d14421..bcbfa8698 100644 --- a/source/carla_host.py +++ b/source/carla_host.py @@ -24,7 +24,7 @@ #from PyQt5.QtGui import QPalette #from PyQt5.QtWidgets import QApplication, QFileSystemModel, QMainWindow #except: -from PyQt4.QtCore import QModelIndex, QTimer +from PyQt4.QtCore import qCritical, QModelIndex, QTimer from PyQt4.QtGui import QApplication, QFileSystemModel, QMainWindow, QPalette # ------------------------------------------------------------------------------------------------------------ @@ -220,7 +220,7 @@ class HostWindow(QMainWindow): # Set up GUI (right panel) self.fDirModel = QFileSystemModel(self) - self.fDirModel.setNameFilters(cString(Carla.host.get_supported_file_types()).split(";")) + self.fDirModel.setNameFilters(charPtrToString(Carla.host.get_supported_file_extensions()).split(";")) self.fDirModel.setRootPath(HOME) self.ui.fileTreeView.setModel(self.fDirModel) @@ -357,33 +357,33 @@ class HostWindow(QMainWindow): if audioDriver == "JACK": #transportMode = settings.value("Engine/TransportMode", TRANSPORT_MODE_JACK, type=int) - transportMode = TRANSPORT_MODE_JACK + transportMode = ENGINE_TRANSPORT_MODE_JACK else: - transportMode = TRANSPORT_MODE_INTERNAL + transportMode = ENGINE_TRANSPORT_MODE_INTERNAL audioNumPeriods = settings.value("Engine/AudioBufferSize", CARLA_DEFAULT_AUDIO_NUM_PERIODS, type=int) audioBufferSize = settings.value("Engine/AudioBufferSize", CARLA_DEFAULT_AUDIO_BUFFER_SIZE, type=int) audioSampleRate = settings.value("Engine/AudioSampleRate", CARLA_DEFAULT_AUDIO_SAMPLE_RATE, type=int) audioDevice = settings.value("Engine/AudioDevice", "", type=str) - Carla.host.set_engine_option(OPTION_AUDIO_NUM_PERIODS, audioNumPeriods, "") - Carla.host.set_engine_option(OPTION_AUDIO_BUFFER_SIZE, audioBufferSize, "") - Carla.host.set_engine_option(OPTION_AUDIO_SAMPLE_RATE, audioSampleRate, "") - Carla.host.set_engine_option(OPTION_AUDIO_DEVICE, 0, audioDevice) + Carla.host.set_engine_option(ENGINE_OPTION_AUDIO_NUM_PERIODS, audioNumPeriods, "") + Carla.host.set_engine_option(ENGINE_OPTION_AUDIO_BUFFER_SIZE, audioBufferSize, "") + Carla.host.set_engine_option(ENGINE_OPTION_AUDIO_SAMPLE_RATE, audioSampleRate, "") + Carla.host.set_engine_option(ENGINE_OPTION_AUDIO_DEVICE, 0, audioDevice) - if Carla.processMode == PROCESS_MODE_CONTINUOUS_RACK: + if Carla.processMode == ENGINE_PROCESS_MODE_CONTINUOUS_RACK: forceStereo = True - elif Carla.processMode == PROCESS_MODE_MULTIPLE_CLIENTS and LADISH_APP_NAME: + elif Carla.processMode == ENGINE_PROCESS_MODE_MULTIPLE_CLIENTS and LADISH_APP_NAME: print("LADISH detected but using multiple clients (not allowed), forcing single client now") - Carla.processMode = PROCESS_MODE_SINGLE_CLIENT + Carla.processMode = ENGINE_PROCESS_MODE_SINGLE_CLIENT - Carla.host.set_engine_option(OPTION_FORCE_STEREO, forceStereo, "") - Carla.host.set_engine_option(OPTION_PREFER_PLUGIN_BRIDGES, preferPluginBridges, "") - Carla.host.set_engine_option(OPTION_PREFER_UI_BRIDGES, preferUiBridges, "") - Carla.host.set_engine_option(OPTION_UIS_ALWAYS_ON_TOP, uisAlwaysOnTop, "") - Carla.host.set_engine_option(OPTION_UI_BRIDGES_TIMEOUT, uiBridgesTimeout, "") - Carla.host.set_engine_option(OPTION_PROCESS_MODE, Carla.processMode, "") - Carla.host.set_engine_option(OPTION_MAX_PARAMETERS, Carla.maxParameters, "") - Carla.host.set_engine_option(OPTION_TRANSPORT_MODE, transportMode, "") + Carla.host.set_engine_option(ENGINE_OPTION_FORCE_STEREO, forceStereo, "") + Carla.host.set_engine_option(ENGINE_OPTION_PREFER_PLUGIN_BRIDGES, preferPluginBridges, "") + Carla.host.set_engine_option(ENGINE_OPTION_PREFER_UI_BRIDGES, preferUiBridges, "") + Carla.host.set_engine_option(ENGINE_OPTION_UIS_ALWAYS_ON_TOP, uisAlwaysOnTop, "") + Carla.host.set_engine_option(ENGINE_OPTION_UI_BRIDGES_TIMEOUT, uiBridgesTimeout, "") + Carla.host.set_engine_option(ENGINE_OPTION_PROCESS_MODE, Carla.processMode, "") + Carla.host.set_engine_option(ENGINE_OPTION_MAX_PARAMETERS, Carla.maxParameters, "") + Carla.host.set_engine_option(ENGINE_OPTION_TRANSPORT_MODE, transportMode, "") return audioDriver @@ -395,7 +395,7 @@ class HostWindow(QMainWindow): #self.fFirstEngineInit = False #return - audioError = cString(Carla.host.get_last_error()) + audioError = Carla.host.get_last_error() if audioError: QMessageBox.critical(self, self.tr("Error"), self.tr("Could not connect to Audio backend '%s', possible reasons:\n%s" % (audioDriver, audioError))) @@ -425,7 +425,7 @@ class HostWindow(QMainWindow): self.fContainer.removeAllPlugins() if Carla.host.is_engine_running() and not Carla.host.engine_close(): - print(cString(Carla.host.get_last_error())) + print(Carla.host.get_last_error()) self.fBufferSize = 0 self.fSampleRate = 0.0 @@ -441,7 +441,7 @@ class HostWindow(QMainWindow): # ----------------------------------------------------------------- # Internal stuff (plugins) - def getExtraStuff(self, plugin): + def getExtraPtr(self, plugin): ptype = plugin['type'] if ptype == PLUGIN_LADSPA: @@ -461,7 +461,7 @@ class HostWindow(QMainWindow): addr = addressof(int1) return cast(addr, INTPOINTER) - return c_nullptr + return None def maybeLoadRDFs(self): if not self.fLadspaRdfNeedsUpdate: @@ -783,10 +783,10 @@ class HostWindow(QMainWindow): ptype = dialog.fRetPlugin['type'] filename = dialog.fRetPlugin['binary'] label = dialog.fRetPlugin['label'] - extraStuff = self.getExtraStuff(dialog.fRetPlugin) + extraPtr = self.getExtraPtr(dialog.fRetPlugin) - if not Carla.host.add_plugin(btype, ptype, filename, None, label, c_nullptr): - CustomMessageBox(self, QMessageBox.Critical, self.tr("Error"), self.tr("Failed to load plugin"), cString(Carla.host.get_last_error()), QMessageBox.Ok, QMessageBox.Ok) + if not Carla.host.add_plugin(btype, ptype, filename, None, label, extraPtr): + CustomMessageBox(self, QMessageBox.Critical, self.tr("Error"), self.tr("Failed to load plugin"), charPtrToString(Carla.host.get_last_error()), QMessageBox.Ok, QMessageBox.Ok) return @pyqtSlot() @@ -895,7 +895,7 @@ class HostWindow(QMainWindow): if not Carla.host.load_filename(filename): CustomMessageBox(self, QMessageBox.Critical, self.tr("Error"), self.tr("Failed to load file"), - cString(Carla.host.get_last_error()), QMessageBox.Ok, QMessageBox.Ok) + Carla.host.get_last_error(), QMessageBox.Ok, QMessageBox.Ok) # ----------------------------------------------------------------- @@ -1018,77 +1018,77 @@ def EngineCallback(ptr, action, pluginId, value1, value2, value3, valueStr): if pluginId < 0 or not Carla.gui: return - if action == CALLBACK_DEBUG: - Carla.gui.DebugCallback.emit(pluginId, value1, value2, value3, cString(valueStr)) - elif action == CALLBACK_PLUGIN_ADDED: + if action == ENGINE_CALLBACK_DEBUG: + Carla.gui.DebugCallback.emit(pluginId, value1, value2, value3, charPtrToString(valueStr)) + elif action == ENGINE_CALLBACK_PLUGIN_ADDED: Carla.gui.PluginAddedCallback.emit(pluginId) - elif action == CALLBACK_PLUGIN_REMOVED: + elif action == ENGINE_CALLBACK_PLUGIN_REMOVED: Carla.gui.PluginRemovedCallback.emit(pluginId) - elif action == CALLBACK_PLUGIN_RENAMED: + elif action == ENGINE_CALLBACK_PLUGIN_RENAMED: Carla.gui.PluginRenamedCallback.emit(pluginId, valueStr) - elif action == CALLBACK_PARAMETER_VALUE_CHANGED: + elif action == ENGINE_CALLBACK_PARAMETER_VALUE_CHANGED: Carla.gui.ParameterValueChangedCallback.emit(pluginId, value1, value3) - elif action == CALLBACK_PARAMETER_DEFAULT_CHANGED: + elif action == ENGINE_CALLBACK_PARAMETER_DEFAULT_CHANGED: Carla.gui.ParameterDefaultChangedCallback.emit(pluginId, value1, value3) - elif action == CALLBACK_PARAMETER_MIDI_CHANNEL_CHANGED: + elif action == ENGINE_CALLBACK_PARAMETER_MIDI_CHANNEL_CHANGED: Carla.gui.ParameterMidiChannelChangedCallback.emit(pluginId, value1, value2) - elif action == CALLBACK_PARAMETER_MIDI_CC_CHANGED: + elif action == ENGINE_CALLBACK_PARAMETER_MIDI_CC_CHANGED: Carla.gui.ParameterMidiCcChangedCallback.emit(pluginId, value1, value2) - elif action == CALLBACK_PROGRAM_CHANGED: + elif action == ENGINE_CALLBACK_PROGRAM_CHANGED: Carla.gui.ProgramChangedCallback.emit(pluginId, value1) - elif action == CALLBACK_MIDI_PROGRAM_CHANGED: + elif action == ENGINE_CALLBACK_MIDI_PROGRAM_CHANGED: Carla.gui.MidiProgramChangedCallback.emit(pluginId, value1) - elif action == CALLBACK_NOTE_ON: + elif action == ENGINE_CALLBACK_NOTE_ON: Carla.gui.NoteOnCallback.emit(pluginId, value1, value2, value3) - elif action == CALLBACK_NOTE_OFF: + elif action == ENGINE_CALLBACK_NOTE_OFF: Carla.gui.NoteOffCallback.emit(pluginId, value1, value2) - elif action == CALLBACK_SHOW_GUI: + elif action == ENGINE_CALLBACK_UI_STATE_CHANGED: Carla.gui.ShowGuiCallback.emit(pluginId, value1) - elif action == CALLBACK_UPDATE: + elif action == ENGINE_CALLBACK_UPDATE: Carla.gui.UpdateCallback.emit(pluginId) - elif action == CALLBACK_RELOAD_INFO: + elif action == ENGINE_CALLBACK_RELOAD_INFO: Carla.gui.ReloadInfoCallback.emit(pluginId) - elif action == CALLBACK_RELOAD_PARAMETERS: + elif action == ENGINE_CALLBACK_RELOAD_PARAMETERS: Carla.gui.ReloadParametersCallback.emit(pluginId) - elif action == CALLBACK_RELOAD_PROGRAMS: + elif action == ENGINE_CALLBACK_RELOAD_PROGRAMS: Carla.gui.ReloadProgramsCallback.emit(pluginId) - elif action == CALLBACK_RELOAD_ALL: + elif action == ENGINE_CALLBACK_RELOAD_ALL: Carla.gui.ReloadAllCallback.emit(pluginId) - elif action == CALLBACK_PATCHBAY_CLIENT_ADDED: - Carla.gui.PatchbayClientAddedCallback.emit(value1, cString(valueStr)) - elif action == CALLBACK_PATCHBAY_CLIENT_REMOVED: - Carla.gui.PatchbayClientRemovedCallback.emit(value1, cString(valueStr)) - elif action == CALLBACK_PATCHBAY_CLIENT_RENAMED: - Carla.gui.PatchbayClientRenamedCallback.emit(value1, cString(valueStr)) - elif action == CALLBACK_PATCHBAY_PORT_ADDED: - Carla.gui.PatchbayPortAddedCallback.emit(value1, value2, int(value3), cString(valueStr)) - elif action == CALLBACK_PATCHBAY_PORT_REMOVED: - Carla.gui.PatchbayPortRemovedCallback.emit(value1, value2, cString(valueStr)) - elif action == CALLBACK_PATCHBAY_PORT_RENAMED: - Carla.gui.PatchbayPortRenamedCallback.emit(value1, value2, cString(valueStr)) - elif action == CALLBACK_PATCHBAY_CONNECTION_ADDED: + elif action == ENGINE_CALLBACK_PATCHBAY_CLIENT_ADDED: + Carla.gui.PatchbayClientAddedCallback.emit(value1, charPtrToString(valueStr)) + elif action == ENGINE_CALLBACK_PATCHBAY_CLIENT_REMOVED: + Carla.gui.PatchbayClientRemovedCallback.emit(value1, charPtrToString(valueStr)) + elif action == ENGINE_CALLBACK_PATCHBAY_CLIENT_RENAMED: + Carla.gui.PatchbayClientRenamedCallback.emit(value1, charPtrToString(valueStr)) + elif action == ENGINE_CALLBACK_PATCHBAY_PORT_ADDED: + Carla.gui.PatchbayPortAddedCallback.emit(value1, value2, int(value3), charPtrToString(valueStr)) + elif action == ENGINE_CALLBACK_PATCHBAY_PORT_REMOVED: + Carla.gui.PatchbayPortRemovedCallback.emit(value1, value2, charPtrToString(valueStr)) + elif action == ENGINE_CALLBACK_PATCHBAY_PORT_RENAMED: + Carla.gui.PatchbayPortRenamedCallback.emit(value1, value2, charPtrToString(valueStr)) + elif action == ENGINE_CALLBACK_PATCHBAY_CONNECTION_ADDED: Carla.gui.PatchbayConnectionAddedCallback.emit(value1, value2, value3) - elif action == CALLBACK_PATCHBAY_CONNECTION_REMOVED: + elif action == ENGINE_CALLBACK_PATCHBAY_CONNECTION_REMOVED: Carla.gui.PatchbayConnectionRemovedCallback.emit(value1) - elif action == CALLBACK_PATCHBAY_ICON_CHANGED: - Carla.gui.PatchbayIconChangedCallback.emit(value1, cString(valueStr)) - elif action == CALLBACK_BUFFER_SIZE_CHANGED: + #elif action == ENGINE_CALLBACK_PATCHBAY_ICON_CHANGED: + #Carla.gui.PatchbayIconChangedCallback.emit(value1, charPtrToString(valueStr)) + elif action == ENGINE_CALLBACK_BUFFER_SIZE_CHANGED: Carla.gui.BufferSizeChangedCallback.emit(value1) - elif action == CALLBACK_SAMPLE_RATE_CHANGED: + elif action == ENGINE_CALLBACK_SAMPLE_RATE_CHANGED: Carla.gui.SampleRateChangedCallback.emit(value3) - elif action == CALLBACK_PROCESS_MODE_CHANGED: + elif action == ENGINE_CALLBACK_PROCESS_MODE_CHANGED: Carla.gui.ProcessModeChangedCallback.emit(value1) - elif action == CALLBACK_ENGINE_STARTED: - Carla.gui.EngineStartedCallback.emit(cString(valueStr)) - elif action == CALLBACK_ENGINE_STOPPED: + elif action == ENGINE_CALLBACK_ENGINE_STARTED: + Carla.gui.EngineStartedCallback.emit(charPtrToString(valueStr)) + elif action == ENGINE_CALLBACK_ENGINE_STOPPED: Carla.gui.EngineStoppedChangedCallback.emit() - elif action == CALLBACK_NSM_ANNOUNCE: - Carla.gui.NSM_AnnounceCallback.emit(cString(valueStr)) - elif action == CALLBACK_NSM_OPEN: - Carla.gui.NSM_OpenCallback.emit(cString(valueStr)) - elif action == CALLBACK_NSM_SAVE: - Carla.gui.NSM_SaveCallback.emit() - elif action == CALLBACK_ERROR: - Carla.gui.ErrorCallback.emit(cString(valueStr)) - elif action == CALLBACK_QUIT: + #elif action == CALLBACK_NSM_ANNOUNCE: + #Carla.gui.NSM_AnnounceCallback.emit(charPtrToString(valueStr)) + #elif action == CALLBACK_NSM_OPEN: + #Carla.gui.NSM_OpenCallback.emit(charPtrToString(valueStr)) + #elif action == CALLBACK_NSM_SAVE: + #Carla.gui.NSM_SaveCallback.emit() + elif action == ENGINE_CALLBACK_ERROR: + Carla.gui.ErrorCallback.emit(charPtrToString(valueStr)) + elif action == ENGINE_CALLBACK_QUIT: Carla.gui.QuitCallback.emit() diff --git a/source/carla_patchbay.py b/source/carla_patchbay.py index ff372f93d..ce58d8cb5 100644 --- a/source/carla_patchbay.py +++ b/source/carla_patchbay.py @@ -38,10 +38,10 @@ from carla_widgets import * # Try Import OpenGL try: - try: - from PyQt5.QtOpenGL import QGLWidget - except: - from PyQt4.QtOpenGL import QGLWidget + #try: + #from PyQt5.QtOpenGL import QGLWidget + #except: + from PyQt4.QtOpenGL import QGLWidget hasGL = True except: hasGL = False diff --git a/source/carla_settings.py b/source/carla_settings.py index c50cbd3c0..f83b8b3a1 100755 --- a/source/carla_settings.py +++ b/source/carla_settings.py @@ -84,11 +84,11 @@ else: CARLA_DEFAULT_AUDIO_DRIVER = "JACK" if LINUX: - CARLA_DEFAULT_PROCESS_MODE = PROCESS_MODE_MULTIPLE_CLIENTS - CARLA_DEFAULT_TRANSPORT_MODE = TRANSPORT_MODE_JACK + CARLA_DEFAULT_PROCESS_MODE = ENGINE_PROCESS_MODE_MULTIPLE_CLIENTS + CARLA_DEFAULT_TRANSPORT_MODE = ENGINE_TRANSPORT_MODE_JACK else: - CARLA_DEFAULT_PROCESS_MODE = PROCESS_MODE_CONTINUOUS_RACK - CARLA_DEFAULT_TRANSPORT_MODE = TRANSPORT_MODE_INTERNAL + CARLA_DEFAULT_PROCESS_MODE = ENGINE_PROCESS_MODE_CONTINUOUS_RACK + CARLA_DEFAULT_TRANSPORT_MODE = ENGINE_TRANSPORT_MODE_INTERNAL # ------------------------------------------------------------------------------------------------------------ # ... @@ -105,10 +105,6 @@ class DriverSettingsW(QDialog): self.ui = ui_carla_settings_driver.Ui_DriverSettingsW() self.ui.setupUi(self) - if driverName == "JACK": - print("This dialog is not compatible with JACK") - return - # ------------------------------------------------------------- # Internal stuff @@ -218,7 +214,7 @@ class CarlaSettingsW(QDialog): if Carla.host is not None: for i in range(Carla.host.get_engine_driver_count()): - self.ui.cb_engine_audio_driver.addItem(cString(Carla.host.get_engine_driver_name(i))) + self.ui.cb_engine_audio_driver.addItem(Carla.host.get_engine_driver_name(i)) else: self.ui.tb_engine_driver_config.setEnabled(False) @@ -324,11 +320,11 @@ class CarlaSettingsW(QDialog): self.ui.cb_engine_audio_driver.setCurrentIndex(-1) if audioDriver == "JACK": - processModeIndex = settings.value(CARLA_KEY_ENGINE_PROCESS_MODE, PROCESS_MODE_MULTIPLE_CLIENTS, type=int) + processModeIndex = settings.value(CARLA_KEY_ENGINE_PROCESS_MODE, ENGINE_PROCESS_MODE_MULTIPLE_CLIENTS, type=int) self.ui.cb_engine_process_mode_jack.setCurrentIndex(processModeIndex) self.ui.sw_engine_process_mode.setCurrentIndex(0) else: - processModeIndex = settings.value(CARLA_KEY_ENGINE_PROCESS_MODE, PROCESS_MODE_CONTINUOUS_RACK, type=int) + processModeIndex = settings.value(CARLA_KEY_ENGINE_PROCESS_MODE, ENGINE_PROCESS_MODE_CONTINUOUS_RACK, type=int) processModeIndex -= self.PROCESS_MODE_NON_JACK_PADDING self.ui.cb_engine_process_mode_other.setCurrentIndex(processModeIndex) self.ui.sw_engine_process_mode.setCurrentIndex(1) @@ -517,10 +513,10 @@ class CarlaSettingsW(QDialog): self.ui.ch_engine_prefer_plugin_bridges.setChecked(CARLA_DEFAULT_PREFER_PLUGIN_BRIDGES) if self.ui.cb_engine_audio_driver.currentText() == "JACK": - self.ui.cb_engine_process_mode_jack.setCurrentIndex(PROCESS_MODE_MULTIPLE_CLIENTS) + self.ui.cb_engine_process_mode_jack.setCurrentIndex(ENGINE_PROCESS_MODE_MULTIPLE_CLIENTS) self.ui.sw_engine_process_mode.setCurrentIndex(0) # show all modes else: - self.ui.cb_engine_process_mode_other.setCurrentIndex(PROCESS_MODE_CONTINUOUS_RACK-self.PROCESS_MODE_NON_JACK_PADDING) + self.ui.cb_engine_process_mode_other.setCurrentIndex(ENGINE_PROCESS_MODE_CONTINUOUS_RACK-self.PROCESS_MODE_NON_JACK_PADDING) self.ui.sw_engine_process_mode.setCurrentIndex(1) # hide single+multi client modes elif self.ui.lw_page.currentRow() == self.TAB_INDEX_PATHS: diff --git a/source/carla_widgets.py b/source/carla_widgets.py index e92dfec54..f18239658 100755 --- a/source/carla_widgets.py +++ b/source/carla_widgets.py @@ -1055,6 +1055,9 @@ class PluginEdit(QDialog): @pyqtSlot(bool) def slot_optionChanged(self, clicked): + if Carla.host is None: + return + sender = self.sender() if sender == self.ui.ch_fixed_buffer: @@ -1082,52 +1085,67 @@ class PluginEdit(QDialog): @pyqtSlot(int) def slot_dryWetChanged(self, value): - Carla.host.set_drywet(self.fPluginId, float(value)/1000) + if Carla.host is not None: + Carla.host.set_drywet(self.fPluginId, float(value)/1000) @pyqtSlot(int) def slot_volumeChanged(self, value): - Carla.host.set_volume(self.fPluginId, float(value)/1000) + if Carla.host is not None: + Carla.host.set_volume(self.fPluginId, float(value)/1000) @pyqtSlot(int) def slot_balanceLeftChanged(self, value): - Carla.host.set_balance_left(self.fPluginId, float(value)/1000) + if Carla.host is not None: + Carla.host.set_balance_left(self.fPluginId, float(value)/1000) @pyqtSlot(int) def slot_balanceRightChanged(self, value): - Carla.host.set_balance_right(self.fPluginId, float(value)/1000) + if Carla.host is not None: + Carla.host.set_balance_right(self.fPluginId, float(value)/1000) @pyqtSlot(int) def slot_panningChanged(self, value): - Carla.host.set_panning(self.fPluginId, float(value)/1000) + if Carla.host is not None: + Carla.host.set_panning(self.fPluginId, float(value)/1000) @pyqtSlot(int) def slot_ctrlChannelChanged(self, value): self.fControlChannel = value-1 - Carla.host.set_ctrl_channel(self.fPluginId, self.fControlChannel) + + if Carla.host is not None: + Carla.host.set_ctrl_channel(self.fPluginId, self.fControlChannel) + self.ui.keyboard.allNotesOff() self._updateCtrlMidiProgram() @pyqtSlot(int, float) def slot_parameterValueChanged(self, parameterId, value): - Carla.host.set_parameter_value(self.fPluginId, parameterId, value) + if Carla.host is not None: + Carla.host.set_parameter_value(self.fPluginId, parameterId, value) @pyqtSlot(int, int) def slot_parameterMidiControlChanged(self, parameterId, control): - Carla.host.set_parameter_midi_cc(self.fPluginId, parameterId, control) + if Carla.host is not None: + Carla.host.set_parameter_midi_cc(self.fPluginId, parameterId, control) @pyqtSlot(int, int) def slot_parameterMidiChannelChanged(self, parameterId, channel): - Carla.host.set_parameter_midi_channel(self.fPluginId, parameterId, channel-1) + if Carla.host is not None: + Carla.host.set_parameter_midi_channel(self.fPluginId, parameterId, channel-1) @pyqtSlot(int) def slot_programIndexChanged(self, index): self.fCurrentProgram = index - Carla.host.set_program(self.fPluginId, index) + + if Carla.host is not None: + Carla.host.set_program(self.fPluginId, index) @pyqtSlot(int) def slot_midiProgramIndexChanged(self, index): self.fCurrentMidiProgram = index - Carla.host.set_midi_program(self.fPluginId, index) + + if Carla.host is not None: + Carla.host.set_midi_program(self.fPluginId, index) @pyqtSlot(int) def slot_noteOn(self, note): diff --git a/source/patchcanvas.py b/source/patchcanvas.py index 395c5dca3..3e6777221 100644 --- a/source/patchcanvas.py +++ b/source/patchcanvas.py @@ -17,24 +17,24 @@ # For a full copy of the GNU General Public License see the GPL.txt file # Imports (Global) -try: - from PyQt5.QtCore import pyqtSignal, pyqtSlot, qDebug, qCritical, qFatal, qWarning, Qt, QObject - from PyQt5.QtCore import QAbstractAnimation, QLineF, QPointF, QRectF, QSizeF, QSettings, QTimer - from PyQt5.QtGui import QColor, QLinearGradient, QPen, QPolygonF, QPainter, QPainterPath - from PyQt5.QtGui import QCursor, QFont, QFontMetrics - from PyQt5.QtSvg import QGraphicsSvgItem, QSvgRenderer - from PyQt5.QtWidgets import QGraphicsScene, QGraphicsItem, QGraphicsLineItem, QGraphicsPathItem - from PyQt5.QtWidgets import QGraphicsColorizeEffect, QGraphicsDropShadowEffect - from PyQt5.QtWidgets import QInputDialog, QLineEdit, QMenu -except: - from PyQt4.QtCore import pyqtSignal, pyqtSlot, qDebug, qCritical, qFatal, qWarning, Qt, QObject - from PyQt4.QtCore import QAbstractAnimation, QLineF, QPointF, QRectF, QSizeF, QSettings, QTimer - from PyQt4.QtGui import QColor, QLinearGradient, QPen, QPolygonF, QPainter, QPainterPath - from PyQt4.QtGui import QCursor, QFont, QFontMetrics - from PyQt4.QtGui import QGraphicsScene, QGraphicsItem, QGraphicsLineItem, QGraphicsPathItem - from PyQt4.QtGui import QGraphicsColorizeEffect, QGraphicsDropShadowEffect - from PyQt4.QtGui import QInputDialog, QLineEdit, QMenu - from PyQt4.QtSvg import QGraphicsSvgItem, QSvgRenderer +#try: + #from PyQt5.QtCore import pyqtSignal, pyqtSlot, qDebug, qCritical, qFatal, qWarning, Qt, QObject + #from PyQt5.QtCore import QAbstractAnimation, QLineF, QPointF, QRectF, QSizeF, QSettings, QTimer + #from PyQt5.QtGui import QColor, QLinearGradient, QPen, QPolygonF, QPainter, QPainterPath + #from PyQt5.QtGui import QCursor, QFont, QFontMetrics + #from PyQt5.QtSvg import QGraphicsSvgItem, QSvgRenderer + #from PyQt5.QtWidgets import QGraphicsScene, QGraphicsItem, QGraphicsLineItem, QGraphicsPathItem + #from PyQt5.QtWidgets import QGraphicsColorizeEffect, QGraphicsDropShadowEffect + #from PyQt5.QtWidgets import QInputDialog, QLineEdit, QMenu +#except: +from PyQt4.QtCore import pyqtSignal, pyqtSlot, qDebug, qCritical, qFatal, qWarning, Qt, QObject +from PyQt4.QtCore import QAbstractAnimation, QLineF, QPointF, QRectF, QSizeF, QSettings, QTimer +from PyQt4.QtGui import QColor, QLinearGradient, QPen, QPolygonF, QPainter, QPainterPath +from PyQt4.QtGui import QCursor, QFont, QFontMetrics +from PyQt4.QtGui import QGraphicsScene, QGraphicsItem, QGraphicsLineItem, QGraphicsPathItem +from PyQt4.QtGui import QGraphicsColorizeEffect, QGraphicsDropShadowEffect +from PyQt4.QtGui import QInputDialog, QLineEdit, QMenu +from PyQt4.QtSvg import QGraphicsSvgItem, QSvgRenderer # Imports (Theme) from patchcanvas_theme import * diff --git a/source/patchcanvas_theme.py b/source/patchcanvas_theme.py index 629697de9..ec2bce3b8 100644 --- a/source/patchcanvas_theme.py +++ b/source/patchcanvas_theme.py @@ -19,12 +19,12 @@ # ------------------------------------------------------------------------------------------------------------ # Imports (Global) -try: - from PyQt5.QtCore import Qt - from PyQt5.QtGui import QColor, QFont, QPen, QPixmap -except: - from PyQt4.QtCore import Qt - from PyQt4.QtGui import QColor, QFont, QPen, QPixmap +#try: + #from PyQt5.QtCore import Qt + #from PyQt5.QtGui import QColor, QFont, QPen, QPixmap +#except: +from PyQt4.QtCore import Qt +from PyQt4.QtGui import QColor, QFont, QPen, QPixmap # ------------------------------------------------------------------------------------------------------------ # patchcanvas-theme.cpp diff --git a/source/widgets/canvaspreviewframe.py b/source/widgets/canvaspreviewframe.py index 939b94078..e4f804d06 100644 --- a/source/widgets/canvaspreviewframe.py +++ b/source/widgets/canvaspreviewframe.py @@ -20,13 +20,13 @@ # Imports (Global) # TODO - SIGNAL, SLOT -try: - from PyQt5.QtCore import Qt, QRectF, QTimer - from PyQt5.QtGui import QBrush, QColor, QCursor, QPainter, QPen - from PyQt5.QtWidgets import QFrame -except: - from PyQt4.QtCore import Qt, QRectF, QTimer - from PyQt4.QtGui import QBrush, QColor, QCursor, QFrame, QPainter, QPen +#try: + #from PyQt5.QtCore import Qt, QRectF, QTimer + #from PyQt5.QtGui import QBrush, QColor, QCursor, QPainter, QPen + #from PyQt5.QtWidgets import QFrame +#except: +from PyQt4.QtCore import Qt, QRectF, QTimer +from PyQt4.QtGui import QBrush, QColor, QCursor, QFrame, QPainter, QPen # ------------------------------------------------------------------------------------------------------------ # Static Variables diff --git a/source/widgets/digitalpeakmeter.py b/source/widgets/digitalpeakmeter.py index 369e464e0..03801fb7b 100644 --- a/source/widgets/digitalpeakmeter.py +++ b/source/widgets/digitalpeakmeter.py @@ -19,13 +19,13 @@ # ------------------------------------------------------------------------------------------------------------ # Imports (Global) -try: - from PyQt5.QtCore import qCritical, Qt, QTimer, QSize - from PyQt5.QtGui import QColor, QLinearGradient, QPainter - from PyQt5.QtWidgets import QWidget -except: - from PyQt4.QtCore import qCritical, Qt, QTimer, QSize - from PyQt4.QtGui import QColor, QLinearGradient, QPainter, QWidget +#try: + #from PyQt5.QtCore import qCritical, Qt, QTimer, QSize + #from PyQt5.QtGui import QColor, QLinearGradient, QPainter + #from PyQt5.QtWidgets import QWidget +#except: +from PyQt4.QtCore import qCritical, Qt, QTimer, QSize +from PyQt4.QtGui import QColor, QLinearGradient, QPainter, QWidget # ------------------------------------------------------------------------------------------------------------ # Widget Class diff --git a/source/widgets/ledbutton.py b/source/widgets/ledbutton.py index c1732dfa2..07855686d 100644 --- a/source/widgets/ledbutton.py +++ b/source/widgets/ledbutton.py @@ -19,13 +19,13 @@ # ------------------------------------------------------------------------------------------------------------ # Imports (Global) -try: - from PyQt5.QtCore import qCritical, QRectF - from PyQt5.QtGui import QPainter, QPixmap - from PyQt5.QtWidgets import QPushButton -except: - from PyQt4.QtCore import qCritical, QRectF - from PyQt4.QtGui import QPainter, QPixmap, QPushButton +#try: + #from PyQt5.QtCore import qCritical, QRectF + #from PyQt5.QtGui import QPainter, QPixmap + #from PyQt5.QtWidgets import QPushButton +#except: +from PyQt4.QtCore import qCritical, QRectF +from PyQt4.QtGui import QPainter, QPixmap, QPushButton # ------------------------------------------------------------------------------------------------------------ # Widget Class diff --git a/source/widgets/paramspinbox.py b/source/widgets/paramspinbox.py index 527bfa959..4138263f2 100644 --- a/source/widgets/paramspinbox.py +++ b/source/widgets/paramspinbox.py @@ -19,13 +19,13 @@ # ------------------------------------------------------------------------------------------------------------ # Imports (Global) -try: - from PyQt5.QtCore import pyqtSignal, pyqtSlot, Qt, QTimer - from PyQt5.QtGui import QCursor - from PyQt5.QtWidgets import QAbstractSpinBox, QApplication, QComboBox, QDialog, QMenu, QProgressBar -except: - from PyQt4.QtCore import pyqtSignal, pyqtSlot, Qt, QTimer - from PyQt4.QtGui import QAbstractSpinBox, QApplication, QComboBox, QCursor, QDialog, QMenu, QProgressBar +#try: + #from PyQt5.QtCore import pyqtSignal, pyqtSlot, Qt, QTimer + #from PyQt5.QtGui import QCursor + #from PyQt5.QtWidgets import QAbstractSpinBox, QApplication, QComboBox, QDialog, QMenu, QProgressBar +#except: +from PyQt4.QtCore import pyqtSignal, pyqtSlot, Qt, QTimer +from PyQt4.QtGui import QAbstractSpinBox, QApplication, QComboBox, QCursor, QDialog, QMenu, QProgressBar from math import isnan diff --git a/source/widgets/pixmapbutton.py b/source/widgets/pixmapbutton.py index 38d4243ba..916c9b454 100644 --- a/source/widgets/pixmapbutton.py +++ b/source/widgets/pixmapbutton.py @@ -19,13 +19,13 @@ # ------------------------------------------------------------------------------------------------------------ # Imports (Global) -try: - from PyQt5.QtCore import QRectF - from PyQt5.QtGui import QPainter, QPixmap - from PyQt5.QtWidgets import QPushButton -except: - from PyQt4.QtCore import QRectF - from PyQt4.QtGui import QPainter, QPixmap, QPushButton +#try: + #from PyQt5.QtCore import QRectF + #from PyQt5.QtGui import QPainter, QPixmap + #from PyQt5.QtWidgets import QPushButton +#except: +from PyQt4.QtCore import QRectF +from PyQt4.QtGui import QPainter, QPixmap, QPushButton # ------------------------------------------------------------------------------------------------------------ # Widget Class diff --git a/source/widgets/pixmapdial.py b/source/widgets/pixmapdial.py index bb3c8efaf..2637cf742 100644 --- a/source/widgets/pixmapdial.py +++ b/source/widgets/pixmapdial.py @@ -21,15 +21,15 @@ from math import floor -try: - from PyQt5.QtCore import Qt, QPointF, QRectF, QTimer, QSize - from PyQt5.QtGui import QColor, QConicalGradient, QFont, QFontMetrics - from PyQt5.QtGui import QLinearGradient, QPainter, QPainterPath, QPen, QPixmap - from PyQt5.QtWidgets import QDial -except: - from PyQt4.QtCore import Qt, QPointF, QRectF, QTimer, QSize - from PyQt4.QtGui import QColor, QConicalGradient, QFont, QFontMetrics - from PyQt4.QtGui import QDial, QLinearGradient, QPainter, QPainterPath, QPen, QPixmap +#try: + #from PyQt5.QtCore import Qt, QPointF, QRectF, QTimer, QSize + #from PyQt5.QtGui import QColor, QConicalGradient, QFont, QFontMetrics + #from PyQt5.QtGui import QLinearGradient, QPainter, QPainterPath, QPen, QPixmap + #from PyQt5.QtWidgets import QDial +#except: +from PyQt4.QtCore import Qt, QPointF, QRectF, QTimer, QSize +from PyQt4.QtGui import QColor, QConicalGradient, QFont, QFontMetrics +from PyQt4.QtGui import QDial, QLinearGradient, QPainter, QPainterPath, QPen, QPixmap # ------------------------------------------------------------------------------------------------------------ # Widget Class diff --git a/source/widgets/pixmapkeyboard.py b/source/widgets/pixmapkeyboard.py index d93a6ae66..d857fb865 100644 --- a/source/widgets/pixmapkeyboard.py +++ b/source/widgets/pixmapkeyboard.py @@ -19,13 +19,13 @@ # ------------------------------------------------------------------------------------------------------------ # Imports (Global) -try: - from PyQt5.QtCore import pyqtSignal, qCritical, Qt, QPointF, QRectF, QSize - from PyQt5.QtGui import QFont, QPainter, QPixmap - from PyQt5.QtWidgets import QWidget -except: - from PyQt4.QtCore import pyqtSignal, qCritical, Qt, QPointF, QRectF, QSize - from PyQt4.QtGui import QFont, QPainter, QPixmap, QWidget +#try: + #from PyQt5.QtCore import pyqtSignal, qCritical, Qt, QPointF, QRectF, QSize + #from PyQt5.QtGui import QFont, QPainter, QPixmap + #from PyQt5.QtWidgets import QWidget +#except: +from PyQt4.QtCore import pyqtSignal, qCritical, Qt, QPointF, QRectF, QSize +from PyQt4.QtGui import QFont, QPainter, QPixmap, QWidget # ------------------------------------------------------------------------------------------------------------