diff --git a/resources/ui/carla_settings.ui b/resources/ui/carla_settings.ui index 7e949739e..ef5240aa7 100644 --- a/resources/ui/carla_settings.ui +++ b/resources/ui/carla_settings.ui @@ -1501,6 +1501,13 @@ + + + + Export single plugins to LV2 + + + diff --git a/source/carla_backend.py b/source/carla_backend.py index 14e15c31b..4715bdb21 100644 --- a/source/carla_backend.py +++ b/source/carla_backend.py @@ -1233,6 +1233,7 @@ class CarlaHostMeta(object): # settings self.experimental = False + self.exportLV2 = False self.forceStereo = False self.manageUIs = False self.maxParameters = 0 diff --git a/source/carla_host.py b/source/carla_host.py index 87e6d4e30..9d7bbbfd9 100644 --- a/source/carla_host.py +++ b/source/carla_host.py @@ -2486,6 +2486,11 @@ def loadHostSettings(host): except: host.experimental = CARLA_DEFAULT_MAIN_EXPERIMENTAL + try: + host.exportLV2 = settings.value(CARLA_KEY_EXPERIMENTAL_EXPORT_LV2, CARLA_DEFAULT_EXPERIMENTAL_LV2_EXPORT, type=bool) + except: + host.exportLV2 = CARLA_DEFAULT_EXPERIMENTAL_LV2_EXPORT + try: host.manageUIs = settings.value(CARLA_KEY_ENGINE_MANAGE_UIS, CARLA_DEFAULT_MANAGE_UIS, type=bool) except: diff --git a/source/carla_settings.py b/source/carla_settings.py index 0421fbbf6..a65e83d59 100755 --- a/source/carla_settings.py +++ b/source/carla_settings.py @@ -414,6 +414,7 @@ class CarlaSettingsW(QDialog): self.ui.sb_engine_ui_bridges_timeout.setValue(self.host.uiBridgesTimeout) self.ui.ch_engine_force_stereo.setChecked(self.host.forceStereo or not self.ui.ch_engine_force_stereo.isEnabled()) self.ui.ch_engine_prefer_plugin_bridges.setChecked(self.host.preferPluginBridges) + self.ui.ch_exp_export_lv2.setChecked(self.host.exportLV2) # ---------------------------------------------------------------------------------------------------- # Paths @@ -479,6 +480,9 @@ class CarlaSettingsW(QDialog): CARLA_DEFAULT_EXPERIMENTAL_JACK_APPS, type=bool)) + self.ui.ch_exp_export_lv2.setChecked(settings.value(CARLA_KEY_EXPERIMENTAL_EXPORT_LV2, + CARLA_DEFAULT_EXPERIMENTAL_LV2_EXPORT, + type=bool)) self.ui.ch_exp_load_lib_global.setChecked(settings.value(CARLA_KEY_EXPERIMENTAL_LOAD_LIB_GLOBAL, CARLA_DEFAULT_EXPERIMENTAL_LOAD_LIB_GLOBAL, @@ -547,6 +551,7 @@ class CarlaSettingsW(QDialog): settings.setValue(CARLA_KEY_ENGINE_PROCESS_MODE, self.host.nextProcessMode) + self.host.exportLV2 = self.ui.ch_exp_export_lv2.isChecked() self.host.forceStereo = self.ui.ch_engine_force_stereo.isChecked() self.host.maxParameters = self.ui.sb_engine_max_params.value() self.host.manageUIs = self.ui.ch_engine_manage_uis.isChecked() @@ -575,6 +580,7 @@ class CarlaSettingsW(QDialog): settings.setValue(CARLA_KEY_ENGINE_PREFER_UI_BRIDGES, self.host.preferUIBridges) settings.setValue(CARLA_KEY_ENGINE_UI_BRIDGES_TIMEOUT, self.host.uiBridgesTimeout) settings.setValue(CARLA_KEY_ENGINE_UIS_ALWAYS_ON_TOP, self.host.uisAlwaysOnTop) + settings.setValue(CARLA_KEY_EXPERIMENTAL_EXPORT_LV2, self.host.exportLV2) # ---------------------------------------------------------------------------------------------------- # Paths @@ -774,6 +780,7 @@ class CarlaSettingsW(QDialog): # Forever experimental self.ui.cb_exp_plugin_bridges.setChecked(CARLA_DEFAULT_EXPERIMENTAL_PLUGIN_BRIDGES) self.ui.ch_exp_jack_apps.setChecked(CARLA_DEFAULT_EXPERIMENTAL_JACK_APPS) + self.ui.ch_exp_export_lv2.setChecked(CARLA_DEFAULT_EXPERIMENTAL_LV2_EXPORT) self.ui.ch_exp_load_lib_global.setChecked(CARLA_DEFAULT_EXPERIMENTAL_LOAD_LIB_GLOBAL) self.ui.ch_exp_prevent_bad_behaviour.setChecked(CARLA_DEFAULT_EXPERIMENTAL_PREVENT_BAD_BEHAVIOUR) diff --git a/source/carla_shared.py b/source/carla_shared.py index 0c3547145..8a745457b 100644 --- a/source/carla_shared.py +++ b/source/carla_shared.py @@ -229,6 +229,7 @@ CARLA_KEY_PATHS_SFZ = "Paths/SFZ" CARLA_KEY_EXPERIMENTAL_PLUGIN_BRIDGES = "Experimental/PluginBridges" # bool CARLA_KEY_EXPERIMENTAL_JACK_APPS = "Experimental/JackApplications" # bool +CARLA_KEY_EXPERIMENTAL_EXPORT_LV2 = "Experimental/ExportLV2" # bool CARLA_KEY_EXPERIMENTAL_PREVENT_BAD_BEHAVIOUR = "Experimental/PreventBadBehaviour" # bool CARLA_KEY_EXPERIMENTAL_LOAD_LIB_GLOBAL = "Experimental/LoadLibGlobal" # bool @@ -290,6 +291,7 @@ else: CARLA_DEFAULT_EXPERIMENTAL_PLUGIN_BRIDGES = False CARLA_DEFAULT_EXPERIMENTAL_JACK_APPS = False +CARLA_DEFAULT_EXPERIMENTAL_LV2_EXPORT = False CARLA_DEFAULT_EXPERIMENTAL_PREVENT_BAD_BEHAVIOUR = False CARLA_DEFAULT_EXPERIMENTAL_LOAD_LIB_GLOBAL = False diff --git a/source/carla_skin.py b/source/carla_skin.py index 32349ab5c..f399d6cc8 100755 --- a/source/carla_skin.py +++ b/source/carla_skin.py @@ -1040,9 +1040,12 @@ class AbstractPluginSlot(QFrame, PluginEditParentMeta): if self.fIdleTimerId != 0: actRemove.setVisible(False) - menu.addSeparator() + if self.host.exportLV2: + menu.addSeparator() + actExportLV2 = menu.addAction(self.tr("Export LV2...")) - actExportLV2 = menu.addAction(self.tr("Export LV2...")) + else: + actExportLV2 = None # ------------------------------------------------------------- # exec