Browse Source

Implement the rest of parameters / user-settings

Signed-off-by: falkTX <falktx@falktx.com>
tags/22.02
falkTX 3 years ago
parent
commit
08b6a8ef8b
Signed by: falkTX <falktx@falktx.com> GPG Key ID: CDBAA37ABC74FBA0
4 changed files with 168 additions and 7 deletions
  1. +59
    -4
      src/CardinalPlugin.cpp
  2. +59
    -2
      src/CardinalUI.cpp
  3. +40
    -0
      src/Window.cpp
  4. +10
    -1
      src/WindowParameters.hpp

+ 59
- 4
src/CardinalPlugin.cpp View File

@@ -180,6 +180,7 @@ class CardinalPlugin : public CardinalBasePlugin
std::list<CardinalMidiInputDevice*> fMidiInputs; std::list<CardinalMidiInputDevice*> fMidiInputs;
Mutex fDeviceMutex; Mutex fDeviceMutex;
// real values, not VCV interpreted ones
float fWindowParameters[kWindowParameterCount]; float fWindowParameters[kWindowParameterCount];
public: public:
@@ -192,10 +193,15 @@ public:
fCurrentAudioDevice(nullptr), fCurrentAudioDevice(nullptr),
fCurrentMidiOutput(nullptr) fCurrentMidiOutput(nullptr)
{ {
fWindowParameters[kWindowParameterShowTooltips] = 1.0f;
fWindowParameters[kWindowParameterCableOpacity] = 50.0f; fWindowParameters[kWindowParameterCableOpacity] = 50.0f;
fWindowParameters[kWindowParameterCableTension] = 50.0f; fWindowParameters[kWindowParameterCableTension] = 50.0f;
fWindowParameters[kWindowParameterRackBrightness] = 100.0f; fWindowParameters[kWindowParameterRackBrightness] = 100.0f;
fWindowParameters[kWindowParameterHaloBrightness] = 25.0f; fWindowParameters[kWindowParameterHaloBrightness] = 25.0f;
fWindowParameters[kWindowParameterKnobMode] = 0.0f;
fWindowParameters[kWindowParameterWheelKnobControl] = 0.0f;
fWindowParameters[kWindowParameterWheelSensitivity] = 1.0f;
fWindowParameters[kWindowParameterLockModulePositions] = 0.0f;
// create unique temporary path for this instance // create unique temporary path for this instance
try { try {
@@ -395,8 +401,16 @@ protected:
switch (index - kModuleParameters) switch (index - kModuleParameters)
{ {
case kWindowParameterShowTooltips:
parameter.name = "Show tooltips";
parameter.symbol = "tooltips";
parameter.hints = kParameterIsAutomable|kParameterIsInteger|kParameterIsBoolean;
parameter.ranges.def = 1.0f;
parameter.ranges.min = 0.0f;
parameter.ranges.max = 1.0f;
break;
case kWindowParameterCableOpacity: case kWindowParameterCableOpacity:
parameter.name = "Cable Opacity";
parameter.name = "Cable opacity";
parameter.symbol = "cableOpacity"; parameter.symbol = "cableOpacity";
parameter.unit = "%"; parameter.unit = "%";
parameter.hints = kParameterIsAutomable; parameter.hints = kParameterIsAutomable;
@@ -405,7 +419,7 @@ protected:
parameter.ranges.max = 100.0f; parameter.ranges.max = 100.0f;
break; break;
case kWindowParameterCableTension: case kWindowParameterCableTension:
parameter.name = "Cable Tension";
parameter.name = "Cable tension";
parameter.symbol = "cableTension"; parameter.symbol = "cableTension";
parameter.unit = "%"; parameter.unit = "%";
parameter.hints = kParameterIsAutomable; parameter.hints = kParameterIsAutomable;
@@ -414,7 +428,7 @@ protected:
parameter.ranges.max = 100.0f; parameter.ranges.max = 100.0f;
break; break;
case kWindowParameterRackBrightness: case kWindowParameterRackBrightness:
parameter.name = "Rack Brightness";
parameter.name = "Room brightness";
parameter.symbol = "rackBrightness"; parameter.symbol = "rackBrightness";
parameter.unit = "%"; parameter.unit = "%";
parameter.hints = kParameterIsAutomable; parameter.hints = kParameterIsAutomable;
@@ -423,7 +437,7 @@ protected:
parameter.ranges.max = 100.0f; parameter.ranges.max = 100.0f;
break; break;
case kWindowParameterHaloBrightness: case kWindowParameterHaloBrightness:
parameter.name = "Halo Brightness";
parameter.name = "Light Bloom";
parameter.symbol = "haloBrightness"; parameter.symbol = "haloBrightness";
parameter.unit = "%"; parameter.unit = "%";
parameter.hints = kParameterIsAutomable; parameter.hints = kParameterIsAutomable;
@@ -431,6 +445,47 @@ protected:
parameter.ranges.min = 0.0f; parameter.ranges.min = 0.0f;
parameter.ranges.max = 100.0f; parameter.ranges.max = 100.0f;
break; break;
case kWindowParameterKnobMode:
parameter.name = "Knob mode";
parameter.symbol = "knobMode";
parameter.hints = kParameterIsAutomable|kParameterIsInteger;
parameter.ranges.def = 0.0f;
parameter.ranges.min = 0.0f;
parameter.ranges.max = 2.0f;
parameter.enumValues.count = 3;
parameter.enumValues.restrictedMode = true;
parameter.enumValues.values = new ParameterEnumerationValue[3];
parameter.enumValues.values[0].label = "Linear";
parameter.enumValues.values[0].value = 0.0f;
parameter.enumValues.values[1].label = "Absolute rotary";
parameter.enumValues.values[1].value = 1.0f;
parameter.enumValues.values[2].label = "Relative rotary";
parameter.enumValues.values[2].value = 2.0f;
break;
case kWindowParameterWheelKnobControl:
parameter.name = "Scroll wheel knob control";
parameter.symbol = "knobScroll";
parameter.hints = kParameterIsAutomable|kParameterIsInteger|kParameterIsBoolean;
parameter.ranges.def = 0.0f;
parameter.ranges.min = 0.0f;
parameter.ranges.max = 1.0f;
break;
case kWindowParameterWheelSensitivity:
parameter.name = "Scroll wheel knob sensitivity";
parameter.symbol = "knobScrollSensitivity";
parameter.hints = kParameterIsAutomable|kParameterIsLogarithmic;
parameter.ranges.def = 1.0f;
parameter.ranges.min = 0.1f;
parameter.ranges.max = 10.0f;
break;
case kWindowParameterLockModulePositions:
parameter.name = "Lock module positions";
parameter.symbol = "lockModules";
parameter.hints = kParameterIsAutomable|kParameterIsInteger|kParameterIsBoolean;
parameter.ranges.def = 0.0f;
parameter.ranges.min = 0.0f;
parameter.ranges.max = 1.0f;
break;
} }
} }


+ 59
- 2
src/CardinalUI.cpp View File

@@ -18,6 +18,7 @@
#include <app/Scene.hpp> #include <app/Scene.hpp>
#include <context.hpp> #include <context.hpp>
#include <patch.hpp> #include <patch.hpp>
#include <settings.hpp>
#include <ui/Button.hpp> #include <ui/Button.hpp>
#include <ui/MenuItem.hpp> #include <ui/MenuItem.hpp>
#include <window/Window.hpp> #include <window/Window.hpp>
@@ -169,12 +170,15 @@ public:
repaint(); repaint();
} }


