Browse Source

Carla: Add missing ui-bridges paths, clear *_PATH usage

tags/v0.9.0
falkTX 13 years ago
parent
commit
7f7f4a00f4
10 changed files with 321 additions and 294 deletions
  1. +1
    -0
      c++/carla-backend/carla-backend.pro
  2. +30
    -48
      c++/carla-backend/carla_backend.hpp
  3. +24
    -34
      c++/carla-backend/carla_backend_standalone.cpp
  4. +18
    -16
      c++/carla-backend/carla_backend_utils.hpp
  5. +14
    -22
      c++/carla-engine/carla_engine.cpp
  6. +4
    -0
      c++/carla-engine/carla_engine.hpp
  7. +0
    -1
      doc/Carla-TODO
  8. +61
    -47
      src/carla.py
  9. +155
    -109
      src/carla_backend.py
  10. +14
    -17
      src/shared_carla.py

+ 1
- 0
c++/carla-backend/carla-backend.pro View File

@@ -28,6 +28,7 @@ SOURCES = \

HEADERS = \
carla_backend.hpp \
carla_backend_utils.hpp \
carla_backend_standalone.hpp

INCLUDEPATH = . \


+ 30
- 48
c++/carla-backend/carla_backend.hpp View File

@@ -267,106 +267,88 @@ enum OptionsType {
OPTION_OSC_UI_TIMEOUT = 10,

/*!
* Set LADSPA_PATH environment variable.\n
* Default undefined.
*/
OPTION_PATH_LADSPA = 11,

/*!
* Set DSSI_PATH environment variable.\n
* Default undefined.
*/
OPTION_PATH_DSSI = 12,

/*!
* Set LV2_PATH environment variable.\n
* Default undefined.
*/
OPTION_PATH_LV2 = 13,

/*!
* Set VST_PATH environment variable.\n
* Default undefined.
* Set path to the POSIX 32bit plugin bridge executable.\n
* Default unset.
*/
OPTION_PATH_VST = 14,
OPTION_PATH_BRIDGE_POSIX32 = 11,

/*!
* Set GIG_PATH environment variable.\n
* Default undefined.
* Set path to the POSIX 64bit plugin bridge executable.\n
* Default unset.
*/
OPTION_PATH_GIG = 15,
OPTION_PATH_BRIDGE_POSIX64 = 12,

/*!
* Set SF2_PATH environment variable.\n
* Default undefined.
* Set path to the Windows 32bit plugin bridge executable.\n
* Default unset.
*/
OPTION_PATH_SF2 = 16,
OPTION_PATH_BRIDGE_WIN32 = 13,

/*!
* Set SFZ_PATH environment variable.\n
* Default undefined.
* Set path to the Windows 64bit plugin bridge executable.\n
* Default unset.
*/
OPTION_PATH_SFZ = 17,
OPTION_PATH_BRIDGE_WIN64 = 14,

/*!
* Set path to the POSIX 32bit plugin bridge executable.\n
* Set path to the LV2 Gtk2 UI bridge executable.\n
* Default unset.
*/
OPTION_PATH_BRIDGE_POSIX32 = 18,
OPTION_PATH_BRIDGE_LV2_GTK2 = 15,

/*!
* Set path to the POSIX 64bit plugin bridge executable.\n
* Set path to the LV2 Gtk3 UI bridge executable.\n
* Default unset.
*/
OPTION_PATH_BRIDGE_POSIX64 = 19,
OPTION_PATH_BRIDGE_LV2_GTK3 = 16,

/*!
* Set path to the Windows 32bit plugin bridge executable.\n
* Set path to the LV2 Qt4 UI bridge executable.\n
* Default unset.
*/
OPTION_PATH_BRIDGE_WIN32 = 20,
OPTION_PATH_BRIDGE_LV2_QT4 = 17,

/*!
* Set path to the Windows 64bit plugin bridge executable.\n
* Set path to the LV2 Qt5 UI bridge executable.\n
* Default unset.
*/
OPTION_PATH_BRIDGE_WIN64 = 21,
OPTION_PATH_BRIDGE_LV2_QT5 = 18,

/*!
* Set path to the LV2 Gtk2 UI bridge executable.\n
* Set path to the LV2 Cocoa UI bridge executable.\n
* Default unset.
*/
OPTION_PATH_BRIDGE_LV2_GTK2 = 22,
OPTION_PATH_BRIDGE_LV2_COCOA = 19,

/*!
* Set path to the LV2 Gtk3 UI bridge executable.\n
* Set path to the LV2 Windows UI bridge executable.\n
* Default unset.
*/
OPTION_PATH_BRIDGE_LV2_GTK3 = 23,
OPTION_PATH_BRIDGE_LV2_WINDOWS = 20,

/*!
* Set path to the LV2 Qt4 UI bridge executable.\n
* Set path to the LV2 X11 UI bridge executable.\n
* Default unset.
*/
OPTION_PATH_BRIDGE_LV2_QT4 = 24,
OPTION_PATH_BRIDGE_LV2_X11 = 21,

/*!
* Set path to the LV2 X11 UI bridge executable.\n
* Set path to the VST Cocoa UI bridge executable.\n
* Default unset.
*/
OPTION_PATH_BRIDGE_LV2_X11 = 25,
OPTION_PATH_BRIDGE_VST_COCOA = 22,

/*!
* Set path to the VST HWND UI bridge executable.\n
* Default unset.
*/
OPTION_PATH_BRIDGE_VST_HWND = 26,
OPTION_PATH_BRIDGE_VST_HWND = 23,

/*!
* Set path to the VST X11 UI bridge executable.\n
* Default unset.
*/
OPTION_PATH_BRIDGE_VST_X11 = 27
OPTION_PATH_BRIDGE_VST_X11 = 24
};

