| @@ -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 | ||||