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