/*!


+ 24
- 34
c++/carla-backend/carla_backend_standalone.cpp View File

@@ -186,12 +186,16 @@ bool engine_init(const char* driver_name, const char* client_name)
standalone.engine->setOption(CarlaBackend::OPTION_PATH_BRIDGE_POSIX64, 0, standalone.options.bridge_posix64);
standalone.engine->setOption(CarlaBackend::OPTION_PATH_BRIDGE_WIN32, 0, standalone.options.bridge_win32);
standalone.engine->setOption(CarlaBackend::OPTION_PATH_BRIDGE_WIN64, 0, standalone.options.bridge_win64);
standalone.engine->setOption(CarlaBackend::OPTION_PATH_BRIDGE_LV2_GTK2, 0, standalone.options.bridge_lv2gtk2);
standalone.engine->setOption(CarlaBackend::OPTION_PATH_BRIDGE_LV2_GTK3, 0, standalone.options.bridge_lv2gtk3);
standalone.engine->setOption(CarlaBackend::OPTION_PATH_BRIDGE_LV2_QT4, 0, standalone.options.bridge_lv2qt4);
standalone.engine->setOption(CarlaBackend::OPTION_PATH_BRIDGE_LV2_X11, 0, standalone.options.bridge_lv2qt4);
standalone.engine->setOption(CarlaBackend::OPTION_PATH_BRIDGE_VST_HWND, 0, standalone.options.bridge_vsthwnd);
standalone.engine->setOption(CarlaBackend::OPTION_PATH_BRIDGE_VST_X11, 0, standalone.options.bridge_vstx11);
standalone.engine->setOption(CarlaBackend::OPTION_PATH_BRIDGE_LV2_GTK2, 0, standalone.options.bridge_lv2gtk2);
standalone.engine->setOption(CarlaBackend::OPTION_PATH_BRIDGE_LV2_GTK3, 0, standalone.options.bridge_lv2gtk3);
standalone.engine->setOption(CarlaBackend::OPTION_PATH_BRIDGE_LV2_QT4, 0, standalone.options.bridge_lv2qt4);
standalone.engine->setOption(CarlaBackend::OPTION_PATH_BRIDGE_LV2_QT5, 0, standalone.options.bridge_lv2qt5);
standalone.engine->setOption(CarlaBackend::OPTION_PATH_BRIDGE_LV2_COCOA, 0, standalone.options.bridge_lv2cocoa);
standalone.engine->setOption(CarlaBackend::OPTION_PATH_BRIDGE_LV2_WINDOWS, 0, standalone.options.bridge_lv2win);
standalone.engine->setOption(CarlaBackend::OPTION_PATH_BRIDGE_LV2_X11, 0, standalone.options.bridge_lv2qt4);
standalone.engine->setOption(CarlaBackend::OPTION_PATH_BRIDGE_VST_COCOA, 0, standalone.options.bridge_vstcocoa);
standalone.engine->setOption(CarlaBackend::OPTION_PATH_BRIDGE_VST_HWND, 0, standalone.options.bridge_vsthwnd);
standalone.engine->setOption(CarlaBackend::OPTION_PATH_BRIDGE_VST_X11, 0, standalone.options.bridge_vstx11);

if (standalone.procName.isNotEmpty())
standalone.engine->setOption(CarlaBackend::OPTION_PROCESS_NAME, 0, standalone.procName);
@@ -1493,14 +1497,8 @@ void set_option(CarlaBackend::OptionsType option, int value, const char* value_s
qDebug("CarlaBackendStandalone::set_option(%s, %i, \"%s\")", CarlaBackend::OptionsType2Str(option), value, value_str);

if (standalone.engine)
{
standalone.engine->setOption(option, value, value_str);

if (option >= CarlaBackend::OPTION_PATH_LADSPA && option <= CarlaBackend::OPTION_PATH_SFZ)
// no need to set twice
return;
}

switch (option)
{
case CarlaBackend::OPTION_PROCESS_NAME:
@@ -1550,28 +1548,6 @@ void set_option(CarlaBackend::OptionsType option, int value, const char* value_s
standalone.options.oscUiTimeout = value;
break;

case CarlaBackend::OPTION_PATH_LADSPA:
carla_setenv("LADSPA_PATH", value_str);
break;
case CarlaBackend::OPTION_PATH_DSSI:
carla_setenv("DSSI_PATH", value_str);
break;
case CarlaBackend::OPTION_PATH_LV2:
carla_setenv("LV2_PATH", value_str);
break;
case CarlaBackend::OPTION_PATH_VST:
carla_setenv("VST_PATH", value_str);
break;
case CarlaBackend::OPTION_PATH_GIG:
carla_setenv("GIG_PATH", value_str);
break;
case CarlaBackend::OPTION_PATH_SF2:
carla_setenv("SF2_PATH", value_str);
break;
case CarlaBackend::OPTION_PATH_SFZ:
carla_setenv("SFZ_PATH", value_str);
break;

case CarlaBackend::OPTION_PATH_BRIDGE_POSIX32:
standalone.options.bridge_posix32 = value_str;
break;
@@ -1584,6 +1560,7 @@ void set_option(CarlaBackend::OptionsType option, int value, const char* value_s
case CarlaBackend::OPTION_PATH_BRIDGE_WIN64:
standalone.options.bridge_win64 = value_str;
break;

case CarlaBackend::OPTION_PATH_BRIDGE_LV2_GTK2:
standalone.options.bridge_lv2gtk2 = value_str;
break;
@@ -1593,9 +1570,22 @@ void set_option(CarlaBackend::OptionsType option, int value, const char* value_s
case CarlaBackend::OPTION_PATH_BRIDGE_LV2_QT4:
standalone.options.bridge_lv2qt4 = value_str;
break;
case CarlaBackend::OPTION_PATH_BRIDGE_LV2_QT5:
standalone.options.bridge_lv2qt5 = value_str;
break;
case CarlaBackend::OPTION_PATH_BRIDGE_LV2_COCOA:
standalone.options.bridge_lv2cocoa = value_str;
break;
case CarlaBackend::OPTION_PATH_BRIDGE_LV2_WINDOWS:
standalone.options.bridge_lv2win = value_str;
break;
case CarlaBackend::OPTION_PATH_BRIDGE_LV2_X11:
standalone.options.bridge_lv2x11 = value_str;
break;

case CarlaBackend::OPTION_PATH_BRIDGE_VST_COCOA:
standalone.options.bridge_vstcocoa = value_str;
break;
case CarlaBackend::OPTION_PATH_BRIDGE_VST_HWND:
standalone.options.bridge_vsthwnd = value_str;
break;


+ 18
- 16
c++/carla-backend/carla_backend_utils.hpp View File

@@ -21,10 +21,16 @@
#include "carla_backend.hpp"
#include "carla_utils.hpp"

#include <QtCore/QString>

CARLA_BACKEND_START_NAMESPACE

/*!
* @defgroup CarlaBackendUtils Carla Backend Utils
*
* Carla Backend Utils
*
* @{
*/

