| @@ -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); | |||
| @@ -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; | |||
| @@ -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) | |||
| @@ -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) | |||
| @@ -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() | |||
| @@ -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 | |||
| @@ -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: | |||
| @@ -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): | |||
| @@ -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 * | |||
| @@ -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 | |||
| @@ -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 | |||
| @@ -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 | |||
| @@ -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 | |||
| @@ -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 | |||
| @@ -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 | |||
| @@ -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 | |||
| @@ -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 | |||
| # ------------------------------------------------------------------------------------------------------------ | |||