diff --git a/c++/carla-backend/carla_backend.h b/c++/carla-backend/carla_backend.h index 2c49d21..42f304b 100644 --- a/c++/carla-backend/carla_backend.h +++ b/c++/carla-backend/carla_backend.h @@ -287,23 +287,35 @@ enum OptionsType { */ OPTION_PATH_BRIDGE_LV2_GTK2 = 21, + /*! + * Set path to the LV2 Gtk3 UI bridge executable.\n + * Default unset. + */ + OPTION_PATH_BRIDGE_LV2_GTK3 = 22, + /*! * Set path to the LV2 Qt4 UI bridge executable.\n * Default unset. */ - OPTION_PATH_BRIDGE_LV2_QT4 = 22, + OPTION_PATH_BRIDGE_LV2_QT4 = 23, /*! * Set path to the LV2 X11 UI bridge executable.\n * Default unset. */ - OPTION_PATH_BRIDGE_LV2_X11 = 23, + OPTION_PATH_BRIDGE_LV2_X11 = 24, + + /*! + * Set path to the VST HWND UI bridge executable.\n + * Default unset. + */ + OPTION_PATH_BRIDGE_VST_HWND = 25, /*! * Set path to the VST X11 UI bridge executable.\n * Default unset. */ - OPTION_PATH_BRIDGE_VST_X11 = 24 + OPTION_PATH_BRIDGE_VST_X11 = 26 }; /*! diff --git a/c++/carla-backend/carla_shared.cpp b/c++/carla-backend/carla_shared.cpp index 1972a93..1d89069 100644 --- a/c++/carla-backend/carla_shared.cpp +++ b/c++/carla-backend/carla_shared.cpp @@ -244,10 +244,14 @@ const char* OptionsType2str(const OptionsType type) return "OPTION_PATH_BRIDGE_WIN64"; case OPTION_PATH_BRIDGE_LV2_GTK2: return "OPTION_PATH_BRIDGE_LV2_GTK2"; + case OPTION_PATH_BRIDGE_LV2_GTK3: + return "OPTION_PATH_BRIDGE_LV2_GTK3"; case OPTION_PATH_BRIDGE_LV2_QT4: return "OPTION_PATH_BRIDGE_LV2_QT4"; case OPTION_PATH_BRIDGE_LV2_X11: return "OPTION_PATH_BRIDGE_LV2_X11"; + case OPTION_PATH_BRIDGE_VST_HWND: + return "OPTION_PATH_BRIDGE_VST_HWND"; case OPTION_PATH_BRIDGE_VST_X11: return "OPTION_PATH_BRIDGE_VST_X11"; } @@ -558,12 +562,18 @@ void setOption(const OptionsType option, const int value, const char* const valu case OPTION_PATH_BRIDGE_LV2_GTK2: carlaOptions.bridge_lv2gtk2 = strdup(valueStr); break; + case OPTION_PATH_BRIDGE_LV2_GTK3: + carlaOptions.bridge_lv2gtk3 = strdup(valueStr); + break; case OPTION_PATH_BRIDGE_LV2_QT4: carlaOptions.bridge_lv2qt4 = strdup(valueStr); break; case OPTION_PATH_BRIDGE_LV2_X11: carlaOptions.bridge_lv2x11 = strdup(valueStr); break; + case OPTION_PATH_BRIDGE_VST_HWND: + carlaOptions.bridge_vsthwnd = strdup(valueStr); + break; case OPTION_PATH_BRIDGE_VST_X11: carlaOptions.bridge_vstx11 = strdup(valueStr); break; @@ -589,12 +599,18 @@ void resetOptions() if (carlaOptions.bridge_lv2gtk2) free((void*)carlaOptions.bridge_lv2gtk2); + if (carlaOptions.bridge_lv2gtk3) + free((void*)carlaOptions.bridge_lv2gtk3); + if (carlaOptions.bridge_lv2qt4) free((void*)carlaOptions.bridge_lv2qt4); if (carlaOptions.bridge_lv2x11) free((void*)carlaOptions.bridge_lv2x11); + if (carlaOptions.bridge_vsthwnd) + free((void*)carlaOptions.bridge_vsthwnd); + if (carlaOptions.bridge_vstx11) free((void*)carlaOptions.bridge_vstx11); @@ -613,8 +629,10 @@ void resetOptions() carlaOptions.bridge_win32 = nullptr; carlaOptions.bridge_win64 = nullptr; carlaOptions.bridge_lv2gtk2 = nullptr; + carlaOptions.bridge_lv2gtk3 = nullptr; carlaOptions.bridge_lv2qt4 = nullptr; carlaOptions.bridge_lv2x11 = nullptr; + carlaOptions.bridge_vsthwnd = nullptr; carlaOptions.bridge_vstx11 = nullptr; } #endif // BUILD_BRIDGE diff --git a/c++/carla-backend/carla_shared.h b/c++/carla-backend/carla_shared.h index 48aa4bc..2b36a06 100644 --- a/c++/carla-backend/carla_shared.h +++ b/c++/carla-backend/carla_shared.h @@ -73,8 +73,10 @@ struct carla_options_t { const char* bridge_win32; const char* bridge_win64; const char* bridge_lv2gtk2; + const char* bridge_lv2gtk3; const char* bridge_lv2qt4; const char* bridge_lv2x11; + const char* bridge_vsthwnd; const char* bridge_vstx11; carla_options_t() @@ -92,8 +94,10 @@ struct carla_options_t { bridge_win32(nullptr), bridge_win64(nullptr), bridge_lv2gtk2(nullptr), + bridge_lv2gtk3(nullptr), bridge_lv2qt4(nullptr), bridge_lv2x11(nullptr), + bridge_vsthwnd(nullptr), bridge_vstx11(nullptr) {} }; extern carla_options_t carlaOptions; diff --git a/c++/carla-bridge/Makefile b/c++/carla-bridge/Makefile index 06965c5..76cdfc5 100644 --- a/c++/carla-bridge/Makefile +++ b/c++/carla-bridge/Makefile @@ -32,7 +32,7 @@ POSIX_LINK_FLAGS = $(LINK_PLUGIN_FLAGS) $(shell pkg-config --libs QtGui) -ldl WIN_BUILD_FLAGS = $(BUILD_PLUGIN_FLAGS) $(shell pkg-config --cflags QtGui) WIN_32BIT_FLAGS = $(32BIT_FLAGS) WIN_64BIT_FLAGS = $(64BIT_FLAGS) -WIN_LINK_FLAGS = $(LINK_PLUGIN_FLAGS) $(shell pkg-config --libs QtGui) -static +WIN_LINK_FLAGS = $(LINK_PLUGIN_FLAGS) $(shell pkg-config --libs QtGui) -static -mwindows WINE_BUILD_FLAGS = $(BUILD_PLUGIN_FLAGS) -DQTCREATOR_TEST # -fpermissive WINE_32BIT_FLAGS = $(32BIT_FLAGS) -L/usr/lib32/wine -L/usr/lib/i386-linux-gnu/wine @@ -66,14 +66,27 @@ LINK_UI_VST_X11_FLAGS = $(LINK_UI_FLAGS) $(shell pkg-config --libs QtGui) all: ui -ui: ui_lv2-gtk2 ui_lv2-qt4 ui_lv2-x11 ui_vst-x11 +ui: ui_lv2-gtk2 ui_lv2-gtk3 ui_lv2-qt4 ui_lv2-x11 ui_vst-x11 + +ifeq ($(shell pkg-config --exists gtk+-2.0 && echo true),true) ui_lv2-gtk2: carla-bridge-lv2-gtk2 +else +ui_lv2-gtk2: +endif + +ifeq ($(shell pkg-config --exists gtk+-3.0 && echo true),true) ui_lv2-gtk3: carla-bridge-lv2-gtk3 +else +ui_lv2-gtk3: +endif + ui_lv2-qt4: carla-bridge-lv2-qt4 ui_lv2-x11: carla-bridge-lv2-x11 ui_vst-hwnd: carla-bridge-vst-hwnd.exe ui_vst-x11: carla-bridge-vst-x11 +# -------------------------------------------------------------- + posix32: carla-bridge-posix32 posix64: carla-bridge-posix64 win32: carla-bridge-win32.exe diff --git a/c++/carla-bridge/carla_bridge.doxygen b/c++/carla-bridge/carla_bridge.doxygen index cc606c7..c76d521 100644 --- a/c++/carla-bridge/carla_bridge.doxygen +++ b/c++/carla-bridge/carla_bridge.doxygen @@ -4,7 +4,7 @@ # Project related configuration options #--------------------------------------------------------------------------- DOXYFILE_ENCODING = UTF-8 -PROJECT_NAME = "Carla Bridge UI" +PROJECT_NAME = "Carla Bridge" PROJECT_NUMBER = PROJECT_BRIEF = PROJECT_LOGO = @@ -241,7 +241,7 @@ EXPAND_ONLY_PREDEF = NO SEARCH_INCLUDES = YES INCLUDE_PATH = INCLUDE_FILE_PATTERNS = -PREDEFINED = BUILD_BRIDGE BUILD_BRIDGE_UI BUILD_BRIDGE_LV2 BUILD_BRIDGE_VST BRIDGE_LV2_GTK2 BRIDGE_LV2_QT4 BRIDGE_LV2_X11 BRIDGE_VST_X11 +PREDEFINED = BUILD_BRIDGE BUILD_BRIDGE_PLUGIN BUILD_BRIDGE_UI BRIDGE_LV2 BRIDGE_VST LV2_GTK2 BRIDGE_LV2_GTK3 BRIDGE_LV2_QT4 BRIDGE_LV2_X11 BRIDGE_VST_HWND BRIDGE_VST_X11 EXPAND_AS_DEFINED = SKIP_FUNCTION_MACROS = YES #--------------------------------------------------------------------------- diff --git a/c++/carla-bridge/carla_bridge_client.h b/c++/carla-bridge/carla_bridge_client.h index 6d34d19..f450078 100644 --- a/c++/carla-bridge/carla_bridge_client.h +++ b/c++/carla-bridge/carla_bridge_client.h @@ -22,9 +22,9 @@ #include "carla_bridge_toolkit.h" #ifdef BUILD_BRIDGE_PLUGIN -#include "carla_engine.h" +# include "carla_engine.h" #else -#include "carla_lib_includes.h" +# include "carla_lib_includes.h" #endif #include diff --git a/c++/carla-bridge/carla_bridge_osc.cpp b/c++/carla-bridge/carla_bridge_osc.cpp index c762c48..3ba18ec 100644 --- a/c++/carla-bridge/carla_bridge_osc.cpp +++ b/c++/carla-bridge/carla_bridge_osc.cpp @@ -151,6 +151,8 @@ int CarlaOsc::handleMessage(const char* const path, const int argc, const lo_arg return handleMsgMidiProgram(argc, argv, types); if (strcmp(method, "/midi") == 0) return handleMsgMidi(argc, argv, types); + if (strcmp(method, "/sample_rate") == 0) + return 0; // unused if (strcmp(method, "/show") == 0) return handleMsgShow(); if (strcmp(method, "/hide") == 0) @@ -295,6 +297,8 @@ int CarlaOsc::handleMsgMidi(CARLA_BRIDGE_OSC_HANDLE_ARGS) int CarlaOsc::handleMsgShow() { + qDebug("CarlaOsc::handleMsgShow()"); + if (! client) return 1; @@ -305,6 +309,8 @@ int CarlaOsc::handleMsgShow() int CarlaOsc::handleMsgHide() { + qDebug("CarlaOsc::handleMsgHide()"); + if (! client) return 1; @@ -315,6 +321,8 @@ int CarlaOsc::handleMsgHide() int CarlaOsc::handleMsgQuit() { + qDebug("CarlaOsc::handleMsgQuit()"); + if (! client) return 1; diff --git a/c++/carla-discovery/Makefile b/c++/carla-discovery/Makefile index c062c51..c971a03 100644 --- a/c++/carla-discovery/Makefile +++ b/c++/carla-discovery/Makefile @@ -43,7 +43,7 @@ POSIX_LINK_FLAGS = $(LINK_FLAGS) -ldl WIN_BUILD_FLAGS = $(BUILD_FLAGS) WIN_32BIT_FLAGS = $(32BIT_FLAGS) WIN_64BIT_FLAGS = $(64BIT_FLAGS) -WIN_LINK_FLAGS = $(LINK_FLAGS) -static +WIN_LINK_FLAGS = $(LINK_FLAGS) -static -mwindows WINE_BUILD_FLAGS = $(BUILD_FLAGS) # -fpermissive WINE_32BIT_FLAGS = $(32BIT_FLAGS) -L/usr/lib32/wine -L/usr/lib/i386-linux-gnu/wine diff --git a/c++/carla-discovery/Makefile.dbg b/c++/carla-discovery/Makefile.dbg index 5172ee0..2b064f1 100644 --- a/c++/carla-discovery/Makefile.dbg +++ b/c++/carla-discovery/Makefile.dbg @@ -35,31 +35,31 @@ LINK_FLAGS += $(shell pkg-config --libs linuxsampler) endif endif -UNIX_BUILD_FLAGS = $(BUILD_FLAGS) -UNIX_32BIT_FLAGS = $(32BIT_FLAGS) -L/usr/lib32 -L/usr/lib/i386-linux-gnu -UNIX_64BIT_FLAGS = $(64BIT_FLAGS) -L/usr/lib64 -L/usr/lib/x86_64-linux-gnu -UNIX_LINK_FLAGS = $(LINK_FLAGS) -ldl +POSIX_BUILD_FLAGS = $(BUILD_FLAGS) +POSIX_32BIT_FLAGS = $(32BIT_FLAGS) -L/usr/lib32 -L/usr/lib/i386-linux-gnu +POSIX_64BIT_FLAGS = $(64BIT_FLAGS) -L/usr/lib64 -L/usr/lib/x86_64-linux-gnu +POSIX_LINK_FLAGS = $(LINK_FLAGS) -ldl -WIN_BUILD_FLAGS = $(BUILD_FLAGS) -WIN_32BIT_FLAGS = $(32BIT_FLAGS) -WIN_64BIT_FLAGS = $(64BIT_FLAGS) -WIN_LINK_FLAGS = $(LINK_FLAGS) -static +WIN_BUILD_FLAGS = $(BUILD_FLAGS) +WIN_32BIT_FLAGS = $(32BIT_FLAGS) +WIN_64BIT_FLAGS = $(64BIT_FLAGS) +WIN_LINK_FLAGS = $(LINK_FLAGS) -static -mwindows -WINE_BUILD_FLAGS = $(BUILD_FLAGS) # -fpermissive -WINE_32BIT_FLAGS = $(32BIT_FLAGS) -L/usr/lib32/wine -L/usr/lib/i386-linux-gnu/wine -WINE_64BIT_FLAGS = $(64BIT_FLAGS) -L/usr/lib64/wine -L/usr/lib/x86_64-linux-gnu/wine -WINE_LINK_FLAGS = $(LINK_FLAGS) -ldl +WINE_BUILD_FLAGS = $(BUILD_FLAGS) # -fpermissive +WINE_32BIT_FLAGS = $(32BIT_FLAGS) -L/usr/lib32/wine -L/usr/lib/i386-linux-gnu/wine +WINE_64BIT_FLAGS = $(64BIT_FLAGS) -L/usr/lib64/wine -L/usr/lib/x86_64-linux-gnu/wine +WINE_LINK_FLAGS = $(LINK_FLAGS) -ldl # -------------------------------------------------------------- all: carla-discovery-native -unix32: carla-discovery-unix32 -unix64: carla-discovery-unix64 -win32: carla-discovery-win32.exe -win64: carla-discovery-win64.exe -wine32: carla-discovery-win32.exe.so -wine64: carla-discovery-win64.exe.so +posix32: carla-discovery-posix32 +posix64: carla-discovery-posix64 +win32: carla-discovery-win32.exe +win64: carla-discovery-win64.exe +wine32: carla-discovery-win32.exe.so +wine64: carla-discovery-win64.exe.so # -------------------------------------------------------------- @@ -69,11 +69,11 @@ wine64: carla-discovery-win64.exe.so carla-discovery-native: carla-discovery.cpp ../carla-lilv/carla_lilv.a $(CXX) $^ $(BUILD_FLAGS) $(LINK_FLAGS) -o $@ -carla-discovery-unix32: $(32BIT_OBJS) - $(CXX) $^ $(UNIX_BUILD_FLAGS) $(UNIX_32BIT_FLAGS) $(UNIX_LINK_FLAGS) -o $@ +carla-discovery-posix32: $(32BIT_OBJS) + $(CXX) $^ $(POSIX_BUILD_FLAGS) $(POSIX_32BIT_FLAGS) $(POSIX_LINK_FLAGS) -o $@ -carla-discovery-unix64: $(64BIT_OBJS) - $(CXX) $^ $(UNIX_BUILD_FLAGS) $(UNIX_64BIT_FLAGS) $(UNIX_LINK_FLAGS) -o $@ +carla-discovery-posix64: $(64BIT_OBJS) + $(CXX) $^ $(POSIX_BUILD_FLAGS) $(POSIX_64BIT_FLAGS) $(POSIX_LINK_FLAGS) -o $@ carla-discovery-win32.exe: $(32BIT_OBJS) $(CXX) $^ $(WIN_BUILD_FLAGS) $(WIN_32BIT_FLAGS) $(WIN_LINK_FLAGS) -o $@ diff --git a/c++/carla-includes/carla_includes.h b/c++/carla-includes/carla_includes.h index cef4758..7d40529 100644 --- a/c++/carla-includes/carla_includes.h +++ b/c++/carla-includes/carla_includes.h @@ -19,9 +19,9 @@ #define CARLA_INCLUDES_H #ifdef __WINE__ -# define __socklen_t_defined -# define __WINE_WINSOCK2__ -# define HRESULT LONG +//# define __socklen_t_defined +//# define __WINE_WINSOCK2__ +//# define HRESULT LONG # define Q_CORE_EXPORT # define Q_GUI_EXPORT # define QT_NO_STL @@ -57,14 +57,16 @@ # endif #endif -// needed for qDebug/Warning/Critical sections (FIXME) -#if __WORDSIZE == 64 -# define P_INT64 "%li" +// needed for qDebug/Warning/Critical sections +#if defined(Q_OS_WIN64) && ! defined(__WINE__) +# define P_INTPTR "%I64i" +# define P_UINTPTR "%I64x" +# define P_SIZE "%I64u" +#elif __WORDSIZE == 64 # define P_INTPTR "%li" -# define P_UINTPTR "%llx" +# define P_UINTPTR "%lx" # define P_SIZE "%lu" #else -# define P_INT64 "%lli" # define P_INTPTR "%i" # define P_UINTPTR "%x" # define P_SIZE "%u" @@ -72,7 +74,7 @@ // set native binary type #if defined(Q_OS_HAIKU) || defined(Q_OS_UNIX) -# if __LP64__ +# ifdef __LP64__ # define BINARY_NATIVE BINARY_POSIX64 # else # define BINARY_NATIVE BINARY_POSIX32 diff --git a/c++/carla-includes/lv2/options.h b/c++/carla-includes/lv2/options.h index 089464a..b109ab6 100644 --- a/c++/carla-includes/lv2/options.h +++ b/c++/carla-includes/lv2/options.h @@ -19,7 +19,7 @@ #include -#include "lv2/lv2plug.in/ns/ext/urid/urid.h" +#include "urid.h" #define LV2_OPTIONS_URI "http://lv2plug.in/ns/ext/options" #define LV2_OPTIONS_PREFIX LV2_OPTIONS_URI "#" diff --git a/src/carla_backend.py b/src/carla_backend.py index 2bcafe9..78e0adb 100644 --- a/src/carla_backend.py +++ b/src/carla_backend.py @@ -253,8 +253,10 @@ 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 = "" if WINDOWS: @@ -379,6 +381,15 @@ else: 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") @@ -397,6 +408,15 @@ else: carla_bridge_lv2_x11 = os.path.join(p, "carla-bridge-lv2-x11") 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_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") diff --git a/src/shared_carla.py b/src/shared_carla.py index dd0cfb9..6a2c785 100644 --- a/src/shared_carla.py +++ b/src/shared_carla.py @@ -157,9 +157,11 @@ OPTION_PATH_BRIDGE_POSIX64 = 18 OPTION_PATH_BRIDGE_WIN32 = 19 OPTION_PATH_BRIDGE_WIN64 = 20 OPTION_PATH_BRIDGE_LV2_GTK2 = 21 -OPTION_PATH_BRIDGE_LV2_QT4 = 22 -OPTION_PATH_BRIDGE_LV2_X11 = 23 -OPTION_PATH_BRIDGE_VST_X11 = 24 +OPTION_PATH_BRIDGE_LV2_GTK3 = 22 +OPTION_PATH_BRIDGE_LV2_QT4 = 23 +OPTION_PATH_BRIDGE_LV2_X11 = 24 +OPTION_PATH_BRIDGE_VST_HWND = 25 +OPTION_PATH_BRIDGE_VST_X11 = 26 # enum CallbackType CALLBACK_DEBUG = 0