static inline
const char* BinaryType2Str(const BinaryType& type)
{
@@ -229,20 +235,6 @@ const char* OptionsType2Str(const OptionsType& type)
return "OPTION_PREFER_UI_BRIDGES";
case OPTION_OSC_UI_TIMEOUT:
return "OPTION_OSC_UI_TIMEOUT";
case OPTION_PATH_LADSPA:
return "OPTION_PATH_LADSPA";
case OPTION_PATH_DSSI:
return "OPTION_PATH_DSSI";
case OPTION_PATH_LV2:
return "OPTION_PATH_LV2";
case OPTION_PATH_VST:
return "OPTION_PATH_VST";
case OPTION_PATH_GIG:
return "OPTION_PATH_GIG";
case OPTION_PATH_SF2:
return "OPTION_PATH_SF2";
case OPTION_PATH_SFZ:
return "OPTION_PATH_SFZ";
case OPTION_PATH_BRIDGE_POSIX32:
return "OPTION_PATH_BRIDGE_POSIX32";
case OPTION_PATH_BRIDGE_POSIX64:
@@ -257,8 +249,16 @@ const char* OptionsType2Str(const OptionsType& type)
return "OPTION_PATH_BRIDGE_LV2_GTK3";
case OPTION_PATH_BRIDGE_LV2_QT4:
return "OPTION_PATH_BRIDGE_LV2_QT4";
case OPTION_PATH_BRIDGE_LV2_QT5:
return "OPTION_PATH_BRIDGE_LV2_QT5";
case OPTION_PATH_BRIDGE_LV2_COCOA:
return "OPTION_PATH_BRIDGE_LV2_COCOA";
case OPTION_PATH_BRIDGE_LV2_WINDOWS:
return "OPTION_PATH_BRIDGE_LV2_WINDOWS";
case OPTION_PATH_BRIDGE_LV2_X11:
return "OPTION_PATH_BRIDGE_LV2_X11";
case OPTION_PATH_BRIDGE_VST_COCOA:
return "OPTION_PATH_BRIDGE_VST_COCOA";
case OPTION_PATH_BRIDGE_VST_HWND:
return "OPTION_PATH_BRIDGE_VST_HWND";
case OPTION_PATH_BRIDGE_VST_X11:
@@ -515,6 +515,8 @@ PluginCategory getPluginCategoryFromName(const char* const name)
return PLUGIN_CATEGORY_NONE;
}

/**@}*/

CARLA_BACKEND_END_NAMESPACE

#endif // CARLA_BACKEND_UTILS_HPP

+ 14
- 22
c++/carla-engine/carla_engine.cpp View File

