Browse Source

Fix install, Carla OSC fixes

tags/v0.9.0
falkTX 13 years ago
parent
commit
d90b894b72
10 changed files with 153 additions and 132 deletions
  1. +5
    -5
      Makefile
  2. +1
    -1
      src/carla-backend/carla_backend.cpp
  3. +82
    -82
      src/carla-backend/carla_osc.cpp
  4. +0
    -6
      src/carla-backend/carla_osc.h
  5. +4
    -4
      src/carla-backend/lv2.cpp
  6. +2
    -1
      src/carla-backend/qtcreator/carla-backend.pro
  7. +23
    -25
      src/carla-bridge/carla_bridge_osc.cpp
  8. +1
    -2
      src/carla-bridge/qtcreator/carla-bridge-lv2-gtk2.pro
  9. +7
    -0
      src/carla-includes/carla_osc_includes.h
  10. +28
    -6
      src/carla.py

+ 5
- 5
Makefile View File

@@ -224,10 +224,10 @@ install:
data/claudia \
data/claudia-launcher \
data/carla \
src/carla-bridge-ui/carla-bridge-lv2-gtk2 \
src/carla-bridge-ui/carla-bridge-lv2-qt4 \
src/carla-bridge-ui/carla-bridge-lv2-x11 \
src/carla-bridge-ui/carla-bridge-vst-x11 \
src/carla-bridge/carla-bridge-lv2-gtk2 \
src/carla-bridge/carla-bridge-lv2-qt4 \
src/carla-bridge/carla-bridge-lv2-x11 \
src/carla-bridge/carla-bridge-vst-x11 \
src/carla-discovery/carla-discovery-* \
$(DESTDIR)$(PREFIX)/bin/

@@ -276,7 +276,7 @@ install:

# Install main code
install -m 755 src/*.py $(DESTDIR)$(PREFIX)/share/cadence/src/
install -m 755 src/carla/*.so $(DESTDIR)$(PREFIX)/lib/carla/
install -m 755 src/carla-backend/*.so $(DESTDIR)$(PREFIX)/lib/carla/

# Install addtional stuff
install -m 644 data/pulse2jack-data/* $(DESTDIR)$(PREFIX)/share/cadence/pulse2jack/


+ 1
- 1
src/carla-backend/carla_backend.cpp View File

@@ -52,7 +52,7 @@ bool engine_init(const char* client_name)

if (started)
{
osc_init(nullptr);
osc_init(get_host_client_name());
carla_check_thread.start(QThread::HighPriority);
set_last_error("no error");
}


+ 82
- 82
src/carla-backend/carla_osc.cpp View File

@@ -20,11 +20,9 @@

#include <iostream>

#ifndef CARLA_BACKEND_NO_NAMESPACE
using namespace CarlaBackend;
#endif
size_t client_name_len = 0;
const char* client_name = nullptr;

size_t client_name_len = 0;
const char* global_osc_server_path = nullptr;
lo_server_thread global_osc_server_thread = nullptr;
OscData global_osc_data = { nullptr, nullptr, nullptr };
@@ -45,31 +43,30 @@ CARLA_BACKEND_END_NAMESPACE
// End of exported symbols (API)
// -------------------------------------------------------------------------------------------------------------------

void osc_init(const char*)
#ifndef CARLA_BACKEND_NO_NAMESPACE
using namespace CarlaBackend;
#endif

void osc_init(const char* host_client_name)
{
qDebug("osc_init()");
const char* host_client_name = get_host_client_name();
client_name_len = strlen(host_client_name);
qDebug("osc_init(%s)", host_client_name);
client_name = strdup(host_client_name);
client_name_len = strlen(client_name);

// create new OSC thread
global_osc_server_thread = lo_server_thread_new(nullptr, osc_error_handler);

// get our full OSC server path
char* osc_thread_path = lo_server_thread_get_url(global_osc_server_thread);

char osc_path_tmp[strlen(osc_thread_path) + client_name_len + 1];
strcpy(osc_path_tmp, osc_thread_path);
strcat(osc_path_tmp, host_client_name);
global_osc_server_path = strdup(QString("%1%2").arg(osc_thread_path).arg(client_name).toUtf8().constData());
free(osc_thread_path);

global_osc_server_path = strdup(osc_path_tmp);

// register message handler and start OSC thread
lo_server_thread_add_method(global_osc_server_thread, nullptr, nullptr, osc_message_handler, nullptr);
lo_server_thread_start(global_osc_server_thread);

// debug our server path just to make sure everything is ok
qDebug("Carla OSC -> %s\n", global_osc_server_path);
// print our server path just to make sure everything is ok
printf("Carla-Backend OSC -> %s\n", global_osc_server_path);
}

void osc_close()
@@ -84,6 +81,10 @@ void osc_close()

free((void*)global_osc_server_path);
global_osc_server_path = nullptr;

free((void*)client_name);
client_name = nullptr;
client_name_len = 0;
}

void osc_clear_data(OscData* osc_data)
@@ -113,25 +114,27 @@ void osc_error_handler(int num, const char* msg, const char* path)

int osc_message_handler(const char* path, const char* types, lo_arg** argv, int argc, void* data, void* user_data)
{
//qDebug("osc_message_handler(%s, %s, %p, %i, %p, %p)", path, types, argv, argc, data, user_data);
#if DEBUG
qDebug("osc_message_handler(%s, %s, %p, %i, %p, %p)", path, types, argv, argc, data, user_data);
#endif

// Initial path check
if (strcmp(path, "register") == 0)
if (strcmp(path, "/register") == 0)
{
lo_message message = lo_message(data);
lo_address source = lo_message_get_source(message);
return osc_handle_register(argv, source);
}
else if (strcmp(path, "unregister") == 0)
else if (strcmp(path, "/unregister") == 0)
{
return osc_handle_unregister();
}
else
{
// Check if message is for this client
if (strncmp(path+1, get_host_client_name(), client_name_len) != 0 && path[client_name_len+1] == '/')
if (strlen(path) <= client_name_len || strncmp(path+1, client_name, client_name_len) != 0)
{
qWarning("osc_message_handler() - message not for this client -> '%s'' != '/%s/'", path, get_host_client_name());
qWarning("osc_message_handler() - message not for this client -> '%s'' != '/%s/'", path, client_name);
return 1;
}
}
@@ -160,29 +163,26 @@ int osc_message_handler(const char* path, const char* types, lo_arg** argv, int
}

// Get method from path (/Carla/i/method)
size_t mindex = client_name_len + 3;
mindex += (plugin_id >= 10) ? 2 : 1;
char method[24] = { 0 };

for (size_t i=mindex; i < strlen(path) && i < mindex+24; i++)
method[i-mindex] = path[i];
int offset = (plugin_id >= 10) ? 4 : 3;
char method[32] = { 0 };
memcpy(method, path + (client_name_len + offset), 32);

// Common OSC methods
if (strcmp(method, "update") == 0)
if (strcmp(method, "/update") == 0)
{
lo_message message = lo_message(data);
lo_address source = lo_message_get_source(message);
return osc_handle_update(plugin, argv, source);
}
else if (strcmp(method, "configure") == 0)
if (strcmp(method, "/configure") == 0)
return osc_handle_configure(plugin, argv);
else if (strcmp(method, "control") == 0)
if (strcmp(method, "/control") == 0)
return osc_handle_control(plugin, argv);
else if (strcmp(method, "program") == 0)
return (plugin->type() == PLUGIN_DSSI) ? osc_handle_program_as_midi(plugin, argv) : osc_handle_program(plugin, argv);
else if (strcmp(method, "midi") == 0)
if (strcmp(method, "/program") == 0)
return osc_handle_program(plugin, argv);
if (strcmp(method, "/midi") == 0)
return osc_handle_midi(plugin, argv);
else if (strcmp(method, "exiting") == 0)
if (strcmp(method, "/exiting") == 0)
return osc_handle_exiting(plugin);

// Plugin-specific methods
@@ -192,56 +192,56 @@ int osc_message_handler(const char* path, const char* types, lo_arg** argv, int
// Plugin Bridges
if (plugin->hints() & PLUGIN_IS_BRIDGE)
{
if (strcmp(method, "bridge_ains_peak") == 0)
if (strcmp(method, "/bridge_ains_peak") == 0)
return osc_handle_bridge_ains_peak(plugin, argv);
else if (strcmp(method, "bridge_aouts_peak") == 0)
else if (strcmp(method, "/bridge_aouts_peak") == 0)
return osc_handle_bridge_aouts_peak(plugin, argv);
else if (strcmp(method, "bridge_audio_count") == 0)
else if (strcmp(method, "/bridge_audio_count") == 0)
return plugin->set_osc_bridge_info(PluginBridgeAudioCount, argv);
else if (strcmp(method, "bridge_midi_count") == 0)
else if (strcmp(method, "/bridge_midi_count") == 0)
return plugin->set_osc_bridge_info(PluginBridgeMidiCount, argv);
else if (strcmp(method, "bridge_param_count") == 0)
else if (strcmp(method, "/bridge_param_count") == 0)
return plugin->set_osc_bridge_info(PluginBridgeParameterCount, argv);
else if (strcmp(method, "bridge_program_count") == 0)
else if (strcmp(method, "/bridge_program_count") == 0)
return plugin->set_osc_bridge_info(PluginBridgeProgramCount, argv);
else if (strcmp(method, "bridge_midi_program_count") == 0)
else if (strcmp(method, "/bridge_midi_program_count") == 0)
return plugin->set_osc_bridge_info(PluginBridgeMidiProgramCount, argv);
else if (strcmp(method, "bridge_plugin_info") == 0)
else if (strcmp(method, "/bridge_plugin_info") == 0)
return plugin->set_osc_bridge_info(PluginBridgePluginInfo, argv);
else if (strcmp(method, "bridge_param_info") == 0)
else if (strcmp(method, "/bridge_param_info") == 0)
return plugin->set_osc_bridge_info(PluginBridgeParameterInfo, argv);
else if (strcmp(method, "bridge_param_data") == 0)
else if (strcmp(method, "/bridge_param_data") == 0)
return plugin->set_osc_bridge_info(PluginBridgeParameterDataInfo, argv);
else if (strcmp(method, "bridge_param_ranges") == 0)
else if (strcmp(method, "/bridge_param_ranges") == 0)
return plugin->set_osc_bridge_info(PluginBridgeParameterRangesInfo, argv);
else if (strcmp(method, "bridge_program_info") == 0)
else if (strcmp(method, "/bridge_program_info") == 0)
return plugin->set_osc_bridge_info(PluginBridgeProgramInfo, argv);
else if (strcmp(method, "bridge_midi_program_info") == 0)
else if (strcmp(method, "/bridge_midi_program_info") == 0)
return plugin->set_osc_bridge_info(PluginBridgeMidiProgramInfo, argv);
else if (strcmp(method, "bridge_update") == 0)
else if (strcmp(method, "/bridge_update") == 0)
return plugin->set_osc_bridge_info(PluginBridgeUpdateNow, argv);
}

// Internal OSC Stuff
if (global_osc_data.target)
{
if (strcmp(method, "set_active") == 0)
if (strcmp(method, "/set_active") == 0)
return osc_handle_set_active(plugin, argv);
else if (strcmp(method, "set_drywet") == 0)
else if (strcmp(method, "/set_drywet") == 0)
return osc_handle_set_drywet(plugin, argv);
else if (strcmp(method, "set_vol") == 0)
else if (strcmp(method, "/set_vol") == 0)
return osc_handle_set_volume(plugin, argv);
else if (strcmp(method, "set_balance_left") == 0)
else if (strcmp(method, "/set_balance_left") == 0)
return osc_handle_set_balance_left(plugin, argv);
else if (strcmp(method, "set_balance_right") == 0)
else if (strcmp(method, "/set_balance_right") == 0)
return osc_handle_set_balance_right(plugin, argv);
else if (strcmp(method, "set_parameter") == 0)
else if (strcmp(method, "/set_parameter") == 0)
return osc_handle_set_parameter(plugin, argv);
else if (strcmp(method, "set_program") == 0)
else if (strcmp(method, "/set_program") == 0)
return osc_handle_set_program(plugin, argv);
else if (strcmp(method, "note_on") == 0)
else if (strcmp(method, "/note_on") == 0)
return osc_handle_note_on(plugin, argv);
else if (strcmp(method, "note_off") == 0)
else if (strcmp(method, "/note_off") == 0)
return osc_handle_note_off(plugin, argv);
}

@@ -362,39 +362,39 @@ int osc_handle_program(CarlaPlugin* plugin, lo_arg** argv)
{
qDebug("osc_handle_program()");

uint32_t program_id = argv[0]->i;

if (program_id < plugin->prog_count())
if (plugin->type() == PLUGIN_DSSI)
{
plugin->set_program(program_id, false, true, true, true);
return 0;
}
else
qCritical("osc_handle_program() - program_id '%i' out of bounds", program_id);
uint32_t bank_id = argv[0]->i;
uint32_t program_id = argv[1]->i;

return 1;
}
MidiProgramInfo midiprog = { false, 0, 0, nullptr };

int osc_handle_program_as_midi(CarlaPlugin* plugin, lo_arg** argv)
{
qDebug("osc_handle_program_as_midi()");
for (uint32_t i=0; i < plugin->midiprog_count(); i++)
{
plugin->get_midi_program_info(&midiprog, i);
if (midiprog.bank == bank_id && midiprog.program == program_id)
{
plugin->set_midi_program(i, false, true, true, true);
return 0;
}
}

uint32_t bank_id = argv[0]->i;
uint32_t program_id = argv[1]->i;
qCritical("osc_handle_program() - failed to find respective bank/program '%i', '%i'", bank_id, program_id);
}
else
{

MidiProgramInfo midiprog = { false, 0, 0, nullptr };
uint32_t program_id = argv[0]->i;

for (uint32_t i=0; i < plugin->midiprog_count(); i++)
{
plugin->get_midi_program_info(&midiprog, i);
if (midiprog.bank == bank_id && midiprog.program == program_id)
if (program_id < plugin->prog_count())
{
plugin->set_midi_program(i, false, true, true, true);
plugin->set_program(program_id, false, true, true, true);
return 0;
}
else
qCritical("osc_handle_program() - program_id '%i' out of bounds", program_id);
}

qCritical("osc_handle_program_as_midi() - failed to find respective bank/program '%i', '%i'", bank_id, program_id);
return 1;
}

@@ -580,15 +580,15 @@ void osc_send_lv2_event_transfer(OscData* osc_data, const char* type, const char
}
}

void osc_send_control(OscData* osc_data, int param, double value)
void osc_send_control(OscData* osc_data, int index, double value)
{
qDebug("osc_send_control(%i, %f)", param, value);
qDebug("osc_send_control(%i, %f)", index, value);
if (osc_data->target)
{
char target_path[strlen(osc_data->path)+9];
strcpy(target_path, osc_data->path);
strcat(target_path, "/control");
lo_send(osc_data->target, target_path, "if", param, value);
lo_send(osc_data->target, target_path, "if", index, value);
}
}



+ 0
- 6
src/carla-backend/carla_osc.h View File

@@ -25,12 +25,6 @@ int osc_handle_register(lo_arg** argv, lo_address source);
int osc_handle_unregister();

int osc_handle_update(CarlaPlugin* plugin, lo_arg** argv, lo_address source);
int osc_handle_configure(CarlaPlugin* plugin, lo_arg** argv);
int osc_handle_control(CarlaPlugin* plugin, lo_arg** argv);
int osc_handle_program(CarlaPlugin* plugin, lo_arg** argv);
int osc_handle_program_as_midi(CarlaPlugin* plugin, lo_arg** argv);
int osc_handle_midi_program(CarlaPlugin* plugin, lo_arg** argv);
int osc_handle_midi(CarlaPlugin* plugin, lo_arg** argv);
int osc_handle_exiting(CarlaPlugin* plugin);
int osc_handle_lv2_event_transfer(CarlaPlugin* plugin, lo_arg** argv);



+ 4
- 4
src/carla-backend/lv2.cpp View File

@@ -2990,12 +2990,12 @@ public:

CustomDataType dtype;

if (type == CARLA_URI_MAP_ID_ATOM_STRING)
dtype = CUSTOM_DATA_STRING;
if (type == CARLA_URI_MAP_ID_ATOM_CHUNK)
dtype = CUSTOM_DATA_CHUNK;
else if (type == CARLA_URI_MAP_ID_ATOM_PATH)
dtype = CUSTOM_DATA_PATH;
else if (type == CARLA_URI_MAP_ID_ATOM_CHUNK)
dtype = CUSTOM_DATA_CHUNK;
else if (type == CARLA_URI_MAP_ID_ATOM_STRING)
dtype = CUSTOM_DATA_STRING;
else if (type >= CARLA_URI_MAP_ID_COUNT)
dtype = CUSTOM_DATA_BINARY;
else


+ 2
- 1
src/carla-backend/qtcreator/carla-backend.pro View File

@@ -44,7 +44,8 @@ INCLUDEPATH = .. \
../../carla-includes \
../../carla-includes/vst

DEFINES = QTCREATOR_TEST __LINUX_JACK__ CARLA_ENGINE_JACK
DEFINES = QTCREATOR_TEST CARLA_ENGINE_JACK
#DEFINES = QTCREATOR_TEST __LINUX_JACK__
LIBS = ../../carla-lilv/carla_lilv.a -ldl #-lrtaudio

QMAKE_CXXFLAGS *= -std=c++0x

+ 23
- 25
src/carla-bridge/carla_bridge_osc.cpp View File

@@ -18,19 +18,19 @@
#include "carla_bridge_osc.h"
#include "carla_midi.h"

#include <cstring>
#include <QtCore/QString>

#ifdef BUILD_BRIDGE_PLUGIN
#include "carla_plugin.h"
extern void plugin_bridge_show_gui(bool yesno);
extern void plugin_bridge_quit();
static const size_t plugin_name_len = 14;
static const char* const plugin_name = "plugin-bridge";
static const size_t client_name_len = 13;
static const char* const client_name = "plugin-bridge";
#else
#include "carla_bridge_ui.h"
extern int osc_handle_lv2_event_transfer(lo_arg** argv);
static const size_t plugin_name_len = 14;
static const char* const plugin_name = "lv2-ui-bridge";
static const size_t client_name_len = 13;
static const char* const client_name = "lv2-ui-bridge";
#endif

const char* global_osc_server_path = nullptr;
@@ -56,14 +56,9 @@ void osc_init(const char* osc_url)
global_osc_server_thread = lo_server_thread_new(nullptr, osc_error_handler);

// get our full OSC server path
char* this_thread_path = lo_server_thread_get_url(global_osc_server_thread);

char osc_path_tmp[strlen(this_thread_path) + plugin_name_len + 1];
strcpy(osc_path_tmp, this_thread_path);
strcat(osc_path_tmp, plugin_name);
free(this_thread_path);

global_osc_server_path = strdup(osc_path_tmp);
char* osc_thread_path = lo_server_thread_get_url(global_osc_server_thread);
global_osc_server_path = strdup(QString("%1%2").arg(osc_thread_path).arg(client_name).toUtf8().constData());
free(osc_thread_path);

// register message handler and start OSC thread
lo_server_thread_add_method(global_osc_server_thread, nullptr, nullptr, osc_message_handler, nullptr);
@@ -111,35 +106,38 @@ void osc_error_handler(int num, const char* msg, const char* path)

int osc_message_handler(const char* path, const char* types, lo_arg** argv, int argc, void* data, void* user_data)
{
#if DEBUG
qDebug("osc_message_handler(%s, %s, %p, %i, %p, %p)", path, types, argv, argc, data, user_data);
#endif

if (strlen(path) < plugin_name_len + 3)
// Check if message is for this client
if (strlen(path) <= client_name_len || strncmp(path+1, client_name, client_name_len) != 0)
{
qWarning("Got invalid OSC path '%s'", path);
qWarning("osc_message_handler() - message not for this client -> '%s'' != '/%s/'", path, client_name);
return 1;
}

char method[32] = { 0 };
memcpy(method, path + plugin_name_len + 2, 32);
memcpy(method, path + client_name_len + 1, 32);

if (strcmp(method, "configure") == 0)
if (strcmp(method, "/configure") == 0)
return osc_handle_configure(argv);
else if (strcmp(method, "control") == 0)
else if (strcmp(method, "/control") == 0)
return osc_handle_control(argv);
else if (strcmp(method, "program") == 0)
else if (strcmp(method, "/program") == 0)
return osc_handle_program(argv);
else if (strcmp(method, "midi_program") == 0)
else if (strcmp(method, "/midi_program") == 0)
return osc_handle_midi_program(argv);
else if (strcmp(method, "midi") == 0)
else if (strcmp(method, "/midi") == 0)
return osc_handle_midi(argv);
else if (strcmp(method, "show") == 0)
else if (strcmp(method, "/show") == 0)
return osc_handle_show();
else if (strcmp(method, "hide") == 0)
else if (strcmp(method, "/hide") == 0)
return osc_handle_hide();
else if (strcmp(method, "quit") == 0)
else if (strcmp(method, "/quit") == 0)
return osc_handle_quit();
#if BRIDGE_LV2_GTK2 || BRIDGE_LV2_QT4 || BRIDGE_LV2_X11
else if (strcmp(method, "lv2_event_transfer") == 0)
else if (strcmp(method, "/lv2_event_transfer") == 0)
return osc_handle_lv2_event_transfer(argv);
#endif
#if 0


+ 1
- 2
src/carla-bridge/qtcreator/carla-bridge-lv2-gtk2.pro View File

@@ -5,6 +5,7 @@ QT = core
CONFIG = debug link_pkgconfig qt warn_on
PKGCONFIG = liblo gtk+-2.0

TARGET = carla-bridge-lv2-gtk2
TEMPLATE = app
VERSION = 0.5.0

@@ -26,8 +27,6 @@ INCLUDEPATH = .. \
../../carla-backend \
../../carla-includes

TARGET = carla-bridge-lv2-gtk2

DEFINES = BUILD_BRIDGE BUILD_BRIDGE_UI BRIDGE_LV2_GTK2

LIBS = ../../carla-lilv/carla_lilv.a -ldl


+ 7
- 0
src/carla-includes/carla_osc_includes.h View File

@@ -26,7 +26,14 @@
#define OSC_SEND_ARGS
#define OSC_HANDLE_ARGS
#else
#ifdef CARLA_BACKEND_NO_NAMESPACE
class CarlaPlugin;
#else
namespace CarlaBackend {
class CarlaPlugin;
}
typedef CarlaBackend::CarlaPlugin CarlaPlugin;
#endif
#define OSC_SEND_ARGS OscData*,
#define OSC_HANDLE_ARGS CarlaPlugin*,
#endif


+ 28
- 6
src/carla.py View File

@@ -3155,19 +3155,39 @@ class CarlaMainW(QMainWindow, ui_carla.Ui_CarlaMainW):
unique_id = x_save_state_dict['UniqueID']

if ptype == "LADSPA":
if not x_ladspa_plugins: x_ladspa_plugins = toList(self.settings_db.value("Plugins/LADSPA", []))
if not x_ladspa_plugins:
x_ladspa_plugins = []
x_ladspa_plugins += toList(self.settings_db.value("Plugins/LADSPA_unix32", []))
x_ladspa_plugins += toList(self.settings_db.value("Plugins/LADSPA_unix64", []))
x_ladspa_plugins += toList(self.settings_db.value("Plugins/LADSPA_win32", []))
x_ladspa_plugins += toList(self.settings_db.value("Plugins/LADSPA_win64", []))
x_plugins = x_ladspa_plugins

elif ptype == "DSSI":
if not x_dssi_plugins: x_dssi_plugins = toList(self.settings_db.value("Plugins/DSSI", []))
if not x_dssi_plugins:
x_dssi_plugins = []
x_dssi_plugins += toList(self.settings_db.value("Plugins/DSSI_unix32", []))
x_dssi_plugins += toList(self.settings_db.value("Plugins/DSSI_unix64", []))
x_dssi_plugins += toList(self.settings_db.value("Plugins/DSSI_win32", []))
x_dssi_plugins += toList(self.settings_db.value("Plugins/DSSI_win64", []))
x_plugins = x_dssi_plugins

elif ptype == "LV2":
if not x_lv2_plugins: x_lv2_plugins = toList(self.settings_db.value("Plugins/LV2", []))
if not x_lv2_plugins:
x_lv2_plugins = []
x_lv2_plugins += toList(self.settings_db.value("Plugins/LV2_unix32", []))
x_lv2_plugins += toList(self.settings_db.value("Plugins/LV2_unix64", []))
x_lv2_plugins += toList(self.settings_db.value("Plugins/LV2_win32", []))
x_lv2_plugins += toList(self.settings_db.value("Plugins/LV2_win64", []))
x_plugins = x_lv2_plugins

elif ptype == "VST":
if not x_vst_plugins: x_vst_plugins = toList(self.settings_db.value("Plugins/VST", []))
if not x_vst_plugins:
x_vst_plugins = []
x_vst_plugins += toList(self.settings_db.value("Plugins/VST_unix32", []))
x_vst_plugins += toList(self.settings_db.value("Plugins/VST_unix64", []))
x_vst_plugins += toList(self.settings_db.value("Plugins/VST_win32", []))
x_vst_plugins += toList(self.settings_db.value("Plugins/VST_win64", []))
x_plugins = x_vst_plugins

elif ptype == "GIG":
@@ -3183,6 +3203,7 @@ class CarlaMainW(QMainWindow, ui_carla.Ui_CarlaMainW):
x_plugins = x_sfz_plugins

else:
print("load_project() - ptype '%s' not recognized", ptype)
x_failed_plugins.append(x_save_state_dict['Name'])
continue

@@ -3279,6 +3300,8 @@ class CarlaMainW(QMainWindow, ui_carla.Ui_CarlaMainW):
else:
plugin = None

print(plugin, ptype, len(x_plugins), plugin_l)

if plugin:
btype = plugin['build']
ptype = plugin['type']
@@ -3300,8 +3323,7 @@ class CarlaMainW(QMainWindow, ui_carla.Ui_CarlaMainW):
if len(x_failed_plugins) > 0:
text = self.tr("The following plugins were not found or failed to initialize:\n")
for plugin in x_failed_plugins:
text += plugin
text += "\n"
text += " - %s\n" % plugin

self.statusBar().showMessage("State file loaded with errors")
QMessageBox.critical(self, self.tr("Error"), text)


Loading…
Cancel
Save