diff --git a/c++/carla-backend/carla_engine.cpp b/c++/carla-backend/carla_engine.cpp
index 71c7338..ae2f1ef 100644
--- a/c++/carla-backend/carla_engine.cpp
+++ b/c++/carla-backend/carla_engine.cpp
@@ -263,7 +263,7 @@ short CarlaEngine::addPlugin(const BinaryType btype, const PluginType ptype, con
CarlaPlugin* plugin = nullptr;
#ifndef BUILD_BRIDGE
- if (btype != BINARY_NATIVE || carlaOptions.preferPluginBridges)
+ if (btype != BINARY_NATIVE || (carlaOptions.preferPluginBridges && getBinaryBidgePath(btype) && type == CarlaEngineTypeJack))
{
# ifdef CARLA_ENGINE_JACK
if (carlaOptions.processMode != CarlaBackend::PROCESS_MODE_MULTIPLE_CLIENTS)
diff --git a/c++/carla-bridge/carla_bridge_osc.cpp b/c++/carla-bridge/carla_bridge_osc.cpp
index 54b472a..2352fc9 100644
--- a/c++/carla-bridge/carla_bridge_osc.cpp
+++ b/c++/carla-bridge/carla_bridge_osc.cpp
@@ -256,7 +256,7 @@ int CarlaBridgeOsc::handleMsgMidiProgram(CARLA_BRIDGE_OSC_HANDLE_ARGS)
#ifdef BUILD_BRIDGE_PLUGIN
const int32_t index = argv[0]->i;
- client->setProgram(index);
+ client->setMidiProgram(index);
#else
const int32_t bank = argv[0]->i;
const int32_t program = argv[1]->i;
diff --git a/src/carla.py b/src/carla.py
index 6bab527..6d600d0 100755
--- a/src/carla.py
+++ b/src/carla.py
@@ -1246,8 +1246,9 @@ class CarlaMainW(QMainWindow, ui_carla.Ui_CarlaMainW):
preferredBufferSize = self.settings.value("Engine/PreferredBufferSize", 512, type=int)
preferredSampleRate = self.settings.value("Engine/PreferredSampleRate", 44100, type=int)
- forceStereo = self.settings.value("Engine/ForceStereo", False, type=bool)
- useDssiVstChunks = self.settings.value("Engine/UseDssiVstChunks", False, type=bool)
+ forceStereo = self.settings.value("Engine/ForceStereo", False, type=bool)
+ useDssiVstChunks = self.settings.value("Engine/UseDssiVstChunks", False, type=bool)
+ preferPluginBridges = self.settings.value("Engine/PreferPluginBridges", False, type=bool)
preferUiBridges = self.settings.value("Engine/PreferUiBridges", True, type=bool)
oscUiTimeout = self.settings.value("Engine/OscUiTimeout", 40, type=int)
@@ -1267,6 +1268,7 @@ class CarlaMainW(QMainWindow, ui_carla.Ui_CarlaMainW):
Carla.Host.set_option(OPTION_FORCE_STEREO, forceStereo, "")
Carla.Host.set_option(OPTION_USE_DSSI_VST_CHUNKS, useDssiVstChunks, "")
+ Carla.Host.set_option(OPTION_PREFER_PLUGIN_BRIDGES, preferPluginBridges, "")
Carla.Host.set_option(OPTION_PREFER_UI_BRIDGES, preferUiBridges, "")
Carla.Host.set_option(OPTION_OSC_UI_TIMEOUT, oscUiTimeout, "")
diff --git a/src/shared_settings.py b/src/shared_settings.py
index 0211a07..1e168d1 100644
--- a/src/shared_settings.py
+++ b/src/shared_settings.py
@@ -220,10 +220,11 @@ class SettingsW(QDialog, ui_settings_app.Ui_SettingsW):
self.cb_engine_process_mode.setCurrentIndex(self.settings.value("Engine/ProcessMode", PROCESS_MODE_MULTIPLE_CLIENTS, type=int))
self.sb_engine_max_params.setValue(self.settings.value("Engine/MaxParameters", 200, type=int))
- self.ch_engine_prefer_bridges.setChecked(self.settings.value("Engine/PreferUiBridges", True, type=bool))
+ self.ch_engine_prefer_ui_bridges.setChecked(self.settings.value("Engine/PreferUiBridges", True, type=bool))
self.sb_engine_oscgui_timeout.setValue(self.settings.value("Engine/OscUiTimeout", 4000, type=int))
self.ch_engine_disable_checks.setChecked(self.settings.value("Engine/DisableChecks", bool(not WINDOWS), type=bool))
self.ch_engine_dssi_chunks.setChecked(self.settings.value("Engine/UseDssiVstChunks", False, type=bool))
+ self.ch_engine_prefer_plugin_bridges.setChecked(self.settings.value("Engine/PreferPluginBridges", False, type=bool))
self.ch_engine_force_stereo.setChecked(self.settings.value("Engine/ForceStereo", False, type=bool))
self.ch_engine_process_hp.setChecked(self.settings.value("Engine/ProcessHighPrecision", False, type=bool))
@@ -415,10 +416,11 @@ class SettingsW(QDialog, ui_settings_app.Ui_SettingsW):
self.settings.setValue("Engine/AudioDriver", self.cb_engine_audio_driver.currentText())
self.settings.setValue("Engine/ProcessMode", self.cb_engine_process_mode.currentIndex())
self.settings.setValue("Engine/MaxParameters", self.sb_engine_max_params.value())
- self.settings.setValue("Engine/PreferUiBridges", self.ch_engine_prefer_bridges.isChecked())
+ self.settings.setValue("Engine/PreferUiBridges", self.ch_engine_prefer_ui_bridges.isChecked())
self.settings.setValue("Engine/OscUiTimeout", self.sb_engine_oscgui_timeout.value())
self.settings.setValue("Engine/DisableChecks", self.ch_engine_disable_checks.isChecked())
self.settings.setValue("Engine/UseDssiVstChunks", self.ch_engine_dssi_chunks.isChecked())
+ self.settings.setValue("Engine/PreferPluginBridges", self.ch_engine_prefer_plugin_bridges.isChecked())
self.settings.setValue("Engine/ForceStereo", self.ch_engine_force_stereo.isChecked())
self.settings.setValue("Engine/ProcessHighPrecision", self.ch_engine_process_hp.isChecked())
@@ -490,10 +492,11 @@ class SettingsW(QDialog, ui_settings_app.Ui_SettingsW):
self.cb_engine_audio_driver.setCurrentIndex(0)
self.cb_engine_process_mode.setCurrentIndex(PROCESS_MODE_MULTIPLE_CLIENTS)
self.sb_engine_max_params.setValue(200)
- self.ch_engine_prefer_bridges.setChecked(True)
+ self.ch_engine_prefer_ui_bridges.setChecked(True)
self.sb_engine_oscgui_timeout.setValue(4000)
- self.ch_engine_disable_checks.setChecked(bool(not WINDOWS)) # pre-enable checks for Windows only
+ self.ch_engine_disable_checks.setChecked(False)
self.ch_engine_dssi_chunks.setChecked(False)
+ self.ch_engine_prefer_plugin_bridges.setChecked(False)
self.ch_engine_force_stereo.setChecked(False)
self.ch_engine_process_hp.setChecked(False)
diff --git a/src/ui/settings_app.ui b/src/ui/settings_app.ui
index a6e65d1..3de61d4 100644
--- a/src/ui/settings_app.ui
+++ b/src/ui/settings_app.ui
@@ -203,7 +203,7 @@
0
- 3
+ 0
@@ -931,7 +931,7 @@
-
-
+
Use OSC-GUI bridges when possible, this way separating the UI from DSP code
@@ -967,6 +967,16 @@ You can disable these checks to get a faster scanning time (at your own risk).
+ -
+
+
+ Whenever possible, run the plugins in bridge mode.
+
+
+ Run plugins in bridge mode when possible (EXPERIMENTAL)
+
+
+
-
@@ -981,7 +991,7 @@ This mode is not available for VST plugins.
-
- Process audio in blocks of 8 samples, allowing "per-sample" automation.
+ Process audio in blocks of 8 samples, allowing a higher precision automation.
Recommended to use when 'rendering' a project.
Some plugins might not work properly under this mode.