@@ -1127,28 +1127,6 @@ void CarlaEngine::setOption(const OptionsType option, const int value, const cha
options.oscUiTimeout = value;
break;

case OPTION_PATH_LADSPA:
carla_setenv("LADSPA_PATH", valueStr);
break;
case OPTION_PATH_DSSI:
carla_setenv("DSSI_PATH", valueStr);
break;
case OPTION_PATH_LV2:
carla_setenv("LV2_PATH", valueStr);
break;
case OPTION_PATH_VST:
carla_setenv("VST_PATH", valueStr);
break;
case OPTION_PATH_GIG:
carla_setenv("GIG_PATH", valueStr);
break;
case OPTION_PATH_SF2:
carla_setenv("SF2_PATH", valueStr);
break;
case OPTION_PATH_SFZ:
carla_setenv("SFZ_PATH", valueStr);
break;

case OPTION_PATH_BRIDGE_POSIX32:
options.bridge_posix32 = valueStr;
break;
@@ -1161,6 +1139,7 @@ void CarlaEngine::setOption(const OptionsType option, const int value, const cha
case OPTION_PATH_BRIDGE_WIN64:
options.bridge_win64 = valueStr;
break;

case OPTION_PATH_BRIDGE_LV2_GTK2:
options.bridge_lv2gtk2 = valueStr;
break;
@@ -1170,9 +1149,22 @@ void CarlaEngine::setOption(const OptionsType option, const int value, const cha
case OPTION_PATH_BRIDGE_LV2_QT4:
options.bridge_lv2qt4 = valueStr;
break;
case OPTION_PATH_BRIDGE_LV2_QT5:
options.bridge_lv2qt5 = valueStr;
break;
case OPTION_PATH_BRIDGE_LV2_COCOA:
options.bridge_lv2cocoa = valueStr;
break;
case OPTION_PATH_BRIDGE_LV2_WINDOWS:
options.bridge_lv2win = valueStr;
break;
case OPTION_PATH_BRIDGE_LV2_X11:
options.bridge_lv2x11 = valueStr;
break;

case OPTION_PATH_BRIDGE_VST_COCOA:
options.bridge_vstcocoa = valueStr;
break;
case OPTION_PATH_BRIDGE_VST_HWND:
options.bridge_vsthwnd = valueStr;
break;


+ 4
- 0
c++/carla-engine/carla_engine.hpp View File

@@ -232,7 +232,11 @@ struct CarlaEngineOptions {
CarlaString bridge_lv2gtk2;
CarlaString bridge_lv2gtk3;
CarlaString bridge_lv2qt4;
CarlaString bridge_lv2qt5;
CarlaString bridge_lv2cocoa;
CarlaString bridge_lv2win;
CarlaString bridge_lv2x11;
CarlaString bridge_vstcocoa;
CarlaString bridge_vsthwnd;
CarlaString bridge_vstx11;



+ 0
- 1
doc/Carla-TODO View File

@@ -1,7 +1,6 @@
# Carla TODO

GENERAL:
- add lv2-cocoa+hwmd ui paths
- add direct program access on ui-dialogs (needed for standalone bridges), maybe add extra buttons too
- implement osc-based uis in bridge mode
- implement midi-learn (new dialog)


+ 61
- 47
src/carla.py View File

@@ -253,13 +253,6 @@ class SearchPluginsThread(QThread):

def run(self):
global LADSPA_PATH, DSSI_PATH, LV2_PATH, VST_PATH, GIG_PATH, SF2_PATH, SFZ_PATH
os.environ['LADSPA_PATH'] = splitter.join(LADSPA_PATH)
os.environ['DSSI_PATH'] = splitter.join(DSSI_PATH)
os.environ['LV2_PATH'] = splitter.join(LV2_PATH)
os.environ['VST_PATH'] = splitter.join(VST_PATH)
os.environ['GIG_PATH'] = splitter.join(GIG_PATH)
os.environ['SF2_PATH'] = splitter.join(SF2_PATH)
os.environ['SFZ_PATH'] = splitter.join(SFZ_PATH)

self.blacklist = toList(self.settings_db.value("Plugins/Blacklisted", []))

@@ -1274,33 +1267,6 @@ class CarlaMainW(QMainWindow, ui_carla.Ui_CarlaMainW):
Carla.Host.set_option(OPTION_PREFER_UI_BRIDGES, preferUiBridges, "")
Carla.Host.set_option(OPTION_OSC_UI_TIMEOUT, oscUiTimeout, "")

# ---------------------------------------------
# bridge paths

if carla_bridge_posix32:
Carla.Host.set_option(OPTION_PATH_BRIDGE_POSIX32, 0, carla_bridge_posix32)

if carla_bridge_posix64:
Carla.Host.set_option(OPTION_PATH_BRIDGE_POSIX64, 0, carla_bridge_posix64)

if carla_bridge_win32:
Carla.Host.set_option(OPTION_PATH_BRIDGE_WIN32, 0, carla_bridge_win32)

if carla_bridge_win64:
Carla.Host.set_option(OPTION_PATH_BRIDGE_WIN64, 0, carla_bridge_win64)

if carla_bridge_lv2_gtk2:
Carla.Host.set_option(OPTION_PATH_BRIDGE_LV2_GTK2, 0, carla_bridge_lv2_gtk2)

if carla_bridge_lv2_qt4:
Carla.Host.set_option(OPTION_PATH_BRIDGE_LV2_QT4, 0, carla_bridge_lv2_qt4)

if carla_bridge_lv2_x11:
Carla.Host.set_option(OPTION_PATH_BRIDGE_LV2_X11, 0, carla_bridge_lv2_x11)

if carla_bridge_vst_x11:
Carla.Host.set_option(OPTION_PATH_BRIDGE_VST_X11, 0, carla_bridge_vst_x11)

# ---------------------------------------------
# start

@@ -1980,15 +1946,13 @@ class CarlaMainW(QMainWindow, ui_carla.Ui_CarlaMainW):
# ---------------------------------------------
# plugin checks

disableChecks = self.settings.value("Engine/DisableChecks", bool(not WINDOWS), type=bool)
disableChecks = self.settings.value("Engine/DisableChecks", False, type=bool)

if disableChecks:
os.environ["CARLA_DISCOVERY_NO_PROCESSING_CHECKS"] = "true"
else:
try:
os.environ.pop("CARLA_DISCOVERY_NO_PROCESSING_CHECKS")
except:
pass

elif os.getenv("CARLA_DISCOVERY_NO_PROCESSING_CHECKS"):
os.environ.pop("CARLA_DISCOVERY_NO_PROCESSING_CHECKS")

# ---------------------------------------------
# plugin paths
@@ -2002,13 +1966,13 @@ class CarlaMainW(QMainWindow, ui_carla.Ui_CarlaMainW):
SF2_PATH = toList(self.settings.value("Paths/SF2", SF2_PATH))
SFZ_PATH = toList(self.settings.value("Paths/SFZ", SFZ_PATH))

Carla.Host.set_option(OPTION_PATH_LADSPA, 0, splitter.join(LADSPA_PATH))
Carla.Host.set_option(OPTION_PATH_DSSI, 0, splitter.join(DSSI_PATH))
Carla.Host.set_option(OPTION_PATH_LV2, 0, splitter.join(LV2_PATH))
Carla.Host.set_option(OPTION_PATH_VST, 0, splitter.join(VST_PATH))
Carla.Host.set_option(OPTION_PATH_GIG, 0, splitter.join(GIG_PATH))
Carla.Host.set_option(OPTION_PATH_SF2, 0, splitter.join(SF2_PATH))
Carla.Host.set_option(OPTION_PATH_SFZ, 0, splitter.join(SFZ_PATH))
os.environ["LADSPA_PATH"] = splitter.join(LADSPA_PATH)
os.environ["DSSI_PATH"] = splitter.join(DSSI_PATH)
os.environ["LV2_PATH"] = splitter.join(LV2_PATH)
os.environ["VST_PATH"] = splitter.join(VST_PATH)
os.environ["GIG_PATH"] = splitter.join(GIG_PATH)
os.environ["SF2_PATH"] = splitter.join(SF2_PATH)
os.environ["SFZ_PATH"] = splitter.join(SFZ_PATH)

def timerEvent(self, event):
if event.timerId() == self.TIMER_GUI_STUFF:
@@ -2016,9 +1980,11 @@ class CarlaMainW(QMainWindow, ui_carla.Ui_CarlaMainW):
if pwidget: pwidget.check_gui_stuff()
if self.m_engine_started and self.m_pluginCount > 0:
Carla.Host.idle_guis()

elif event.timerId() == self.TIMER_GUI_STUFF2:
for pwidget in self.m_plugin_list:
if pwidget: pwidget.check_gui_stuff2()

QMainWindow.timerEvent(self, event)

def closeEvent(self, event):
@@ -2103,10 +2069,57 @@ if __name__ == '__main__':
elif os.path.exists(argument):
projectFilename = argument

# Init backend
Carla.Host = Host(libPrefix)
Carla.Host.set_callback_function(callback_function)
Carla.Host.set_option(OPTION_PROCESS_NAME, 0, "carla")

# Set bridge paths
if carla_bridge_posix32:
Carla.Host.set_option(OPTION_PATH_BRIDGE_POSIX32, 0, carla_bridge_posix32)

if carla_bridge_posix64:
Carla.Host.set_option(OPTION_PATH_BRIDGE_POSIX64, 0, carla_bridge_posix64)

if carla_bridge_win32:
Carla.Host.set_option(OPTION_PATH_BRIDGE_WIN32, 0, carla_bridge_win32)

if carla_bridge_win64:
Carla.Host.set_option(OPTION_PATH_BRIDGE_WIN64, 0, carla_bridge_win64)

if WINDOWS:
if carla_bridge_lv2_windows:
Carla.Host.set_option(OPTION_PATH_BRIDGE_LV2_WINDOWS, 0, carla_bridge_lv2_windows)

if carla_bridge_vst_hwnd:
Carla.Host.set_option(OPTION_PATH_BRIDGE_VST_HWND, 0, carla_bridge_vst_hwnd)

elif MACOS:
if carla_bridge_lv2_cocoa:
Carla.Host.set_option(OPTION_PATH_BRIDGE_LV2_COCOA, 0, carla_bridge_lv2_cocoa)

if carla_bridge_vst_cocoa:
Carla.Host.set_option(OPTION_PATH_BRIDGE_VST_COCOA, 0, carla_bridge_vst_cocoa)

else:
if carla_bridge_lv2_gtk2:
Carla.Host.set_option(OPTION_PATH_BRIDGE_LV2_GTK2, 0, carla_bridge_lv2_gtk2)

if carla_bridge_lv2_gtk3:
Carla.Host.set_option(OPTION_PATH_BRIDGE_LV2_GTK3, 0, carla_bridge_lv2_gtk3)

if carla_bridge_lv2_qt4:
Carla.Host.set_option(OPTION_PATH_BRIDGE_LV2_QT4, 0, carla_bridge_lv2_qt4)

if carla_bridge_lv2_qt5:
Carla.Host.set_option(OPTION_PATH_BRIDGE_LV2_QT5, 0, carla_bridge_lv2_qt5)

if carla_bridge_lv2_x11:
Carla.Host.set_option(OPTION_PATH_BRIDGE_LV2_X11, 0, carla_bridge_lv2_x11)

if carla_bridge_vst_x11:
Carla.Host.set_option(OPTION_PATH_BRIDGE_VST_X11, 0, carla_bridge_vst_x11)

# Set available drivers
driverCount = Carla.Host.get_engine_driver_count()
driverList = []
@@ -2125,6 +2138,7 @@ if __name__ == '__main__':
# Show GUI
Carla.gui.show()

# Load project file if set
if projectFilename:
Carla.gui.m_project_filename = projectFilename
Carla.gui.loadProjectLater()


+ 155
- 109
src/carla_backend.py View File

@@ -252,12 +252,17 @@ carla_bridge_posix64 = ""
carla_bridge_win32 = ""
carla_bridge_win64 = ""

carla_bridge_lv2_gtk2 = ""
carla_bridge_lv2_gtk3 = ""
carla_bridge_lv2_qt4 = ""
carla_bridge_lv2_x11 = ""
carla_bridge_vst_hwnd = ""
carla_bridge_vst_x11 = ""
carla_bridge_lv2_gtk2 = ""
carla_bridge_lv2_gtk3 = ""
carla_bridge_lv2_qt4 = ""
carla_bridge_lv2_qt5 = ""
carla_bridge_lv2_cocoa = ""
carla_bridge_lv2_windows = ""
carla_bridge_lv2_x11 = ""

carla_bridge_vst_cocoa = ""
carla_bridge_vst_hwnd = ""
carla_bridge_vst_x11 = ""

if WINDOWS:
carla_libname = "carla_backend.dll"
@@ -291,33 +296,6 @@ else:
carla_library_path = os.path.join(p, "carla", carla_libname)
break

# find carla_discovery_native
if os.path.exists(os.path.join(CWDpp, "carla-discovery", "carla-discovery-native")):
carla_discovery_native = os.path.join(CWDpp, "carla-discovery", "carla-discovery-native")
else:
for p in PATH:
if os.path.exists(os.path.join(p, "carla-discovery-native")):
carla_discovery_native = os.path.join(p, "carla-discovery-native")
break

# find carla_discovery_posix32
if os.path.exists(os.path.join(CWDpp, "carla-discovery", "carla-discovery-posix32")):
carla_discovery_posix32 = os.path.join(CWDpp, "carla-discovery", "carla-discovery-posix32")
else:
for p in PATH:
if os.path.exists(os.path.join(p, "carla-discovery-posix32")):
carla_discovery_posix32 = os.path.join(p, "carla-discovery-posix32")
break

# find carla_discovery_posix64
if os.path.exists(os.path.join(CWDpp, "carla-discovery", "carla-discovery-posix64")):
carla_discovery_posix64 = os.path.join(CWDpp, "carla-discovery", "carla-discovery-posix64")
else:
for p in PATH:
if os.path.exists(os.path.join(p, "carla-discovery-posix64")):
carla_discovery_posix64 = os.path.join(p, "carla-discovery-posix64")
break

# find carla_discovery_win32
if os.path.exists(os.path.join(CWDpp, "carla-discovery", "carla-discovery-win32.exe")):
carla_discovery_win32 = os.path.join(CWDpp, "carla-discovery", "carla-discovery-win32.exe")
@@ -336,24 +314,6 @@ else:
carla_discovery_win64 = os.path.join(p, "carla-discovery-win64.exe")
break

# find carla_bridge_posix32
if os.path.exists(os.path.join(CWDpp, "carla-bridge", "carla-bridge-posix32")):
carla_bridge_posix32 = os.path.join(CWDpp, "carla-bridge", "carla-bridge-posix32")
else:
for p in PATH:
if os.path.exists(os.path.join(p, "carla-bridge-posix32")):
carla_bridge_posix32 = os.path.join(p, "carla-bridge-posix32")
break

# find carla_bridge_posix64
if os.path.exists(os.path.join(CWDpp, "carla-bridge", "carla-bridge-posix64")):
carla_bridge_posix64 = os.path.join(CWDpp, "carla-bridge", "carla-bridge-posix64")
else:
for p in PATH:
if os.path.exists(os.path.join(p, "carla-bridge-posix64")):
carla_bridge_posix64 = os.path.join(p, "carla-bridge-posix64")
break

# find carla_bridge_win32
if os.path.exists(os.path.join(CWDpp, "carla-bridge", "carla-bridge-win32.exe")):
carla_bridge_win32 = os.path.join(CWDpp, "carla-bridge", "carla-bridge-win32.exe")
@@ -372,59 +332,145 @@ else:
carla_bridge_win64 = os.path.join(p, "carla-bridge-win64.exe")
break

# find carla_bridge_lv2_gtk2
if os.path.exists(os.path.join(CWDpp, "carla-bridge", "carla-bridge-lv2-gtk2")):
carla_bridge_lv2_gtk2 = os.path.join(CWDpp, "carla-bridge", "carla-bridge-lv2-gtk2")
else:
for p in PATH:
if os.path.exists(os.path.join(p, "carla-bridge-lv2-gtk2")):
carla_bridge_lv2_gtk2 = os.path.join(p, "carla-bridge-lv2-gtk2")
break

# find carla_bridge_lv2_gtk3
if os.path.exists(os.path.join(CWDpp, "carla-bridge", "carla-bridge-lv2-gtk3")):
carla_bridge_lv2_gtk3 = os.path.join(CWDpp, "carla-bridge", "carla-bridge-lv2-gtk3")
else:
for p in PATH:
if os.path.exists(os.path.join(p, "carla-bridge-lv2-gtk3")):
carla_bridge_lv2_gtk3 = os.path.join(p, "carla-bridge-lv2-gtk3")
break

# find carla_bridge_lv2_qt4
if os.path.exists(os.path.join(CWDpp, "carla-bridge", "carla-bridge-lv2-qt4")):
carla_bridge_lv2_qt4 = os.path.join(CWDpp, "carla-bridge", "carla-bridge-lv2-qt4")
else:
for p in PATH:
if os.path.exists(os.path.join(p, "carla-bridge-lv2-qt4")):
carla_bridge_lv2_qt4 = os.path.join(p, "carla-bridge-lv2-qt4")
break
if not WINDOWS:
# find carla_discovery_native
if os.path.exists(os.path.join(CWDpp, "carla-discovery", "carla-discovery-native")):
carla_discovery_native = os.path.join(CWDpp, "carla-discovery", "carla-discovery-native")
else:
for p in PATH:
if os.path.exists(os.path.join(p, "carla-discovery-native")):
carla_discovery_native = os.path.join(p, "carla-discovery-native")
break

# find carla_discovery_posix32
if os.path.exists(os.path.join(CWDpp, "carla-discovery", "carla-discovery-posix32")):
carla_discovery_posix32 = os.path.join(CWDpp, "carla-discovery", "carla-discovery-posix32")
else:
for p in PATH:
if os.path.exists(os.path.join(p, "carla-discovery-posix32")):
carla_discovery_posix32 = os.path.join(p, "carla-discovery-posix32")
break

# find carla_discovery_posix64
if os.path.exists(os.path.join(CWDpp, "carla-discovery", "carla-discovery-posix64")):
carla_discovery_posix64 = os.path.join(CWDpp, "carla-discovery", "carla-discovery-posix64")
else:
for p in PATH:
if os.path.exists(os.path.join(p, "carla-discovery-posix64")):
carla_discovery_posix64 = os.path.join(p, "carla-discovery-posix64")
break

# find carla_bridge_posix32
if os.path.exists(os.path.join(CWDpp, "carla-bridge", "carla-bridge-posix32")):
carla_bridge_posix32 = os.path.join(CWDpp, "carla-bridge", "carla-bridge-posix32")
else:
for p in PATH:
if os.path.exists(os.path.join(p, "carla-bridge-posix32")):
carla_bridge_posix32 = os.path.join(p, "carla-bridge-posix32")
break

# find carla_bridge_posix64
if os.path.exists(os.path.join(CWDpp, "carla-bridge", "carla-bridge-posix64")):
carla_bridge_posix64 = os.path.join(CWDpp, "carla-bridge", "carla-bridge-posix64")
else:
for p in PATH:
if os.path.exists(os.path.join(p, "carla-bridge-posix64")):
carla_bridge_posix64 = os.path.join(p, "carla-bridge-posix64")
break

# find carla_bridge_lv2_x11
if os.path.exists(os.path.join(CWDpp, "carla-bridge", "carla-bridge-lv2-x11")):
carla_bridge_lv2_x11 = os.path.join(CWDpp, "carla-bridge", "carla-bridge-lv2-x11")
else:
for p in PATH:
if os.path.exists(os.path.join(p, "carla-bridge-lv2-x11")):
carla_bridge_lv2_x11 = os.path.join(p, "carla-bridge-lv2-x11")
break
if WINDOWS:
# find carla_bridge_lv2_windows
if os.path.exists(os.path.join(CWDpp, "carla-bridge", "carla-bridge-lv2-windows.exe")):
carla_bridge_lv2_windows = os.path.join(CWDpp, "carla-bridge", "carla-bridge-lv2-windows.exe")
else:
for p in PATH:
if os.path.exists(os.path.join(p, "carla-bridge-lv2-windows.exe")):
carla_bridge_lv2_windows = os.path.join(p, "carla-bridge-lv2-windows.exe")
break

# find carla_bridge_vst_hwnd
if os.path.exists(os.path.join(CWDpp, "carla-bridge", "carla-bridge-vst-hwnd.exe")):
carla_bridge_vst_hwnd = os.path.join(CWDpp, "carla-bridge", "carla-bridge-vst-hwnd.exe")
else:
for p in PATH:
if os.path.exists(os.path.join(p, "carla-bridge-vst-hwnd.exe")):
carla_bridge_vst_hwnd = os.path.join(p, "carla-bridge-vst-hwnd.exe")
break

# find carla_bridge_vst_hwnd
if os.path.exists(os.path.join(CWDpp, "carla-bridge", "carla-bridge-vst-hwnd.exe")):
carla_bridge_vst_hwnd = os.path.join(CWDpp, "carla-bridge", "carla-bridge-vst-hwnd.exe")
else:
for p in PATH:
if os.path.exists(os.path.join(p, "carla-bridge-vst-hwnd.exe")):
carla_bridge_vst_hwnd = os.path.join(p, "carla-bridge-vst-hwnd.exe")
break
elif MACOS:
# find carla_bridge_lv2_cocoa
if os.path.exists(os.path.join(CWDpp, "carla-bridge", "carla-bridge-lv2-cocoa")):
carla_bridge_lv2_cocoa = os.path.join(CWDpp, "carla-bridge", "carla-bridge-lv2-cocoa")
else:
for p in PATH:
if os.path.exists(os.path.join(p, "carla-bridge-lv2-cocoa")):
carla_bridge_lv2_cocoa = os.path.join(p, "carla-bridge-lv2-cocoa")
break

# find carla_bridge_vst_cocoa
if os.path.exists(os.path.join(CWDpp, "carla-bridge", "carla-bridge-vst-cocoa")):
carla_bridge_vst_cocoa = os.path.join(CWDpp, "carla-bridge", "carla-bridge-vst-cocoa")
else:
for p in PATH:
if os.path.exists(os.path.join(p, "carla-bridge-vst-cocoa")):
carla_bridge_vst_cocoa = os.path.join(p, "carla-bridge-vst-cocoa")
break

# find carla_bridge_vst_x11
if os.path.exists(os.path.join(CWDpp, "carla-bridge", "carla-bridge-vst-x11")):
carla_bridge_vst_x11 = os.path.join(CWDpp, "carla-bridge", "carla-bridge-vst-x11")
else:
for p in PATH:
if os.path.exists(os.path.join(p, "carla-bridge-vst-x11")):
carla_bridge_vst_x11 = os.path.join(p, "carla-bridge-vst-x11")
break
# find carla_bridge_lv2_gtk2
if os.path.exists(os.path.join(CWDpp, "carla-bridge", "carla-bridge-lv2-gtk2")):
carla_bridge_lv2_gtk2 = os.path.join(CWDpp, "carla-bridge", "carla-bridge-lv2-gtk2")
else:
for p in PATH:
if os.path.exists(os.path.join(p, "carla-bridge-lv2-gtk2")):
carla_bridge_lv2_gtk2 = os.path.join(p, "carla-bridge-lv2-gtk2")
break

# find carla_bridge_lv2_gtk3
if os.path.exists(os.path.join(CWDpp, "carla-bridge", "carla-bridge-lv2-gtk3")):
carla_bridge_lv2_gtk3 = os.path.join(CWDpp, "carla-bridge", "carla-bridge-lv2-gtk3")
else:
for p in PATH:
if os.path.exists(os.path.join(p, "carla-bridge-lv2-gtk3")):
carla_bridge_lv2_gtk3 = os.path.join(p, "carla-bridge-lv2-gtk3")
break

# find carla_bridge_lv2_qt4
if os.path.exists(os.path.join(CWDpp, "carla-bridge", "carla-bridge-lv2-qt4")):
carla_bridge_lv2_qt4 = os.path.join(CWDpp, "carla-bridge", "carla-bridge-lv2-qt4")
else:
for p in PATH:
if os.path.exists(os.path.join(p, "carla-bridge-lv2-qt4")):
carla_bridge_lv2_qt4 = os.path.join(p, "carla-bridge-lv2-qt4")
break

# find carla_bridge_lv2_qt5
if os.path.exists(os.path.join(CWDpp, "carla-bridge", "carla-bridge-lv2-qt5")):
carla_bridge_lv2_qt5 = os.path.join(CWDpp, "carla-bridge", "carla-bridge-lv2-qt5")
else:
for p in PATH:
if os.path.exists(os.path.join(p, "carla-bridge-lv2-qt5")):
carla_bridge_lv2_qt5 = os.path.join(p, "carla-bridge-lv2-qt5")
break

if LINUX:
# find carla_bridge_lv2_x11
if os.path.exists(os.path.join(CWDpp, "carla-bridge", "carla-bridge-lv2-x11")):
carla_bridge_lv2_x11 = os.path.join(CWDpp, "carla-bridge", "carla-bridge-lv2-x11")
else:
for p in PATH:
if os.path.exists(os.path.join(p, "carla-bridge-lv2-x11")):
carla_bridge_lv2_x11 = os.path.join(p, "carla-bridge-lv2-x11")
break

# find carla_bridge_vst_x11
if os.path.exists(os.path.join(CWDpp, "carla-bridge", "carla-bridge-vst-x11")):
carla_bridge_vst_x11 = os.path.join(CWDpp, "carla-bridge", "carla-bridge-vst-x11")
else:
for p in PATH:
if os.path.exists(os.path.join(p, "carla-bridge-vst-x11")):
carla_bridge_vst_x11 = os.path.join(p, "carla-bridge-vst-x11")
break

# ------------------------------------------------------------------------------------------------
# Plugin Query (helper functions)
@@ -447,7 +493,7 @@ def findBinaries(bPATH, OS):

def findLV2Bundles(bPATH):
bundles = []
extensions = (".lv2", ".lV2", ".LV2", ".Lv2")
extensions = (".lv2", ".lV2", ".LV2", ".Lv2") if not WINDOWS else (".lv2",)

for root, dirs, files in os.walk(bPATH):
for dir_ in [dir_ for dir_ in dirs if dir_.endswith(extensions)]:
@@ -459,11 +505,11 @@ def findSoundKits(bPATH, stype):
soundfonts = []

if stype == "gig":
extensions = (".gig", ".giG", ".gIG", ".GIG", ".GIg", ".Gig")
extensions = (".gig", ".giG", ".gIG", ".GIG", ".GIg", ".Gig") if not WINDOWS else (".gig",)
elif stype == "sf2":
extensions = (".sf2", ".sF2", ".SF2", ".Sf2")
extensions = (".sf2", ".sF2", ".SF2", ".Sf2") if not WINDOWS else (".sf2",)
elif stype == "sfz":
extensions = (".sfz", ".sfZ", ".sFZ", ".SFZ", ".SFz", ".Sfz")
extensions = (".sfz", ".sfZ", ".sFZ", ".SFZ", ".SFz", ".Sfz") if not WINDOWS else (".sfz",)
else:
return []

@@ -482,7 +528,7 @@ def findDSSIGUI(filename, name, label):
check_label = label
check_sname = short_name

if check_name[-1] != "_": check_name += "_"
if check_name[-1] != "_": check_name += "_"
if check_label[-1] != "_": check_label += "_"
if check_sname[-1] != "_": check_sname += "_"

@@ -507,7 +553,7 @@ PLUGIN_QUERY_API_VERSION = 1
PyPluginInfo = {
'API': PLUGIN_QUERY_API_VERSION,
'build': 0, # BINARY_NONE
'type': 0, # PLUGIN_NONE,
'type': 0, # PLUGIN_NONE
'hints': 0x0,
'binary': "",
'name': "",
@@ -528,7 +574,7 @@ PyPluginInfo = {
}

def runCarlaDiscovery(itype, stype, filename, tool, isWine=False):
fake_label = os.path.basename(filename).rsplit(".", 1)[0]
fakeLabel = os.path.basename(filename).rsplit(".", 1)[0]
plugins = []
command = []

@@ -576,9 +622,9 @@ def runCarlaDiscovery(itype, stype, filename, tool, isWine=False):
prop, value = line.replace("carla-discovery::", "").split("::", 1)

if prop == "name":
pinfo['name'] = value if value else fake_label
pinfo['name'] = value if value else fakeLabel
elif prop == "label":
pinfo['label'] = value if value else fake_label
pinfo['label'] = value if value else fakeLabel
elif prop == "maker":
pinfo['maker'] = value
elif prop == "copyright":


+ 14
- 17
src/shared_carla.py View File

@@ -156,23 +156,20 @@ OPTION_USE_DSSI_VST_CHUNKS = 7
OPTION_PREFER_PLUGIN_BRIDGES = 8
OPTION_PREFER_UI_BRIDGES = 9
OPTION_OSC_UI_TIMEOUT = 10
OPTION_PATH_LADSPA = 11
OPTION_PATH_DSSI = 12
OPTION_PATH_LV2 = 13
OPTION_PATH_VST = 14
OPTION_PATH_GIG = 15
OPTION_PATH_SF2 = 16
OPTION_PATH_SFZ = 17
OPTION_PATH_BRIDGE_POSIX32 = 18
OPTION_PATH_BRIDGE_POSIX64 = 19
OPTION_PATH_BRIDGE_WIN32 = 20
OPTION_PATH_BRIDGE_WIN64 = 21
OPTION_PATH_BRIDGE_LV2_GTK2 = 22
OPTION_PATH_BRIDGE_LV2_GTK3 = 23
OPTION_PATH_BRIDGE_LV2_QT4 = 24
OPTION_PATH_BRIDGE_LV2_X11 = 25
OPTION_PATH_BRIDGE_VST_HWND = 26
OPTION_PATH_BRIDGE_VST_X11 = 27
OPTION_PATH_BRIDGE_POSIX32 = 11
OPTION_PATH_BRIDGE_POSIX64 = 12
OPTION_PATH_BRIDGE_WIN32 = 13
OPTION_PATH_BRIDGE_WIN64 = 14
OPTION_PATH_BRIDGE_LV2_GTK2 = 15
OPTION_PATH_BRIDGE_LV2_GTK3 = 16
OPTION_PATH_BRIDGE_LV2_QT4 = 17
OPTION_PATH_BRIDGE_LV2_QT5 = 18
OPTION_PATH_BRIDGE_LV2_COCOA = 19
OPTION_PATH_BRIDGE_LV2_WINDOWS = 20
OPTION_PATH_BRIDGE_LV2_X11 = 21
OPTION_PATH_BRIDGE_VST_COCOA = 22
OPTION_PATH_BRIDGE_VST_HWND = 23
OPTION_PATH_BRIDGE_VST_X11 = 24

# enum CallbackType
CALLBACK_DEBUG = 0


Loading…
Cancel
Save