void WindowParametersChanged(const WindowParameterList param, const float value) override
void WindowParametersChanged(const WindowParameterList param, float value) override
{ {
float mult;
float mult = 1.0f;


switch (param) switch (param)
{ {
case kWindowParameterShowTooltips:
fWindowParameters.tooltips = value > 0.5f;
break;
case kWindowParameterCableOpacity: case kWindowParameterCableOpacity:
mult = 100.0f; mult = 100.0f;
fWindowParameters.cableOpacity = value; fWindowParameters.cableOpacity = value;
@@ -191,6 +195,33 @@ public:
mult = 100.0f; mult = 100.0f;
fWindowParameters.haloBrightness = value; fWindowParameters.haloBrightness = value;
break; break;
case kWindowParameterKnobMode:
switch (static_cast<int>(value + 0.5f))
{
case rack::settings::KNOB_MODE_LINEAR:
value = 0;
fWindowParameters.knobMode = rack::settings::KNOB_MODE_LINEAR;
break;
case rack::settings::KNOB_MODE_ROTARY_ABSOLUTE:
value = 1;
fWindowParameters.knobMode = rack::settings::KNOB_MODE_ROTARY_ABSOLUTE;
break;
case rack::settings::KNOB_MODE_ROTARY_RELATIVE:
value = 2;
fWindowParameters.knobMode = rack::settings::KNOB_MODE_ROTARY_RELATIVE;
break;
}
break;
case kWindowParameterWheelKnobControl:
fWindowParameters.knobScroll = value > 0.5f;
break;
case kWindowParameterWheelSensitivity:
mult = 1000.0f;
fWindowParameters.knobScrollSensitivity = value;
break;
case kWindowParameterLockModulePositions:
fWindowParameters.lockModules = value > 0.5f;
break;
default: default:
return; return;
} }
@@ -213,6 +244,9 @@ protected:


switch (index - kModuleParameters) switch (index - kModuleParameters)
{ {
case kWindowParameterShowTooltips:
fWindowParameters.tooltips = value > 0.5f;
break;
case kWindowParameterCableOpacity: case kWindowParameterCableOpacity:
fWindowParameters.cableOpacity = value / 100.0f; fWindowParameters.cableOpacity = value / 100.0f;
break; break;
@@ -225,6 +259,29 @@ protected:
case kWindowParameterHaloBrightness: case kWindowParameterHaloBrightness:
fWindowParameters.haloBrightness = value / 100.0f; fWindowParameters.haloBrightness = value / 100.0f;
break; break;
case kWindowParameterKnobMode:
switch (static_cast<int>(value + 0.5f))
{
case 0:
fWindowParameters.knobMode = rack::settings::KNOB_MODE_LINEAR;
break;
case 1:
fWindowParameters.knobMode = rack::settings::KNOB_MODE_ROTARY_ABSOLUTE;
break;
case 2:
fWindowParameters.knobMode = rack::settings::KNOB_MODE_ROTARY_RELATIVE;
break;
}
break;
case kWindowParameterWheelKnobControl:
fWindowParameters.knobScroll = value > 0.5f;
break;
case kWindowParameterWheelSensitivity:
fWindowParameters.knobScrollSensitivity = value / 1000.0f;
break;
case kWindowParameterLockModulePositions:
fWindowParameters.lockModules = value > 0.5f;
break;
default: default:
return; return;
} }


+ 40
- 0
src/Window.cpp View File

@@ -367,6 +367,41 @@ void WindowParametersSave(rack::window::Window* const window)
window->internal->callback->WindowParametersChanged(kWindowParameterHaloBrightness, window->internal->callback->WindowParametersChanged(kWindowParameterHaloBrightness,
rack::settings::haloBrightness); rack::settings::haloBrightness);
} }
if (d_isNotEqual(window->internal->params.knobScrollSensitivity, rack::settings::knobScrollSensitivity))
{
window->internal->params.knobScrollSensitivity = rack::settings::knobScrollSensitivity;
if (window->internal->callback != nullptr)
window->internal->callback->WindowParametersChanged(kWindowParameterWheelSensitivity,
rack::settings::knobScrollSensitivity);
}
if (window->internal->params.knobMode != rack::settings::knobMode)
{
window->internal->params.knobMode = rack::settings::knobMode;
if (window->internal->callback != nullptr)
window->internal->callback->WindowParametersChanged(kWindowParameterKnobMode,
rack::settings::knobMode);
}
if (window->internal->params.tooltips != rack::settings::tooltips)
{
window->internal->params.tooltips = rack::settings::tooltips;
if (window->internal->callback != nullptr)
window->internal->callback->WindowParametersChanged(kWindowParameterShowTooltips,
rack::settings::tooltips);
}
if (window->internal->params.knobScroll != rack::settings::knobScroll)
{
window->internal->params.knobScroll = rack::settings::knobScroll;
if (window->internal->callback != nullptr)
window->internal->callback->WindowParametersChanged(kWindowParameterWheelKnobControl,
rack::settings::knobScroll);
}
if (window->internal->params.lockModules != rack::settings::lockModules)
{
window->internal->params.lockModules = rack::settings::lockModules;
if (window->internal->callback != nullptr)
window->internal->callback->WindowParametersChanged(kWindowParameterLockModulePositions,
rack::settings::lockModules);
}
} }


