diff --git a/source/backend/engine/CarlaEngine.cpp b/source/backend/engine/CarlaEngine.cpp index 910220e2d..ee0c28842 100644 --- a/source/backend/engine/CarlaEngine.cpp +++ b/source/backend/engine/CarlaEngine.cpp @@ -378,11 +378,11 @@ bool CarlaEngine::addPlugin(const BinaryType btype, const PluginType ptype, { if (btype == BINARY_NATIVE) { -#ifdef CARLA_OS_WIN +# ifdef CARLA_OS_WIN bridgeBinary += CARLA_OS_SEP_STR "carla-bridge-native.exe"; -#else +# else bridgeBinary += CARLA_OS_SEP_STR "carla-bridge-native"; -#endif +# endif } else { @@ -410,7 +410,78 @@ bool CarlaEngine::addPlugin(const BinaryType btype, const PluginType ptype, bridgeBinary.clear(); } - if (ptype != PLUGIN_INTERNAL && (btype != BINARY_NATIVE || (pData->options.preferPluginBridges && bridgeBinary.isNotEmpty()))) + // Prefer bridges for some specific plugins + bool preferBridges = pData->options.preferPluginBridges; + +# ifdef CARLA_OS_LINUX + if (! preferBridges) + { + if (ptype == PLUGIN_LV2) + { + if (std::strcmp(label, "http://calf.sourceforge.net/plugins/Analyzer") == 0) + preferBridges = true; + if (std::strcmp(label, "http://factorial.hu/plugins/lv2/ir") == 0) + preferBridges = true; + } + else if (ptype == PLUGIN_VST2) + { + /**/ if (std::strncmp(label, "ACE ", 4) == 0 && uniqueId == 1633895765) + preferBridges = true; + else if (std::strncmp(label, "Bazille ", 8) == 0 && uniqueId == 1433421876) + preferBridges = true; + else if (std::strncmp(label, "Diva ", 5) == 0 && uniqueId == 1147754081) + preferBridges = true; + else if (std::strncmp(label, "Filterscape ", 13) == 0 && uniqueId == 1095583057) + preferBridges = true; + else if (std::strncmp(label, "Filterscape VA ", 16) == 0 && uniqueId == 1179866689) + preferBridges = true; + else if (std::strncmp(label, "Filterscape Q6 ", 16) == 0 && uniqueId == 1179865398) + preferBridges = true; + else if (std::strncmp(label, "Hive ", 5) == 0 && uniqueId == 1749636677) + preferBridges = true; + else if (std::strncmp(label, "MFM ", 4) == 0 && uniqueId == 1296452914) + preferBridges = true; + else if (std::strncmp(label, "Podolski ", 9) == 0 && uniqueId == 1349477487) + preferBridges = true; + else if (std::strncmp(label, "Presswerk ", 10) == 0 && uniqueId == 1886548821) + preferBridges = true; + else if (std::strncmp(label, "Protoverb ", 10) == 0 && uniqueId == 1969770582) + preferBridges = true; + else if (std::strncmp(label, "Satin ", 6) == 0 && uniqueId == 1969771348) + preferBridges = true; + else if (std::strncmp(label, "TripleCheese ", 13) == 0 && uniqueId == 1667388281) + preferBridges = true; + else if (std::strncmp(label, "Uhbik Ambience ", 15) == 0 && uniqueId == 1432568113) + preferBridges = true; + else if (std::strncmp(label, "Uhbik Delay ", 12) == 0 && uniqueId == 1432568881) + preferBridges = true; + else if (std::strncmp(label, "Uhbik Equalizer ", 16) == 0 && uniqueId == 1432572209) + preferBridges = true; + else if (std::strncmp(label, "Uhbik Flanger ", 14) == 0 && uniqueId == 1432569393) + preferBridges = true; + else if (std::strncmp(label, "Uhbik GrainDad ", 15) == 0 && uniqueId == 1432569649) + preferBridges = true; + else if (std::strncmp(label, "Uhbik Phaser ", 13) == 0 && uniqueId == 1432571953) + preferBridges = true; + else if (std::strncmp(label, "Uhbik Runciter ", 15) == 0 && uniqueId == 1382232375) + preferBridges = true; + else if (std::strncmp(label, "Uhbik Shifter ", 14) == 0 && uniqueId == 1432572721) + preferBridges = true; + else if (std::strncmp(label, "Uhbik Tremolo ", 14) == 0 && uniqueId == 1432572977) + preferBridges = true; + else if (std::strncmp(label, "Zebra ", 6) == 0 && uniqueId == 1397572658) + preferBridges = true; + else if (std::strncmp(label, "Zebralette ", 11) == 0 && uniqueId == 1397572659) + preferBridges = true; + else if (std::strncmp(label, "ZRev ", 5) == 0 && uniqueId == 1919243824) + preferBridges = true; + else if (std::strncmp(label, "Zebrify ", 8) == 0 && uniqueId == 1397578034) + preferBridges = true; + } + } +# endif + + if (ptype != PLUGIN_INTERNAL && (btype != BINARY_NATIVE || (preferBridges && bridgeBinary.isNotEmpty()))) { if (bridgeBinary.isNotEmpty()) {