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;