From 4510026bcca87ff726eb39e34a6d8262bdbd3a6a Mon Sep 17 00:00:00 2001 From: falkTX Date: Fri, 14 Dec 2012 12:58:43 +0000 Subject: [PATCH] Misc changes --- c++/caitlib/caitlib.c | 2 +- c++/caitlib/caitlib.h | 8 ++++---- c++/carla-backend/carla_backend.hpp | 2 +- c++/carla-engine/carla_engine.cpp | 6 +++--- c++/carla-engine/carla_engine.hpp | 2 +- c++/carla-includes/carla_defines.hpp | 4 ++-- c++/carla-native/Makefile | 4 ++++ c++/carla-native/carla_native.h | 17 +++++++++++------ c++/carla-native/carla_native.pro | 7 ++----- c++/carla-utils/carla_utils.hpp | 11 ++++++----- src/carla.py | 12 ++++++------ src/carla_backend.py | 2 +- 12 files changed, 42 insertions(+), 35 deletions(-) diff --git a/c++/caitlib/caitlib.c b/c++/caitlib/caitlib.c index 8231ff8..b12d1aa 100644 --- a/c++/caitlib/caitlib.c +++ b/c++/caitlib/caitlib.c @@ -144,7 +144,7 @@ int jack_process(jack_nframes_t nframes, void* ptr) } #else // MIDI Out - if (handlePtr->midiOutCount > 0 && transportState == JackTransportRolling) + if (transportState == JackTransportRolling && handlePtr->midiOutCount > 0) { ListHead* entryPtr; CaitlibOutPort* outPortPtr; diff --git a/c++/caitlib/caitlib.h b/c++/caitlib/caitlib.h index 79b5d35..b5c804d 100644 --- a/c++/caitlib/caitlib.h +++ b/c++/caitlib/caitlib.h @@ -22,15 +22,15 @@ #ifdef __cplusplus extern "C" { #else -#include +# include #endif #include #ifdef _WIN32 -#define CAITLIB_EXPORT __declspec (dllexport) +# define CAITLIB_EXPORT __declspec (dllexport) #else -#define CAITLIB_EXPORT __attribute__ ((visibility("default"))) +# define CAITLIB_EXPORT __attribute__ ((visibility("default"))) #endif /*! @@ -112,7 +112,7 @@ typedef struct _MidiEvent #ifndef DOXYGEN // padding for future events struct _MidiEventPadding { - uint8_t pad[32]; + uint8_t pad[128]; } __padding; #endif } data; diff --git a/c++/carla-backend/carla_backend.hpp b/c++/carla-backend/carla_backend.hpp index 19726a1..271d027 100644 --- a/c++/carla-backend/carla_backend.hpp +++ b/c++/carla-backend/carla_backend.hpp @@ -510,7 +510,7 @@ enum ProcessMode { * * \see set_callback_function() */ -typedef void (*CallbackFunc)(void* ptr, CallbackType action, unsigned short pluginId, int value1, int value2, double value3); +typedef void (*CallbackFunc)(void* ptr, CallbackType action, unsigned short pluginId, int value1, int value2, double value3, const char* valueStr); struct ParameterData { ParameterType type; diff --git a/c++/carla-engine/carla_engine.cpp b/c++/carla-engine/carla_engine.cpp index 45afa3b..1e3e9da 100644 --- a/c++/carla-engine/carla_engine.cpp +++ b/c++/carla-engine/carla_engine.cpp @@ -1023,12 +1023,12 @@ void CarlaEngine::setOutputPeak(const unsigned short pluginId, const unsigned sh // ----------------------------------------------------------------------- // Callback -void CarlaEngine::callback(const CallbackType action, const unsigned short pluginId, const int value1, const int value2, const double value3) +void CarlaEngine::callback(const CallbackType action, const unsigned short pluginId, const int value1, const int value2, const double value3, const char* const valueStr) { - qDebug("CarlaEngine::callback(%s, %i, %i, %i, %f)", CallbackType2Str(action), pluginId, value1, value2, value3); + qDebug("CarlaEngine::callback(%s, %i, %i, %i, %f, \"%s\")", CallbackType2Str(action), pluginId, value1, value2, value3, valueStr); if (m_callback) - m_callback(m_callbackPtr, action, pluginId, value1, value2, value3); + m_callback(m_callbackPtr, action, pluginId, value1, value2, value3, valueStr); } void CarlaEngine::setCallback(const CallbackFunc func, void* const ptr) diff --git a/c++/carla-engine/carla_engine.hpp b/c++/carla-engine/carla_engine.hpp index 22ec9da..c35fe0b 100644 --- a/c++/carla-engine/carla_engine.hpp +++ b/c++/carla-engine/carla_engine.hpp @@ -609,7 +609,7 @@ public: // ------------------------------------------------------------------- // Callback - void callback(const CallbackType action, const unsigned short pluginId, const int value1, const int value2, const double value3); + void callback(const CallbackType action, const unsigned short pluginId, const int value1, const int value2, const double value3, const char* const valueStr); void setCallback(const CallbackFunc func, void* const ptr); // ------------------------------------------------------------------- diff --git a/c++/carla-includes/carla_defines.hpp b/c++/carla-includes/carla_defines.hpp index 6f1052a..eca065d 100644 --- a/c++/carla-includes/carla_defines.hpp +++ b/c++/carla-includes/carla_defines.hpp @@ -36,7 +36,7 @@ # define nullptr (0) #endif -// Common includes and macros +// Common includes #ifdef Q_OS_WIN # include # include @@ -82,7 +82,7 @@ # define BINARY_NATIVE BINARY_WIN64 # else # define BINARY_NATIVE BINARY_WIN32 -# endif +# endif #else # warning Unknown binary type # define BINARY_NATIVE BINARY_OTHER diff --git a/c++/carla-native/Makefile b/c++/carla-native/Makefile index aa497f4..c47edab 100644 --- a/c++/carla-native/Makefile +++ b/c++/carla-native/Makefile @@ -13,18 +13,22 @@ BUILD_CXX_FLAGS += -fvisibility=hidden -fPIC -I. -I../carla-includes -I../carla- BUILD_CXX_FLAGS += $(shell pkg-config --cflags QtCore) ifeq ($(HAVE_ZYN_DEPS),true) +BUILD_CXX_FLAGS += -DWANT_ZYNADDSUBFX ZYN_CXX_FLAGS = $(shell pkg-config --cflags fftw3 mxml) endif +# Simple plugins OBJS = \ bypass.o \ midi-split.o +# DISTRHO plugins OBJS += \ distrho-3bandeq.o \ distrho-3bandsplitter.o \ distrho-pugl.o +# ZynAddSubFX ifeq ($(HAVE_ZYN_DEPS),true) OBJS += zynaddsubfx.o zynaddsubfx-src.o endif diff --git a/c++/carla-native/carla_native.h b/c++/carla-native/carla_native.h index 77cf7ff..763ed75 100644 --- a/c++/carla-native/carla_native.h +++ b/c++/carla-native/carla_native.h @@ -105,6 +105,7 @@ typedef struct _MidiProgram { } MidiProgram; typedef struct _TimeInfoBBT { + bool valid; int32_t bar; int32_t beat; int32_t tick; @@ -119,19 +120,19 @@ typedef struct _TimeInfo { bool playing; uint32_t frame; uint32_t time; - uint32_t valid; TimeInfoBBT bbt; } TimeInfo; typedef struct _HostDescriptor { HostHandle handle; + uint32_t (*get_buffer_size)(HostHandle handle); double (*get_sample_rate)(HostHandle handle); const TimeInfo* (*get_time_info)(HostHandle handle); bool (*write_midi_event)(HostHandle handle, MidiEvent* event); void (*ui_parameter_changed)(HostHandle handle, uint32_t index, float value); - //void (*ui_midi_program_changed)(HostHandle handle, uint32_t bank, uint32_t program); + void (*ui_midi_program_changed)(HostHandle handle, uint32_t bank, uint32_t program); void (*ui_custom_data_changed)(HostHandle handle, const char* key, const char* value); void (*ui_closed)(HostHandle handle); } HostDescriptor; @@ -183,21 +184,25 @@ typedef struct _PluginDescriptor { // Register plugin void carla_register_native_plugin(const PluginDescriptor* desc); -// Available plugins +// Simple plugins void carla_register_native_plugin_bypass(); void carla_register_native_plugin_midiSplit(); -void carla_register_native_plugin_zynaddsubfx(); -// DISTRHO based plugins +// DISTRHO plugins void carla_register_native_plugin_3BandEQ(); void carla_register_native_plugin_3BandSplitter(); +#ifdef WANT_ZYNADDSUBFX +// ZynAddSubFX +void carla_register_native_plugin_zynaddsubfx(); +#endif + // ----------------------------------------------------------------------- /**@}*/ #ifdef __cplusplus -} /* extern "C" */ +} // extern "C" #endif #endif // CARLA_NATIVE_H diff --git a/c++/carla-native/carla_native.pro b/c++/carla-native/carla_native.pro index 9c0b7c6..ce5ad44 100644 --- a/c++/carla-native/carla_native.pro +++ b/c++/carla-native/carla_native.pro @@ -11,10 +11,10 @@ DEFINES += QTCREATOR_TEST DEFINES += WANT_ZYNADDSUBFX WANT_ZYNADDSUBFX_GUI -PKGCONFIG = fftw3 mxml ntk ntk_images +PKGCONFIG = fftw3 mxml TARGET = carla_native -TEMPLATE = app #lib +TEMPLATE = app VERSION = 0.5.0 SOURCES = \ @@ -42,9 +42,6 @@ INCLUDEPATH = . distrho \ ../carla-utils \ ../distrho-plugin-toolkit -# FIX -INCLUDEPATH += /usr/include/ntk - LIBS = -lGL QMAKE_CFLAGS *= -std=c99 diff --git a/c++/carla-utils/carla_utils.hpp b/c++/carla-utils/carla_utils.hpp index 34ffb37..45cc94a 100644 --- a/c++/carla-utils/carla_utils.hpp +++ b/c++/carla-utils/carla_utils.hpp @@ -259,7 +259,7 @@ public: return contains(str.buffer); } - bool isDigit(size_t pos) const + bool isDigit(const size_t pos) const { if (pos >= length()) return false; @@ -275,7 +275,7 @@ public: buffer = ::strdup(""); } - void replace(char before, char after) + void replace(const char before, const char after) { for (size_t i=0, len = ::strlen(buffer); i < len; i++) { @@ -284,7 +284,8 @@ public: } } - void truncate(unsigned int n) + // FIXME? + void truncate(const unsigned int n) { for (size_t i=n, len = ::strlen(buffer); i < len; i++) buffer[i] = 0; @@ -294,7 +295,7 @@ public: { for (size_t i=0, len = ::strlen(buffer); i < len; i++) { - if ((buffer[i] >= '0' && buffer[i] <= '9') || (buffer[i] >= 'A' && buffer[i] <= 'Z') || (buffer[i] >= 'a' && buffer[i] <= 'z')) + if ((buffer[i] >= '0' && buffer[i] <= '9') || (buffer[i] >= 'A' && buffer[i] <= 'Z') || (buffer[i] >= 'a' && buffer[i] <= 'z') || buffer[i] == '_') continue; buffer[i] = '_'; @@ -327,7 +328,7 @@ public: return buffer; } - char& operator[](int pos) + char& operator[](const unsigned int pos) { return buffer[pos]; } diff --git a/src/carla.py b/src/carla.py index b7b9f6f..1bdf094 100755 --- a/src/carla.py +++ b/src/carla.py @@ -1134,7 +1134,7 @@ class CarlaMainW(QMainWindow, ui_carla.Ui_CarlaMainW): self.connect(self.act_help_about_qt, SIGNAL("triggered()"), app, SLOT("aboutQt()")) self.connect(self, SIGNAL("SIGUSR1()"), SLOT("slot_handleSIGUSR1()")) - self.connect(self, SIGNAL("DebugCallback(int, int, int, double)"), SLOT("slot_handleDebugCallback(int, int, int, double)")) + self.connect(self, SIGNAL("DebugCallback(int, int, int, double, QString)"), SLOT("slot_handleDebugCallback(int, int, int, double, QString)")) self.connect(self, SIGNAL("ParameterValueCallback(int, int, double)"), SLOT("slot_handleParameterValueCallback(int, int, double)")) self.connect(self, SIGNAL("ParameterMidiChannelCallback(int, int, int)"), SLOT("slot_handleParameterMidiChannelCallback(int, int, int)")) self.connect(self, SIGNAL("ParameterMidiCcCallback(int, int, int)"), SLOT("slot_handleParameterMidiCcCallback(int, int, int)")) @@ -1285,9 +1285,9 @@ class CarlaMainW(QMainWindow, ui_carla.Ui_CarlaMainW): print("Got SIGUSR1 -> Saving project now") QTimer.singleShot(0, self, SLOT("slot_file_save()")) - @pyqtSlot(int, int, int, float) - def slot_handleDebugCallback(self, plugin_id, value1, value2, value3): - print("DEBUG :: %i, %i, %i, %f)" % (plugin_id, value1, value2, value3)) + @pyqtSlot(int, int, int, float, str) + def slot_handleDebugCallback(self, plugin_id, value1, value2, value3, valueStr): + print("DEBUG :: %i, %i, %i, %f, \"%s\")" % (plugin_id, value1, value2, value3, valueStr)) @pyqtSlot(int, int, float) def slot_handleParameterValueCallback(self, pluginId, parameterId, value): @@ -1981,12 +1981,12 @@ class CarlaMainW(QMainWindow, ui_carla.Ui_CarlaMainW): # ------------------------------------------------------------------------------------------------ -def callback_function(ptr, action, pluginId, value1, value2, value3): +def callback_function(ptr, action, pluginId, value1, value2, value3, valueStr): if pluginId< 0 or pluginId >= MAX_PLUGINS or not Carla.gui: return if action == CALLBACK_DEBUG: - Carla.gui.emit(SIGNAL("DebugCallback(int, int, int, double)"), pluginId, value1, value2, value3) + Carla.gui.emit(SIGNAL("DebugCallback(int, int, int, double, QString)"), pluginId, value1, value2, value3, cString(valueStr)) elif action == CALLBACK_PARAMETER_VALUE_CHANGED: Carla.gui.emit(SIGNAL("ParameterValueCallback(int, int, double)"), pluginId, value1, value3) elif action == CALLBACK_PARAMETER_MIDI_CHANNEL_CHANGED: diff --git a/src/carla_backend.py b/src/carla_backend.py index 7e1007a..c87d543 100644 --- a/src/carla_backend.py +++ b/src/carla_backend.py @@ -785,7 +785,7 @@ class GuiInfo(Structure): ("resizable", c_bool), ] -CallbackFunc = CFUNCTYPE(None, c_void_p, c_enum, c_ushort, c_int, c_int, c_double) +CallbackFunc = CFUNCTYPE(None, c_void_p, c_enum, c_ushort, c_int, c_int, c_double, c_char_p) # ------------------------------------------------------------------------------------------------ # Backend C++ -> Python object