@@ -701,6 +701,53 @@ public: | |||||
case kEngineControlEventTypeParameter: | case kEngineControlEventTypeParameter: | ||||
{ | { | ||||
// Control backend stuff | |||||
if (event.channel == kData->ctrlChannel) | |||||
{ | |||||
float value; | |||||
if (MIDI_IS_CONTROL_BREATH_CONTROLLER(ctrlEvent.param) && (fHints & PLUGIN_CAN_DRYWET) > 0) | |||||
{ | |||||
value = ctrlEvent.value; | |||||
setDryWet(value, false, false); | |||||
postponeRtEvent(kPluginPostRtEventParameterChange, PARAMETER_DRYWET, 0, value); | |||||
} | |||||
if (MIDI_IS_CONTROL_CHANNEL_VOLUME(ctrlEvent.param) && (fHints & PLUGIN_CAN_VOLUME) > 0) | |||||
{ | |||||
value = ctrlEvent.value*127.0f/100.0f; | |||||
setVolume(value, false, false); | |||||
postponeRtEvent(kPluginPostRtEventParameterChange, PARAMETER_VOLUME, 0, value); | |||||
} | |||||
if (MIDI_IS_CONTROL_BALANCE(ctrlEvent.param) && (fHints & PLUGIN_CAN_BALANCE) > 0) | |||||
{ | |||||
float left, right; | |||||
value = ctrlEvent.value/0.5f - 1.0f; | |||||
if (value < 0.0f) | |||||
{ | |||||
left = -1.0f; | |||||
right = (value*2.0f)+1.0f; | |||||
} | |||||
else if (value > 0.0f) | |||||
{ | |||||
left = (value*2.0f)-1.0f; | |||||
right = 1.0f; | |||||
} | |||||
else | |||||
{ | |||||
left = -1.0f; | |||||
right = 1.0f; | |||||
} | |||||
setBalanceLeft(left, false, false); | |||||
setBalanceRight(right, false, false); | |||||
postponeRtEvent(kPluginPostRtEventParameterChange, PARAMETER_BALANCE_LEFT, 0, left); | |||||
postponeRtEvent(kPluginPostRtEventParameterChange, PARAMETER_BALANCE_RIGHT, 0, right); | |||||
} | |||||
} | |||||
// Control plugin parameters | // Control plugin parameters | ||||
for (k=0; k < kData->param.count; ++k) | for (k=0; k < kData->param.count; ++k) | ||||
{ | { | ||||
@@ -1128,7 +1128,6 @@ public: | |||||
value = ctrlEvent.value; | value = ctrlEvent.value; | ||||
setDryWet(value, false, false); | setDryWet(value, false, false); | ||||
postponeRtEvent(kPluginPostRtEventParameterChange, PARAMETER_DRYWET, 0, value); | postponeRtEvent(kPluginPostRtEventParameterChange, PARAMETER_DRYWET, 0, value); | ||||
continue; | |||||
} | } | ||||
if (MIDI_IS_CONTROL_CHANNEL_VOLUME(ctrlEvent.param) && (fHints & PLUGIN_CAN_VOLUME) > 0) | if (MIDI_IS_CONTROL_CHANNEL_VOLUME(ctrlEvent.param) && (fHints & PLUGIN_CAN_VOLUME) > 0) | ||||
@@ -1136,7 +1135,6 @@ public: | |||||
value = ctrlEvent.value*127.0f/100.0f; | value = ctrlEvent.value*127.0f/100.0f; | ||||
setVolume(value, false, false); | setVolume(value, false, false); | ||||
postponeRtEvent(kPluginPostRtEventParameterChange, PARAMETER_VOLUME, 0, value); | postponeRtEvent(kPluginPostRtEventParameterChange, PARAMETER_VOLUME, 0, value); | ||||
continue; | |||||
} | } | ||||
if (MIDI_IS_CONTROL_BALANCE(ctrlEvent.param) && (fHints & PLUGIN_CAN_BALANCE) > 0) | if (MIDI_IS_CONTROL_BALANCE(ctrlEvent.param) && (fHints & PLUGIN_CAN_BALANCE) > 0) | ||||
@@ -1164,7 +1162,6 @@ public: | |||||
setBalanceRight(right, false, false); | setBalanceRight(right, false, false); | ||||
postponeRtEvent(kPluginPostRtEventParameterChange, PARAMETER_BALANCE_LEFT, 0, left); | postponeRtEvent(kPluginPostRtEventParameterChange, PARAMETER_BALANCE_LEFT, 0, left); | ||||
postponeRtEvent(kPluginPostRtEventParameterChange, PARAMETER_BALANCE_RIGHT, 0, right); | postponeRtEvent(kPluginPostRtEventParameterChange, PARAMETER_BALANCE_RIGHT, 0, right); | ||||
continue; | |||||
} | } | ||||
} | } | ||||
#endif | #endif | ||||
@@ -1198,6 +1195,7 @@ public: | |||||
setParameterValue(k, value, false, false, false); | setParameterValue(k, value, false, false, false); | ||||
postponeRtEvent(kPluginPostRtEventParameterChange, static_cast<int32_t>(k), 0, value); | postponeRtEvent(kPluginPostRtEventParameterChange, static_cast<int32_t>(k), 0, value); | ||||
} | } | ||||
break; | break; | ||||
} | } | ||||
@@ -1122,7 +1122,6 @@ public: | |||||
value = ctrlEvent.value; | value = ctrlEvent.value; | ||||
setDryWet(value, false, false); | setDryWet(value, false, false); | ||||
postponeRtEvent(kPluginPostRtEventParameterChange, PARAMETER_DRYWET, 0, value); | postponeRtEvent(kPluginPostRtEventParameterChange, PARAMETER_DRYWET, 0, value); | ||||
continue; | |||||
} | } | ||||
if (MIDI_IS_CONTROL_CHANNEL_VOLUME(ctrlEvent.param) && (fHints & PLUGIN_CAN_VOLUME) > 0) | if (MIDI_IS_CONTROL_CHANNEL_VOLUME(ctrlEvent.param) && (fHints & PLUGIN_CAN_VOLUME) > 0) | ||||
@@ -1130,7 +1129,6 @@ public: | |||||
value = ctrlEvent.value*127.0f/100.0f; | value = ctrlEvent.value*127.0f/100.0f; | ||||
setVolume(value, false, false); | setVolume(value, false, false); | ||||
postponeRtEvent(kPluginPostRtEventParameterChange, PARAMETER_VOLUME, 0, value); | postponeRtEvent(kPluginPostRtEventParameterChange, PARAMETER_VOLUME, 0, value); | ||||
continue; | |||||
} | } | ||||
if (MIDI_IS_CONTROL_BALANCE(ctrlEvent.param) && (fHints & PLUGIN_CAN_BALANCE) > 0) | if (MIDI_IS_CONTROL_BALANCE(ctrlEvent.param) && (fHints & PLUGIN_CAN_BALANCE) > 0) | ||||
@@ -1158,7 +1156,6 @@ public: | |||||
setBalanceRight(right, false, false); | setBalanceRight(right, false, false); | ||||
postponeRtEvent(kPluginPostRtEventParameterChange, PARAMETER_BALANCE_LEFT, 0, left); | postponeRtEvent(kPluginPostRtEventParameterChange, PARAMETER_BALANCE_LEFT, 0, left); | ||||
postponeRtEvent(kPluginPostRtEventParameterChange, PARAMETER_BALANCE_RIGHT, 0, right); | postponeRtEvent(kPluginPostRtEventParameterChange, PARAMETER_BALANCE_RIGHT, 0, right); | ||||
continue; | |||||
} | } | ||||
} | } | ||||
#endif | #endif | ||||
@@ -934,7 +934,6 @@ public: | |||||
value = ctrlEvent.value; | value = ctrlEvent.value; | ||||
setDryWet(value, false, false); | setDryWet(value, false, false); | ||||
postponeRtEvent(kPluginPostRtEventParameterChange, PARAMETER_DRYWET, 0, value); | postponeRtEvent(kPluginPostRtEventParameterChange, PARAMETER_DRYWET, 0, value); | ||||
continue; | |||||
} | } | ||||
if (MIDI_IS_CONTROL_CHANNEL_VOLUME(ctrlEvent.param) && (fHints & PLUGIN_CAN_VOLUME) > 0) | if (MIDI_IS_CONTROL_CHANNEL_VOLUME(ctrlEvent.param) && (fHints & PLUGIN_CAN_VOLUME) > 0) | ||||
@@ -942,7 +941,6 @@ public: | |||||
value = ctrlEvent.value*127.0f/100.0f; | value = ctrlEvent.value*127.0f/100.0f; | ||||
setVolume(value, false, false); | setVolume(value, false, false); | ||||
postponeRtEvent(kPluginPostRtEventParameterChange, PARAMETER_VOLUME, 0, value); | postponeRtEvent(kPluginPostRtEventParameterChange, PARAMETER_VOLUME, 0, value); | ||||
continue; | |||||
} | } | ||||
if (MIDI_IS_CONTROL_BALANCE(ctrlEvent.param) && (fHints & PLUGIN_CAN_BALANCE) > 0) | if (MIDI_IS_CONTROL_BALANCE(ctrlEvent.param) && (fHints & PLUGIN_CAN_BALANCE) > 0) | ||||
@@ -970,7 +968,6 @@ public: | |||||
setBalanceRight(right, false, false); | setBalanceRight(right, false, false); | ||||
postponeRtEvent(kPluginPostRtEventParameterChange, PARAMETER_BALANCE_LEFT, 0, left); | postponeRtEvent(kPluginPostRtEventParameterChange, PARAMETER_BALANCE_LEFT, 0, left); | ||||
postponeRtEvent(kPluginPostRtEventParameterChange, PARAMETER_BALANCE_RIGHT, 0, right); | postponeRtEvent(kPluginPostRtEventParameterChange, PARAMETER_BALANCE_RIGHT, 0, right); | ||||
continue; | |||||
} | } | ||||
} | } | ||||
#endif | #endif | ||||
@@ -626,50 +626,47 @@ public: | |||||
// Control backend stuff | // Control backend stuff | ||||
if (event.channel == kData->ctrlChannel) | if (event.channel == kData->ctrlChannel) | ||||
{ | { | ||||
double value; | |||||
float value; | |||||
if (MIDI_IS_CONTROL_BREATH_CONTROLLER(ctrlEvent.param) && (fHints & PLUGIN_CAN_DRYWET) > 0) | if (MIDI_IS_CONTROL_BREATH_CONTROLLER(ctrlEvent.param) && (fHints & PLUGIN_CAN_DRYWET) > 0) | ||||
{ | { | ||||
value = ctrlEvent.value; | value = ctrlEvent.value; | ||||
setDryWet(value, false, false); | setDryWet(value, false, false); | ||||
postponeRtEvent(kPluginPostRtEventParameterChange, PARAMETER_DRYWET, 0, value); | postponeRtEvent(kPluginPostRtEventParameterChange, PARAMETER_DRYWET, 0, value); | ||||
continue; | |||||
} | } | ||||
if (MIDI_IS_CONTROL_CHANNEL_VOLUME(ctrlEvent.param) && (fHints & PLUGIN_CAN_VOLUME) > 0) | if (MIDI_IS_CONTROL_CHANNEL_VOLUME(ctrlEvent.param) && (fHints & PLUGIN_CAN_VOLUME) > 0) | ||||
{ | { | ||||
value = ctrlEvent.value*127/100; | |||||
value = ctrlEvent.value*127.0f/100.0f; | |||||
setVolume(value, false, false); | setVolume(value, false, false); | ||||
postponeRtEvent(kPluginPostRtEventParameterChange, PARAMETER_VOLUME, 0, value); | postponeRtEvent(kPluginPostRtEventParameterChange, PARAMETER_VOLUME, 0, value); | ||||
continue; | |||||
} | } | ||||
if (MIDI_IS_CONTROL_BALANCE(ctrlEvent.param) && (fHints & PLUGIN_CAN_BALANCE) > 0) | if (MIDI_IS_CONTROL_BALANCE(ctrlEvent.param) && (fHints & PLUGIN_CAN_BALANCE) > 0) | ||||
{ | { | ||||
double left, right; | |||||
value = ctrlEvent.value/0.5 - 1.0; | |||||
float left, right; | |||||
value = ctrlEvent.value/0.5f - 1.0f; | |||||
if (value < 0.0) | |||||
if (value < 0.0f) | |||||
{ | { | ||||
left = -1.0; | |||||
right = (value*2)+1.0; | |||||
left = -1.0f; | |||||
right = (value*2.0f)+1.0f; | |||||
} | } | ||||
else if (value > 0.0) | |||||
else if (value > 0.0f) | |||||
{ | { | ||||
left = (value*2)-1.0; | |||||
right = 1.0; | |||||
left = (value*2.0f)-1.0f; | |||||
right = 1.0f; | |||||
} | } | ||||
else | else | ||||
{ | { | ||||
left = -1.0; | |||||
right = 1.0; | |||||
left = -1.0f; | |||||
right = 1.0f; | |||||
} | } | ||||
setBalanceLeft(left, false, false); | setBalanceLeft(left, false, false); | ||||
setBalanceRight(right, false, false); | setBalanceRight(right, false, false); | ||||
postponeRtEvent(kPluginPostRtEventParameterChange, PARAMETER_BALANCE_LEFT, 0, left); | postponeRtEvent(kPluginPostRtEventParameterChange, PARAMETER_BALANCE_LEFT, 0, left); | ||||
postponeRtEvent(kPluginPostRtEventParameterChange, PARAMETER_BALANCE_RIGHT, 0, right); | postponeRtEvent(kPluginPostRtEventParameterChange, PARAMETER_BALANCE_RIGHT, 0, right); | ||||
continue; | |||||
} | } | ||||
} | } | ||||
#endif | #endif | ||||
@@ -20,7 +20,7 @@ | |||||
#ifdef WANT_LV2 | #ifdef WANT_LV2 | ||||
#include "CarlaPluginGui.hpp" | #include "CarlaPluginGui.hpp" | ||||
#include "CarlaEngineOsc.hpp" | |||||
#include "../engine/CarlaEngineOsc.hpp" | |||||
#include "CarlaLv2Utils.hpp" | #include "CarlaLv2Utils.hpp" | ||||
#include "Lv2AtomQueue.hpp" | #include "Lv2AtomQueue.hpp" | ||||
@@ -2697,7 +2697,6 @@ public: | |||||
value = ctrlEvent.value; | value = ctrlEvent.value; | ||||
setDryWet(value, false, false); | setDryWet(value, false, false); | ||||
postponeRtEvent(kPluginPostRtEventParameterChange, PARAMETER_DRYWET, 0, value); | postponeRtEvent(kPluginPostRtEventParameterChange, PARAMETER_DRYWET, 0, value); | ||||
continue; | |||||
} | } | ||||
if (MIDI_IS_CONTROL_CHANNEL_VOLUME(ctrlEvent.param) && (fHints & PLUGIN_CAN_VOLUME) > 0) | if (MIDI_IS_CONTROL_CHANNEL_VOLUME(ctrlEvent.param) && (fHints & PLUGIN_CAN_VOLUME) > 0) | ||||
@@ -2705,7 +2704,6 @@ public: | |||||
value = ctrlEvent.value*127.0f/100.0f; | value = ctrlEvent.value*127.0f/100.0f; | ||||
setVolume(value, false, false); | setVolume(value, false, false); | ||||
postponeRtEvent(kPluginPostRtEventParameterChange, PARAMETER_VOLUME, 0, value); | postponeRtEvent(kPluginPostRtEventParameterChange, PARAMETER_VOLUME, 0, value); | ||||
continue; | |||||
} | } | ||||
if (MIDI_IS_CONTROL_BALANCE(ctrlEvent.param) && (fHints & PLUGIN_CAN_BALANCE) > 0) | if (MIDI_IS_CONTROL_BALANCE(ctrlEvent.param) && (fHints & PLUGIN_CAN_BALANCE) > 0) | ||||
@@ -2733,7 +2731,6 @@ public: | |||||
setBalanceRight(right, false, false); | setBalanceRight(right, false, false); | ||||
postponeRtEvent(kPluginPostRtEventParameterChange, PARAMETER_BALANCE_LEFT, 0, left); | postponeRtEvent(kPluginPostRtEventParameterChange, PARAMETER_BALANCE_LEFT, 0, left); | ||||
postponeRtEvent(kPluginPostRtEventParameterChange, PARAMETER_BALANCE_RIGHT, 0, right); | postponeRtEvent(kPluginPostRtEventParameterChange, PARAMETER_BALANCE_RIGHT, 0, right); | ||||
continue; | |||||
} | } | ||||
} | } | ||||
#endif | #endif | ||||
@@ -8,7 +8,7 @@ include ../Makefile.mk | |||||
# -------------------------------------------------------------- | # -------------------------------------------------------------- | ||||
BUILD_CXX_FLAGS += $(shell pkg-config --cflags liblo) -I../engine | |||||
BUILD_CXX_FLAGS += $(shell pkg-config --cflags liblo) | |||||
ifeq ($(HAVE_QT5),true) | ifeq ($(HAVE_QT5),true) | ||||
BUILD_CXX_FLAGS += $(shell pkg-config --cflags Qt5Core Qt5Xml Qt5Widgets) | BUILD_CXX_FLAGS += $(shell pkg-config --cflags Qt5Core Qt5Xml Qt5Widgets) | ||||
@@ -1430,7 +1430,6 @@ public: | |||||
value = ctrlEvent.value; | value = ctrlEvent.value; | ||||
setDryWet(value, false, false); | setDryWet(value, false, false); | ||||
postponeRtEvent(kPluginPostRtEventParameterChange, PARAMETER_DRYWET, 0, value); | postponeRtEvent(kPluginPostRtEventParameterChange, PARAMETER_DRYWET, 0, value); | ||||
continue; | |||||
} | } | ||||
if (MIDI_IS_CONTROL_CHANNEL_VOLUME(ctrlEvent.param) && (fHints & PLUGIN_CAN_VOLUME) > 0) | if (MIDI_IS_CONTROL_CHANNEL_VOLUME(ctrlEvent.param) && (fHints & PLUGIN_CAN_VOLUME) > 0) | ||||
@@ -1438,7 +1437,6 @@ public: | |||||
value = ctrlEvent.value*127.0f/100.0f; | value = ctrlEvent.value*127.0f/100.0f; | ||||
setVolume(value, false, false); | setVolume(value, false, false); | ||||
postponeRtEvent(kPluginPostRtEventParameterChange, PARAMETER_VOLUME, 0, value); | postponeRtEvent(kPluginPostRtEventParameterChange, PARAMETER_VOLUME, 0, value); | ||||
continue; | |||||
} | } | ||||
if (MIDI_IS_CONTROL_BALANCE(ctrlEvent.param) && (fHints & PLUGIN_CAN_BALANCE) > 0) | if (MIDI_IS_CONTROL_BALANCE(ctrlEvent.param) && (fHints & PLUGIN_CAN_BALANCE) > 0) | ||||
@@ -1466,7 +1464,6 @@ public: | |||||
setBalanceRight(right, false, false); | setBalanceRight(right, false, false); | ||||
postponeRtEvent(kPluginPostRtEventParameterChange, PARAMETER_BALANCE_LEFT, 0, left); | postponeRtEvent(kPluginPostRtEventParameterChange, PARAMETER_BALANCE_LEFT, 0, left); | ||||
postponeRtEvent(kPluginPostRtEventParameterChange, PARAMETER_BALANCE_RIGHT, 0, right); | postponeRtEvent(kPluginPostRtEventParameterChange, PARAMETER_BALANCE_RIGHT, 0, right); | ||||
continue; | |||||
} | } | ||||
} | } | ||||
#endif | #endif | ||||
@@ -1211,7 +1211,6 @@ public: | |||||
value = ctrlEvent.value; | value = ctrlEvent.value; | ||||
setDryWet(value, false, false); | setDryWet(value, false, false); | ||||
postponeRtEvent(kPluginPostRtEventParameterChange, PARAMETER_DRYWET, 0, value); | postponeRtEvent(kPluginPostRtEventParameterChange, PARAMETER_DRYWET, 0, value); | ||||
continue; | |||||
} | } | ||||
if (MIDI_IS_CONTROL_CHANNEL_VOLUME(ctrlEvent.param) && (fHints & PLUGIN_CAN_VOLUME) > 0) | if (MIDI_IS_CONTROL_CHANNEL_VOLUME(ctrlEvent.param) && (fHints & PLUGIN_CAN_VOLUME) > 0) | ||||
@@ -1219,7 +1218,6 @@ public: | |||||
value = ctrlEvent.value*127.0f/100.0f; | value = ctrlEvent.value*127.0f/100.0f; | ||||
setVolume(value, false, false); | setVolume(value, false, false); | ||||
postponeRtEvent(kPluginPostRtEventParameterChange, PARAMETER_VOLUME, 0, value); | postponeRtEvent(kPluginPostRtEventParameterChange, PARAMETER_VOLUME, 0, value); | ||||
continue; | |||||
} | } | ||||
if (MIDI_IS_CONTROL_BALANCE(ctrlEvent.param) && (fHints & PLUGIN_CAN_BALANCE) > 0) | if (MIDI_IS_CONTROL_BALANCE(ctrlEvent.param) && (fHints & PLUGIN_CAN_BALANCE) > 0) | ||||
@@ -1247,7 +1245,6 @@ public: | |||||
setBalanceRight(right, false, false); | setBalanceRight(right, false, false); | ||||
postponeRtEvent(kPluginPostRtEventParameterChange, PARAMETER_BALANCE_LEFT, 0, left); | postponeRtEvent(kPluginPostRtEventParameterChange, PARAMETER_BALANCE_LEFT, 0, left); | ||||
postponeRtEvent(kPluginPostRtEventParameterChange, PARAMETER_BALANCE_RIGHT, 0, right); | postponeRtEvent(kPluginPostRtEventParameterChange, PARAMETER_BALANCE_RIGHT, 0, right); | ||||
continue; | |||||
} | } | ||||
} | } | ||||
#endif | #endif | ||||