Add stubs for host-exposed parameters; Move app scenes to DSP
Signed-off-by: falkTX <falktx@falktx.com>
This commit is contained in:
parent
94f6412b4c
commit
d989bdcc59
3 changed files with 41 additions and 24 deletions
|
@ -129,7 +129,7 @@ class CardinalPlugin : public CardinalBasePlugin
|
|||
rack::audio::Device* fCurrentDevice;
|
||||
Mutex fDeviceMutex;
|
||||
|
||||
float fParameters[kWindowParameterCount];
|
||||
float fParameters[kModuleParameters + kWindowParameterCount];
|
||||
|
||||
struct ScopedContext {
|
||||
const MutexLocker cml;
|
||||
|
@ -148,17 +148,19 @@ class CardinalPlugin : public CardinalBasePlugin
|
|||
|
||||
public:
|
||||
CardinalPlugin()
|
||||
: CardinalBasePlugin(kWindowParameterCount, 0, 1),
|
||||
: CardinalBasePlugin(kModuleParameters + kWindowParameterCount, 0, 1),
|
||||
fContext(new CardinalPluginContext(this)),
|
||||
fAudioBufferIn(nullptr),
|
||||
fAudioBufferOut(nullptr),
|
||||
fIsActive(false),
|
||||
fCurrentDevice(nullptr)
|
||||
{
|
||||
fParameters[kWindowParameterCableOpacity] = 50.0f;
|
||||
fParameters[kWindowParameterCableTension] = 50.0f;
|
||||
fParameters[kWindowParameterRackBrightness] = 100.0f;
|
||||
fParameters[kWindowParameterHaloBrightness] = 25.0f;
|
||||
std::memset(fParameters, 0, sizeof(fParameters));
|
||||
|
||||
fParameters[kModuleParameters + kWindowParameterCableOpacity] = 50.0f;
|
||||
fParameters[kModuleParameters + kWindowParameterCableTension] = 50.0f;
|
||||
fParameters[kModuleParameters + kWindowParameterRackBrightness] = 100.0f;
|
||||
fParameters[kModuleParameters + kWindowParameterHaloBrightness] = 25.0f;
|
||||
|
||||
// create unique temporary path for this instance
|
||||
try {
|
||||
|
@ -186,6 +188,11 @@ public:
|
|||
fContext->patch = new rack::patch::Manager;
|
||||
fContext->patch->autosavePath = fAutosavePath;
|
||||
fContext->patch->templatePath = CARDINAL_PLUGIN_SOURCE_DIR DISTRHO_OS_SEP_STR "template.vcv";
|
||||
|
||||
fContext->event = new rack::widget::EventState;
|
||||
fContext->scene = new rack::app::Scene;
|
||||
fContext->event->rootWidget = fContext->scene;
|
||||
|
||||
fContext->patch->loadTemplate();
|
||||
fContext->engine->startFallbackThread();
|
||||
}
|
||||
|
@ -194,6 +201,13 @@ public:
|
|||
{
|
||||
{
|
||||
const ScopedContext sc(this);
|
||||
/*
|
||||
delete fContext->scene;
|
||||
fContext->scene = nullptr;
|
||||
|
||||
delete fContext->event;
|
||||
fContext->event = nullptr;
|
||||
*/
|
||||
delete fContext;
|
||||
}
|
||||
|
||||
|
@ -285,7 +299,21 @@ protected:
|
|||
|
||||
void initParameter(const uint32_t index, Parameter& parameter) override
|
||||
{
|
||||
switch (index)
|
||||
if (index < kModuleParameters)
|
||||
{
|
||||
parameter.name = "Parameter ";
|
||||
parameter.name += String(index + 1);
|
||||
parameter.symbol = "param_";
|
||||
parameter.symbol += String(index + 1);
|
||||
parameter.unit = "v";
|
||||
parameter.hints = kParameterIsAutomable;
|
||||
parameter.ranges.def = 0.0f;
|
||||
parameter.ranges.min = 0.0f;
|
||||
parameter.ranges.max = 10.0f;
|
||||
return;
|
||||
}
|
||||
|
||||
switch (index - kModuleParameters)
|
||||
{
|
||||
case kWindowParameterCableOpacity:
|
||||
parameter.name = "Cable Opacity";
|
||||
|
|
|
@ -100,10 +100,6 @@ public:
|
|||
{
|
||||
const ScopedContext sc(this);
|
||||
|
||||
fContext->event = new rack::widget::EventState;
|
||||
fContext->scene = new rack::app::Scene;
|
||||
fContext->event->rootWidget = fContext->scene;
|
||||
|
||||
rack::window::WindowInit(fContext->window, this);
|
||||
|
||||
// Hide non-wanted menu entries
|
||||
|
@ -143,12 +139,6 @@ public:
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
// we need to reload current patch for things to show on screen :(
|
||||
// FIXME always save
|
||||
if (! fContext->patch->hasAutosave())
|
||||
fContext->patch->saveAutosave();
|
||||
fContext->patch->loadAutosave();
|
||||
}
|
||||
|
||||
WindowParametersSetCallback(fContext->window, this);
|
||||
|
@ -160,12 +150,6 @@ public:
|
|||
|
||||
delete fContext->window;
|
||||
fContext->window = nullptr;
|
||||
|
||||
delete fContext->scene;
|
||||
fContext->scene = nullptr;
|
||||
|
||||
delete fContext->event;
|
||||
fContext->event = nullptr;
|
||||
}
|
||||
|
||||
void onNanoDisplay() override
|
||||
|
@ -218,7 +202,10 @@ protected:
|
|||
*/
|
||||
void parameterChanged(const uint32_t index, const float value) override
|
||||
{
|
||||
switch (index)
|
||||
if (index < kModuleParameters)
|
||||
return;
|
||||
|
||||
switch (index - kModuleParameters)
|
||||
{
|
||||
case kWindowParameterCableOpacity:
|
||||
fWindowParameters.cableOpacity = value / 100.0f;
|
||||
|
|
|
@ -31,6 +31,8 @@ START_NAMESPACE_DISTRHO
|
|||
|
||||
// -----------------------------------------------------------------------------------------------------------
|
||||
|
||||
static constexpr const uint kModuleParameters = 24;
|
||||
|
||||
class CardinalBasePlugin : public Plugin {
|
||||
public:
|
||||
CardinalBasePlugin(uint32_t parameterCount, uint32_t programCount, uint32_t stateCount)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue