From eb4de36adf1f48d8d4afc4abcf3b46ce33d9dfb5 Mon Sep 17 00:00:00 2001 From: bsp2 Date: Sat, 27 Oct 2018 22:47:20 +0200 Subject: [PATCH 1/4] consolidate EXTRA_FLAGS --- setenv_linux.sh | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/setenv_linux.sh b/setenv_linux.sh index e183abbd..c00a2c43 100644 --- a/setenv_linux.sh +++ b/setenv_linux.sh @@ -21,12 +21,15 @@ if [ "${USER}" = "cameron" ]; then CPU_ARCH=haswell fi +# Extra compiler flags (C and C++) +#EXTRA_FLAGS=-DUSE_LOG_PRINTF +EXTRA_FLAGS="" + # Extra C compiler flags -export EXTRA_CFLAGS=-march=${CPU_ARCH} -#-DUSE_LOG_PRINTF +export EXTRA_CFLAGS="-march=${CPU_ARCH} ${EXTRA_FLAGS}" # Extra C++ compiler flags -export EXTRA_CPPFLAGS=-march=${CPU_ARCH} +export EXTRA_CPPFLAGS="-march=${CPU_ARCH} ${EXTRA_FLAGS}" # Extra optimization flags (C/C++) export EXTRA_OPTFLAGS= @@ -39,5 +42,5 @@ export VST2_SDK_DIR=/mnt/dev/vstsdk2.4/pluginterfaces/vst2.x/ # n = build the plugin w/o 3rd party modules (only useful for debugging purposes) # y = statically link 3rd party modules -#export RACK_STATIC_MODULES=y -export RACK_STATIC_MODULES=n +export RACK_STATIC_MODULES=y +#export RACK_STATIC_MODULES=n From a7dbb2dac9fd60a956dc9866534ae4170848ce3d Mon Sep 17 00:00:00 2001 From: bsp2 Date: Sat, 27 Oct 2018 22:48:36 +0200 Subject: [PATCH 2/4] USE_LOG_PRINTF / debug prints --- src/app/ModuleWidget.cpp | 10 ++++++++++ src/app/ParamWidget.cpp | 14 +++++++++++++- src/widgets/QuantityWidget.cpp | 14 ++++++++++++-- 3 files changed, 35 insertions(+), 3 deletions(-) diff --git a/src/app/ModuleWidget.cpp b/src/app/ModuleWidget.cpp index a076d5f2..91c4b0fe 100644 --- a/src/app/ModuleWidget.cpp +++ b/src/app/ModuleWidget.cpp @@ -13,6 +13,15 @@ #endif // USE_VST2 +#ifdef USE_LOG_PRINTF +extern void log_printf(const char *logData, ...); +#undef Dprintf +#define Dprintf log_printf +#else +#define Dprintf printf +#endif // USE_LOG_PRINTF + + namespace rack { @@ -185,6 +194,7 @@ void ModuleWidget::fromJson(json_t *rootJ) { if (!paramIdJ) continue; int paramId = json_integer_value(paramIdJ); + // Dprintf("fromJson: paramId=%d\n", paramId); // Find ParamWidget(s) with paramId for (ParamWidget *paramWidget : params) { if (paramWidget->paramId == paramId) diff --git a/src/app/ParamWidget.cpp b/src/app/ParamWidget.cpp index 9fc9b366..600045d6 100644 --- a/src/app/ParamWidget.cpp +++ b/src/app/ParamWidget.cpp @@ -4,6 +4,14 @@ #include "global.hpp" #include "global_ui.hpp" +#ifdef USE_LOG_PRINTF +extern void log_printf(const char *logData, ...); +#undef Dprintf +#define Dprintf log_printf +#else +#define Dprintf printf +#endif // USE_LOG_PRINTF + namespace rack { @@ -21,7 +29,11 @@ json_t *ParamWidget::toJson() { void ParamWidget::fromJson(json_t *rootJ) { json_t *valueJ = json_object_get(rootJ, "value"); if (valueJ) - setValue(json_number_value(valueJ)); + { + float numberVal = json_number_value(valueJ); + // Dprintf("ParamWidget::fromJson: numberVal=%f\n", numberVal); + setValue(numberVal); + } } void ParamWidget::reset() { diff --git a/src/widgets/QuantityWidget.cpp b/src/widgets/QuantityWidget.cpp index 02e5e551..ae32a011 100644 --- a/src/widgets/QuantityWidget.cpp +++ b/src/widgets/QuantityWidget.cpp @@ -1,5 +1,13 @@ #include "widgets.hpp" +#ifdef USE_LOG_PRINTF +extern void log_printf(const char *logData, ...); +#undef Dprintf +#define Dprintf log_printf +#else +#define Dprintf printf +#endif // USE_LOG_PRINTF + namespace rack { @@ -9,21 +17,23 @@ QuantityWidget::QuantityWidget() { } void QuantityWidget::setValue(float value) { - // printf("xxx QuantityWidget::setValue: value=%f\n", value); + // Dprintf("xxx QuantityWidget::setValue: value=%f\n", value); if(isfinite(minValue) && isfinite(maxValue)) { + // Dprintf("xxx QuantityWidget::setValue: isfinite value=%f\n", value); this->value = clamp(value, fminf(minValue, maxValue), fmaxf(minValue, maxValue)); EventChange e; onChange(e); } else { + // Dprintf("xxx QuantityWidget::setValue: !isfinite value=%f\n", value); // Rotary knob this->value = value; EventChange e; onChange(e); } - // printf("xxx QuantityWidget::setValue: LEAVE value=%f\n", value); + // Dprintf("xxx QuantityWidget::setValue: LEAVE value=%f\n", value); } void QuantityWidget::setLimits(float minValue, float maxValue) { From 5bf15903473df2e39f1ece0904e9b34bdabcfb7d Mon Sep 17 00:00:00 2001 From: bsp2 Date: Sat, 27 Oct 2018 22:49:38 +0200 Subject: [PATCH 3/4] normalize parameter value (VSTPluginGetParameter) --- src/engine.cpp | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/src/engine.cpp b/src/engine.cpp index d15a8bab..2b164426 100644 --- a/src/engine.cpp +++ b/src/engine.cpp @@ -21,6 +21,14 @@ #include #endif +#ifdef USE_LOG_PRINTF +extern void log_printf(const char *logData, ...); +#undef Dprintf +#define Dprintf log_printf +#else +#define Dprintf printf +#endif // USE_LOG_PRINTF + namespace rack { @@ -369,6 +377,7 @@ void vst2_handle_queued_params(void) { if(paramRange > 0.0f) { float value = (qp.value * paramRange) + paramWidget->minValue; + // Dprintf("vst2_handle_queued_params: paramId=%d value=%f min=%f max=%f\n", paramId, value, paramWidget->minValue, paramWidget->maxValue); engineSetParam(module, paramId, value, false/*bVSTAutomate*/); // Update UI widget @@ -405,7 +414,21 @@ float vst2_get_param(int uniqueParamId) { { if(sUI(paramId) < sUI(module->params.size())) // paranoia { - return module->params[paramId].value; + ModuleWidget *moduleWidget = global_ui->app.gRackWidget->findModuleWidgetByModule(module); + if(NULL != moduleWidget) + { + // Find + ParamWidget *paramWidget = moduleWidget->findParamWidgetByParamId(paramId); + if(NULL != paramWidget) + { + if(isfinite(paramWidget->minValue) && isfinite(paramWidget->maxValue)) + { + float value = module->params[paramId].value; + value = (value - paramWidget->minValue) / (paramWidget->maxValue - paramWidget->minValue); + return value; + } + } + } } } return 0.0f; From b5b6fb6ad33ba0625dd35991eadb22150cf0dfb7 Mon Sep 17 00:00:00 2001 From: bsp2 Date: Sat, 27 Oct 2018 22:51:10 +0200 Subject: [PATCH 4/4] stub-handle Bitwig opcodes 56+66 --- src/vst2_main.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/vst2_main.cpp b/src/vst2_main.cpp index f58f223e..c7b8eae5 100644 --- a/src/vst2_main.cpp +++ b/src/vst2_main.cpp @@ -1983,6 +1983,11 @@ VstIntPtr VSTPluginDispatcher(VSTPlugin *vstPlugin, } break; + case 56: + case 66: + // (todo) what are these ? Bitwig (Linux) sends a lot of them + break; + default: // ignoring all other opcodes Dprintf("vstrack_plugin:dispatcher: unhandled opCode %d [ignored] \n", opCode);