void WindowParametersRestore(rack::window::Window* const window) void WindowParametersRestore(rack::window::Window* const window)
@@ -375,6 +410,11 @@ void WindowParametersRestore(rack::window::Window* const window)
rack::settings::cableTension = window->internal->params.cableTension; rack::settings::cableTension = window->internal->params.cableTension;
rack::settings::rackBrightness = window->internal->params.rackBrightness; rack::settings::rackBrightness = window->internal->params.rackBrightness;
rack::settings::haloBrightness = window->internal->params.haloBrightness; rack::settings::haloBrightness = window->internal->params.haloBrightness;
rack::settings::knobScrollSensitivity = window->internal->params.knobScrollSensitivity;
rack::settings::knobMode = static_cast<rack::settings::KnobMode>(window->internal->params.knobMode);
rack::settings::tooltips = window->internal->params.tooltips;
rack::settings::knobScroll = window->internal->params.knobScroll;
rack::settings::lockModules = window->internal->params.lockModules;
} }


void WindowParametersSetCallback(rack::window::Window* const window, WindowParametersCallback* const callback) void WindowParametersSetCallback(rack::window::Window* const window, WindowParametersCallback* const callback)


+ 10
- 1
src/WindowParameters.hpp View File

@@ -30,10 +30,15 @@ START_NAMESPACE_DISTRHO
// ----------------------------------------------------------------------------------------------------------- // -----------------------------------------------------------------------------------------------------------


enum WindowParameterList { enum WindowParameterList {
kWindowParameterShowTooltips,
kWindowParameterCableOpacity, kWindowParameterCableOpacity,
kWindowParameterCableTension, kWindowParameterCableTension,
kWindowParameterRackBrightness, kWindowParameterRackBrightness,
kWindowParameterHaloBrightness, kWindowParameterHaloBrightness,
kWindowParameterKnobMode,
kWindowParameterWheelKnobControl,
kWindowParameterWheelSensitivity,
kWindowParameterLockModulePositions,
kWindowParameterCount, kWindowParameterCount,
}; };


@@ -42,7 +47,11 @@ struct WindowParameters {
float cableTension = 0.5f; float cableTension = 0.5f;
float rackBrightness = 1.0f; float rackBrightness = 1.0f;
float haloBrightness = 0.25f; float haloBrightness = 0.25f;
// KnobMode knobMode = KNOB_MODE_LINEAR;
float knobScrollSensitivity = 0.001f;
int knobMode = 0;
bool tooltips = true;
bool knobScroll = false;
bool lockModules = false;
}; };


struct WindowParametersCallback { struct WindowParametersCallback {


Loading…
Cancel
Save