|
@@ -129,7 +129,7 @@ class CardinalPlugin : public CardinalBasePlugin |
|
|
rack::audio::Device* fCurrentDevice;
|
|
|
rack::audio::Device* fCurrentDevice;
|
|
|
Mutex fDeviceMutex;
|
|
|
Mutex fDeviceMutex;
|
|
|
|
|
|
|
|
|
float fParameters[kWindowParameterCount];
|
|
|
|
|
|
|
|
|
float fParameters[kModuleParameters + kWindowParameterCount];
|
|
|
|
|
|
|
|
|
struct ScopedContext {
|
|
|
struct ScopedContext {
|
|
|
const MutexLocker cml;
|
|
|
const MutexLocker cml;
|
|
@@ -148,17 +148,19 @@ class CardinalPlugin : public CardinalBasePlugin |
|
|
|
|
|
|
|
|
public:
|
|
|
public:
|
|
|
CardinalPlugin()
|
|
|
CardinalPlugin()
|
|
|
: CardinalBasePlugin(kWindowParameterCount, 0, 1),
|
|
|
|
|
|
|
|
|
: CardinalBasePlugin(kModuleParameters + kWindowParameterCount, 0, 1),
|
|
|
fContext(new CardinalPluginContext(this)),
|
|
|
fContext(new CardinalPluginContext(this)),
|
|
|
fAudioBufferIn(nullptr),
|
|
|
fAudioBufferIn(nullptr),
|
|
|
fAudioBufferOut(nullptr),
|
|
|
fAudioBufferOut(nullptr),
|
|
|
fIsActive(false),
|
|
|
fIsActive(false),
|
|
|
fCurrentDevice(nullptr)
|
|
|
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
|
|
|
// create unique temporary path for this instance
|
|
|
try {
|
|
|
try {
|
|
@@ -186,6 +188,11 @@ public: |
|
|
fContext->patch = new rack::patch::Manager;
|
|
|
fContext->patch = new rack::patch::Manager;
|
|
|
fContext->patch->autosavePath = fAutosavePath;
|
|
|
fContext->patch->autosavePath = fAutosavePath;
|
|
|
fContext->patch->templatePath = CARDINAL_PLUGIN_SOURCE_DIR DISTRHO_OS_SEP_STR "template.vcv";
|
|
|
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->patch->loadTemplate();
|
|
|
fContext->engine->startFallbackThread();
|
|
|
fContext->engine->startFallbackThread();
|
|
|
}
|
|
|
}
|
|
@@ -194,6 +201,13 @@ public: |
|
|
{
|
|
|
{
|
|
|
{
|
|
|
{
|
|
|
const ScopedContext sc(this);
|
|
|
const ScopedContext sc(this);
|
|
|
|
|
|
/*
|
|
|
|
|
|
delete fContext->scene;
|
|
|
|
|
|
fContext->scene = nullptr;
|
|
|
|
|
|
|
|
|
|
|
|
delete fContext->event;
|
|
|
|
|
|
fContext->event = nullptr;
|
|
|
|
|
|
*/
|
|
|
delete fContext;
|
|
|
delete fContext;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
|
|
@@ -285,7 +299,21 @@ protected: |
|
|
|
|
|
|
|
|
void initParameter(const uint32_t index, Parameter& parameter) override
|
|
|
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:
|
|
|
case kWindowParameterCableOpacity:
|
|
|
parameter.name = "Cable Opacity";
|
|
|
parameter.name = "Cable Opacity";
|
|
|