@@ -1 +1 @@ | |||||
Subproject commit d200db475b74a20e244bbfc2031527666c614eb4 | |||||
Subproject commit d41b971d77dceadcb76a7736908d0b6a36ff1469 |
@@ -0,0 +1,268 @@ | |||||
{ | |||||
"version": "2.1.2", | |||||
"unsaved": true, | |||||
"zoom": 1.0, | |||||
"modules": [ | |||||
{ | |||||
"id": 8712245256622475, | |||||
"plugin": "Cardinal", | |||||
"model": "TextEditor", | |||||
"version": "2.0", | |||||
"params": [], | |||||
"leftModuleId": 799138358763949, | |||||
"data": { | |||||
"filepath": "", | |||||
"lang": "None", | |||||
"etext": "Welcome to Cardinal!\n\nThis is the Web/Wasm variant\nIt has 2 audio outputs, enabled by default.\nUse Engine menu to enable input and/or MIDI.\n\nA basic VCO + ADSR + VCA is the default patch\n\n", | |||||
"width": 23 | |||||
}, | |||||
"pos": [ | |||||
49, | |||||
0 | |||||
] | |||||
}, | |||||
{ | |||||
"id": 5726895899473528, | |||||
"plugin": "Fundamental", | |||||
"model": "ADSR", | |||||
"version": "2.0", | |||||
"params": [ | |||||
{ | |||||
"value": 0.5, | |||||
"id": 0 | |||||
}, | |||||
{ | |||||
"value": 0.5, | |||||
"id": 1 | |||||
}, | |||||
{ | |||||
"value": 0.5, | |||||
"id": 2 | |||||
}, | |||||
{ | |||||
"value": 0.5, | |||||
"id": 3 | |||||
}, | |||||
{ | |||||
"value": 0.0, | |||||
"id": 4 | |||||
}, | |||||
{ | |||||
"value": 0.0, | |||||
"id": 5 | |||||
}, | |||||
{ | |||||
"value": 0.0, | |||||
"id": 6 | |||||
}, | |||||
{ | |||||
"value": 0.0, | |||||
"id": 7 | |||||
}, | |||||
{ | |||||
"value": 0.0, | |||||
"id": 8 | |||||
} | |||||
], | |||||
"leftModuleId": 8601159184541723, | |||||
"rightModuleId": 4828178296911509, | |||||
"pos": [ | |||||
18, | |||||
0 | |||||
] | |||||
}, | |||||
{ | |||||
"id": 4828178296911509, | |||||
"plugin": "Fundamental", | |||||
"model": "VCA-1", | |||||
"version": "2.0", | |||||
"params": [ | |||||
{ | |||||
"value": 1.0, | |||||
"id": 0 | |||||
}, | |||||
{ | |||||
"value": 1.0, | |||||
"id": 1 | |||||
} | |||||
], | |||||
"leftModuleId": 5726895899473528, | |||||
"rightModuleId": 1, | |||||
"pos": [ | |||||
27, | |||||
0 | |||||
] | |||||
}, | |||||
{ | |||||
"id": 8601159184541723, | |||||
"plugin": "Fundamental", | |||||
"model": "VCO", | |||||
"version": "2.0", | |||||
"params": [ | |||||
{ | |||||
"value": 0.0, | |||||
"id": 0 | |||||
}, | |||||
{ | |||||
"value": 1.0, | |||||
"id": 1 | |||||
}, | |||||
{ | |||||
"value": 0.0, | |||||
"id": 2 | |||||
}, | |||||
{ | |||||
"value": 0.0, | |||||
"id": 3 | |||||
}, | |||||
{ | |||||
"value": 0.0, | |||||
"id": 4 | |||||
}, | |||||
{ | |||||
"value": 0.5, | |||||
"id": 5 | |||||
}, | |||||
{ | |||||
"value": 0.0, | |||||
"id": 6 | |||||
}, | |||||
{ | |||||
"value": 0.0, | |||||
"id": 7 | |||||
} | |||||
], | |||||
"leftModuleId": 2, | |||||
"rightModuleId": 5726895899473528, | |||||
"pos": [ | |||||
9, | |||||
0 | |||||
] | |||||
}, | |||||
{ | |||||
"id": 1, | |||||
"plugin": "Cardinal", | |||||
"model": "HostAudio2", | |||||
"version": "2.0", | |||||
"params": [ | |||||
{ | |||||
"value": 0.79432821273803711, | |||||
"id": 0 | |||||
} | |||||
], | |||||
"leftModuleId": 4828178296911509, | |||||
"rightModuleId": 799138358763949, | |||||
"data": { | |||||
"dcFilter": true | |||||
}, | |||||
"pos": [ | |||||
30, | |||||
0 | |||||
] | |||||
}, | |||||
{ | |||||
"id": 2, | |||||
"plugin": "Cardinal", | |||||
"model": "HostMIDI", | |||||
"version": "2.0", | |||||
"params": [], | |||||
"rightModuleId": 8601159184541723, | |||||
"data": { | |||||
"pwRange": 0.0, | |||||
"smooth": false, | |||||
"channels": 1, | |||||
"polyMode": 0, | |||||
"lastPitch": 8192, | |||||
"lastMod": 0, | |||||
"inputChannel": 0, | |||||
"outputChannel": 0 | |||||
}, | |||||
"pos": [ | |||||
0, | |||||
0 | |||||
] | |||||
}, | |||||
{ | |||||
"id": 799138358763949, | |||||
"plugin": "Cardinal", | |||||
"model": "HostMIDIMap", | |||||
"version": "2.0", | |||||
"params": [], | |||||
"leftModuleId": 1, | |||||
"rightModuleId": 8712245256622475, | |||||
"data": { | |||||
"maps": [ | |||||
{ | |||||
"cc": -1, | |||||
"moduleId": -1, | |||||
"paramId": 0 | |||||
} | |||||
], | |||||
"smooth": true, | |||||
"channel": 0 | |||||
}, | |||||
"pos": [ | |||||
38, | |||||
0 | |||||
] | |||||
} | |||||
], | |||||
"cables": [ | |||||
{ | |||||
"id": 5155876120487880, | |||||
"outputModuleId": 2, | |||||
"outputId": 1, | |||||
"inputModuleId": 5726895899473528, | |||||
"inputId": 4, | |||||
"color": "#ff9352" | |||||
}, | |||||
{ | |||||
"id": 781753834216137, | |||||
"outputModuleId": 2, | |||||
"outputId": 6, | |||||
"inputModuleId": 5726895899473528, | |||||
"inputId": 5, | |||||
"color": "#ffd452" | |||||
}, | |||||
{ | |||||
"id": 3464471860196875, | |||||
"outputModuleId": 5726895899473528, | |||||
"outputId": 0, | |||||
"inputModuleId": 4828178296911509, | |||||
"inputId": 0, | |||||
"color": "#e8ff52" | |||||
}, | |||||
{ | |||||
"id": 739552540616113, | |||||
"outputModuleId": 4828178296911509, | |||||
"outputId": 0, | |||||
"inputModuleId": 1, | |||||
"inputId": 0, | |||||
"color": "#52beff" | |||||
}, | |||||
{ | |||||
"id": 6701970185765111, | |||||
"outputModuleId": 2, | |||||
"outputId": 0, | |||||
"inputModuleId": 8601159184541723, | |||||
"inputId": 0, | |||||
"color": "#ff5252" | |||||
}, | |||||
{ | |||||
"id": 6959800657121782, | |||||
"outputModuleId": 2, | |||||
"outputId": 2, | |||||
"inputModuleId": 8601159184541723, | |||||
"inputId": 1, | |||||
"color": "#52ff7d" | |||||
}, | |||||
{ | |||||
"id": 1598271319373837, | |||||
"outputModuleId": 8601159184541723, | |||||
"outputId": 0, | |||||
"inputModuleId": 4828178296911509, | |||||
"inputId": 1, | |||||
"color": "#a8ff52" | |||||
} | |||||
] | |||||
} |
@@ -0,0 +1,268 @@ | |||||
{ | |||||
"version": "2.1.2", | |||||
"unsaved": true, | |||||
"zoom": 1.0, | |||||
"modules": [ | |||||
{ | |||||
"id": 8712245256622475, | |||||
"plugin": "Cardinal", | |||||
"model": "TextEditor", | |||||
"version": "2.0", | |||||
"params": [], | |||||
"leftModuleId": 799138358763949, | |||||
"data": { | |||||
"filepath": "", | |||||
"lang": "None", | |||||
"etext": "Welcome to Cardinal!\n\nThis is the Web/Wasm variant\nIt has 2 audio outputs, enabled by default.\nUse Engine menu to enable input and/or MIDI.\n\nA basic VCO + ADSR + VCA is the default patch\n\n", | |||||
"width": 23 | |||||
}, | |||||
"pos": [ | |||||
49, | |||||
0 | |||||
] | |||||
}, | |||||
{ | |||||
"id": 5726895899473528, | |||||
"plugin": "Fundamental", | |||||
"model": "ADSR", | |||||
"version": "2.0", | |||||
"params": [ | |||||
{ | |||||
"value": 0.5, | |||||
"id": 0 | |||||
}, | |||||
{ | |||||
"value": 0.5, | |||||
"id": 1 | |||||
}, | |||||
{ | |||||
"value": 0.5, | |||||
"id": 2 | |||||
}, | |||||
{ | |||||
"value": 0.5, | |||||
"id": 3 | |||||
}, | |||||
{ | |||||
"value": 0.0, | |||||
"id": 4 | |||||
}, | |||||
{ | |||||
"value": 0.0, | |||||
"id": 5 | |||||
}, | |||||
{ | |||||
"value": 0.0, | |||||
"id": 6 | |||||
}, | |||||
{ | |||||
"value": 0.0, | |||||
"id": 7 | |||||
}, | |||||
{ | |||||
"value": 0.0, | |||||
"id": 8 | |||||
} | |||||
], | |||||
"leftModuleId": 8601159184541723, | |||||
"rightModuleId": 4828178296911509, | |||||
"pos": [ | |||||
18, | |||||
0 | |||||
] | |||||
}, | |||||
{ | |||||
"id": 4828178296911509, | |||||
"plugin": "Fundamental", | |||||
"model": "VCA-1", | |||||
"version": "2.0", | |||||
"params": [ | |||||
{ | |||||
"value": 1.0, | |||||
"id": 0 | |||||
}, | |||||
{ | |||||
"value": 1.0, | |||||
"id": 1 | |||||
} | |||||
], | |||||
"leftModuleId": 5726895899473528, | |||||
"rightModuleId": 1, | |||||
"pos": [ | |||||
27, | |||||
0 | |||||
] | |||||
}, | |||||
{ | |||||
"id": 8601159184541723, | |||||
"plugin": "Fundamental", | |||||
"model": "VCO", | |||||
"version": "2.0", | |||||
"params": [ | |||||
{ | |||||
"value": 0.0, | |||||
"id": 0 | |||||
}, | |||||
{ | |||||
"value": 1.0, | |||||
"id": 1 | |||||
}, | |||||
{ | |||||
"value": 0.0, | |||||
"id": 2 | |||||
}, | |||||
{ | |||||
"value": 0.0, | |||||
"id": 3 | |||||
}, | |||||
{ | |||||
"value": 0.0, | |||||
"id": 4 | |||||
}, | |||||
{ | |||||
"value": 0.5, | |||||
"id": 5 | |||||
}, | |||||
{ | |||||
"value": 0.0, | |||||
"id": 6 | |||||
}, | |||||
{ | |||||
"value": 0.0, | |||||
"id": 7 | |||||
} | |||||
], | |||||
"leftModuleId": 2, | |||||
"rightModuleId": 5726895899473528, | |||||
"pos": [ | |||||
9, | |||||
0 | |||||
] | |||||
}, | |||||
{ | |||||
"id": 1, | |||||
"plugin": "Cardinal", | |||||
"model": "HostAudio2", | |||||
"version": "2.0", | |||||
"params": [ | |||||
{ | |||||
"value": 0.79432821273803711, | |||||
"id": 0 | |||||
} | |||||
], | |||||
"leftModuleId": 4828178296911509, | |||||
"rightModuleId": 799138358763949, | |||||
"data": { | |||||
"dcFilter": true | |||||
}, | |||||
"pos": [ | |||||
30, | |||||
0 | |||||
] | |||||
}, | |||||
{ | |||||
"id": 2, | |||||
"plugin": "Cardinal", | |||||
"model": "HostMIDI", | |||||
"version": "2.0", | |||||
"params": [], | |||||
"rightModuleId": 8601159184541723, | |||||
"data": { | |||||
"pwRange": 0.0, | |||||
"smooth": false, | |||||
"channels": 1, | |||||
"polyMode": 0, | |||||
"lastPitch": 8192, | |||||
"lastMod": 0, | |||||
"inputChannel": 0, | |||||
"outputChannel": 0 | |||||
}, | |||||
"pos": [ | |||||
0, | |||||
0 | |||||
] | |||||
}, | |||||
{ | |||||
"id": 799138358763949, | |||||
"plugin": "Cardinal", | |||||
"model": "HostMIDIMap", | |||||
"version": "2.0", | |||||
"params": [], | |||||
"leftModuleId": 1, | |||||
"rightModuleId": 8712245256622475, | |||||
"data": { | |||||
"maps": [ | |||||
{ | |||||
"cc": -1, | |||||
"moduleId": -1, | |||||
"paramId": 0 | |||||
} | |||||
], | |||||
"smooth": true, | |||||
"channel": 0 | |||||
}, | |||||
"pos": [ | |||||
38, | |||||
0 | |||||
] | |||||
} | |||||
], | |||||
"cables": [ | |||||
{ | |||||
"id": 5155876120487880, | |||||
"outputModuleId": 2, | |||||
"outputId": 1, | |||||
"inputModuleId": 5726895899473528, | |||||
"inputId": 4, | |||||
"color": "#ff9352" | |||||
}, | |||||
{ | |||||
"id": 781753834216137, | |||||
"outputModuleId": 2, | |||||
"outputId": 6, | |||||
"inputModuleId": 5726895899473528, | |||||
"inputId": 5, | |||||
"color": "#ffd452" | |||||
}, | |||||
{ | |||||
"id": 3464471860196875, | |||||
"outputModuleId": 5726895899473528, | |||||
"outputId": 0, | |||||
"inputModuleId": 4828178296911509, | |||||
"inputId": 0, | |||||
"color": "#e8ff52" | |||||
}, | |||||
{ | |||||
"id": 739552540616113, | |||||
"outputModuleId": 4828178296911509, | |||||
"outputId": 0, | |||||
"inputModuleId": 1, | |||||
"inputId": 0, | |||||
"color": "#52beff" | |||||
}, | |||||
{ | |||||
"id": 6701970185765111, | |||||
"outputModuleId": 2, | |||||
"outputId": 0, | |||||
"inputModuleId": 8601159184541723, | |||||
"inputId": 0, | |||||
"color": "#ff5252" | |||||
}, | |||||
{ | |||||
"id": 6959800657121782, | |||||
"outputModuleId": 2, | |||||
"outputId": 2, | |||||
"inputModuleId": 8601159184541723, | |||||
"inputId": 1, | |||||
"color": "#52ff7d" | |||||
}, | |||||
{ | |||||
"id": 1598271319373837, | |||||
"outputModuleId": 8601159184541723, | |||||
"outputId": 0, | |||||
"inputModuleId": 4828178296911509, | |||||
"inputId": 1, | |||||
"color": "#a8ff52" | |||||
} | |||||
] | |||||
} |
@@ -26,7 +26,12 @@ | |||||
#endif | #endif | ||||
#ifdef DISTRHO_OS_WASM | #ifdef DISTRHO_OS_WASM | ||||
# define CARDINAL_IMPORTED_TEMPLATE_FILENAME "/imported.vcv" | |||||
# define CARDINAL_WASM_IMPORTED_TEMPLATE_FILENAME "/imported.vcv" | |||||
# ifdef STATIC_BUILD | |||||
# define CARDINAL_WASM_WELCOME_TEMPLATE_FILENAME "welcome-wasm.vcv" | |||||
# else | |||||
# define CARDINAL_WASM_WELCOME_TEMPLATE_FILENAME "welcome-wasm-mini.vcv" | |||||
# endif | |||||
#endif | #endif | ||||
extern const std::string CARDINAL_VERSION; | extern const std::string CARDINAL_VERSION; | ||||
@@ -28,12 +28,18 @@ | |||||
#define DISTRHO_PLUGIN_BRAND "DISTRHO" | #define DISTRHO_PLUGIN_BRAND "DISTRHO" | ||||
#define DISTRHO_PLUGIN_URI "https://distrho.kx.studio/plugins/cardinal#fx" | #define DISTRHO_PLUGIN_URI "https://distrho.kx.studio/plugins/cardinal#fx" | ||||
#ifdef __MOD_DEVICES__ | |||||
#define DISTRHO_PLUGIN_NAME "Cardinal Mini" | |||||
#define DISTRHO_PLUGIN_LABEL "CardinalMini" | |||||
#if defined(DISTRHO_OS_WASM) && defined(STATIC_BUILD) | |||||
# define DISTRHO_PLUGIN_NAME "Mini Cardinal" | |||||
# define DISTRHO_PLUGIN_LABEL "MiniCardinal" | |||||
#elif defined(DISTRHO_OS_WASM) | |||||
# define DISTRHO_PLUGIN_NAME "Cardinal" | |||||
# define DISTRHO_PLUGIN_LABEL "Cardinal" | |||||
#elif defined(__MOD_DEVICES__) | |||||
# define DISTRHO_PLUGIN_NAME "Cardinal Mini" | |||||
# define DISTRHO_PLUGIN_LABEL "CardinalMini" | |||||
#else | #else | ||||
#define DISTRHO_PLUGIN_NAME "Cardinal FX" | |||||
#define DISTRHO_PLUGIN_LABEL "CardinalFX" | |||||
# define DISTRHO_PLUGIN_NAME "Cardinal FX" | |||||
# define DISTRHO_PLUGIN_LABEL "CardinalFX" | |||||
#endif | #endif | ||||
#ifdef HEADLESS | #ifdef HEADLESS | ||||
@@ -52,18 +52,14 @@ | |||||
# include "extra/SharedResourcePointer.hpp" | # include "extra/SharedResourcePointer.hpp" | ||||
#endif | #endif | ||||
#if CARDINAL_VARIANT_FX | |||||
# define CARDINAL_FACTORY_TEMPLATE_NAME "template-fx.vcv" | |||||
#elif CARDINAL_VARIANT_SYNTH | |||||
# define CARDINAL_FACTORY_TEMPLATE_NAME "template-synth.vcv" | |||||
#else | |||||
# define CARDINAL_FACTORY_TEMPLATE_NAME "template.vcv" | |||||
#endif | |||||
#ifdef DISTRHO_OS_WASM | #ifdef DISTRHO_OS_WASM | ||||
# define CARDINAL_TEMPLATE_NAME "template-wasm.vcv" | |||||
# define CARDINAL_TEMPLATE_NAME "init/wasm.vcv" | |||||
#elif CARDINAL_VARIANT_FX | |||||
# define CARDINAL_TEMPLATE_NAME "init/fx.vcv" | |||||
#elif CARDINAL_VARIANT_SYNTH | |||||
# define CARDINAL_TEMPLATE_NAME "init/synth.vcv" | |||||
#else | #else | ||||
# define CARDINAL_TEMPLATE_NAME CARDINAL_FACTORY_TEMPLATE_NAME | |||||
# define CARDINAL_TEMPLATE_NAME "init/main.vcv" | |||||
#endif | #endif | ||||
static const constexpr uint kCardinalStateBaseCount = 3; // patch, screenshot, comment | static const constexpr uint kCardinalStateBaseCount = 3; // patch, screenshot, comment | ||||
@@ -78,16 +74,19 @@ static const constexpr uint kCardinalStateCount = kCardinalStateBaseCount; | |||||
#endif | #endif | ||||
namespace rack { | namespace rack { | ||||
namespace asset { | |||||
std::string patchesPath(); | |||||
} | |||||
namespace engine { | namespace engine { | ||||
void Engine_setAboutToClose(Engine*); | |||||
void Engine_setAboutToClose(Engine*); | |||||
} | } | ||||
namespace plugin { | namespace plugin { | ||||
void initStaticPlugins(); | |||||
void destroyStaticPlugins(); | |||||
void initStaticPlugins(); | |||||
void destroyStaticPlugins(); | |||||
} | } | ||||
#ifndef HEADLESS | #ifndef HEADLESS | ||||
namespace window { | namespace window { | ||||
void WindowInit(Window* window, DISTRHO_NAMESPACE::Plugin* plugin); | |||||
void WindowInit(Window* window, DISTRHO_NAMESPACE::Plugin* plugin); | |||||
} | } | ||||
#endif | #endif | ||||
} | } | ||||
@@ -183,10 +182,8 @@ struct Initializer | |||||
{ | { | ||||
if (const char* const resourcePath = getResourcePath(bundlePath)) | if (const char* const resourcePath = getResourcePath(bundlePath)) | ||||
{ | { | ||||
asset::bundlePath = system::join(resourcePath, "PluginManifests"); | |||||
asset::systemDir = resourcePath; | asset::systemDir = resourcePath; | ||||
templatePath = system::join(asset::systemDir, CARDINAL_TEMPLATE_NAME); | |||||
factoryTemplatePath = system::join(asset::systemDir, CARDINAL_FACTORY_TEMPLATE_NAME); | |||||
asset::bundlePath = system::join(asset::systemDir, "PluginManifests"); | |||||
} | } | ||||
} | } | ||||
@@ -196,13 +193,8 @@ struct Initializer | |||||
// Make system dir point to source code location as fallback | // Make system dir point to source code location as fallback | ||||
asset::systemDir = CARDINAL_PLUGIN_SOURCE_DIR DISTRHO_OS_SEP_STR "Rack"; | asset::systemDir = CARDINAL_PLUGIN_SOURCE_DIR DISTRHO_OS_SEP_STR "Rack"; | ||||
if (system::exists(system::join(asset::systemDir, "res"))) | |||||
{ | |||||
templatePath = CARDINAL_PLUGIN_SOURCE_DIR DISTRHO_OS_SEP_STR CARDINAL_TEMPLATE_NAME; | |||||
factoryTemplatePath = CARDINAL_PLUGIN_SOURCE_DIR DISTRHO_OS_SEP_STR CARDINAL_FACTORY_TEMPLATE_NAME; | |||||
} | |||||
// If source code dir does not exist use install target prefix as system dir | // If source code dir does not exist use install target prefix as system dir | ||||
else | |||||
if (!system::exists(system::join(asset::systemDir, "res"))) | |||||
#endif | #endif | ||||
{ | { | ||||
#if defined(DISTRHO_OS_WASM) | #if defined(DISTRHO_OS_WASM) | ||||
@@ -218,18 +210,19 @@ struct Initializer | |||||
#endif | #endif | ||||
asset::bundlePath = system::join(asset::systemDir, "PluginManifests"); | asset::bundlePath = system::join(asset::systemDir, "PluginManifests"); | ||||
templatePath = system::join(asset::systemDir, CARDINAL_TEMPLATE_NAME); | |||||
factoryTemplatePath = system::join(asset::systemDir, CARDINAL_FACTORY_TEMPLATE_NAME); | |||||
} | } | ||||
} | } | ||||
asset::userDir = asset::systemDir; | asset::userDir = asset::systemDir; | ||||
} | } | ||||
const std::string patchesPath = asset::patchesPath(); | |||||
#ifdef DISTRHO_OS_WASM | #ifdef DISTRHO_OS_WASM | ||||
if ((patchStorageSlug = getPatchStorageSlug()) != nullptr) | |||||
templatePath = CARDINAL_IMPORTED_TEMPLATE_FILENAME; | |||||
templatePath = system::join(patchesPath, CARDINAL_WASM_WELCOME_TEMPLATE_FILENAME); | |||||
#else | |||||
templatePath = system::join(patchesPath, CARDINAL_TEMPLATE_NAME); | |||||
#endif | #endif | ||||
factoryTemplatePath = system::join(patchesPath, CARDINAL_TEMPLATE_NAME); | |||||
// Log environment | // Log environment | ||||
INFO("%s %s v%s", APP_NAME.c_str(), APP_EDITION.c_str(), APP_VERSION.c_str()); | INFO("%s %s v%s", APP_NAME.c_str(), APP_EDITION.c_str(), APP_VERSION.c_str()); | ||||
@@ -608,11 +601,13 @@ public: | |||||
context->window = new rack::window::Window; | context->window = new rack::window::Window; | ||||
#ifdef DISTRHO_OS_WASM | #ifdef DISTRHO_OS_WASM | ||||
if (rack::patchStorageSlug == nullptr) | |||||
if ((rack::patchStorageSlug = getPatchStorageSlug()) == nullptr) | |||||
#endif | #endif | ||||
{ | { | ||||
context->patch->loadTemplate(); | context->patch->loadTemplate(); | ||||
context->scene->rackScroll->reset(); | context->scene->rackScroll->reset(); | ||||
// swap to factory template after first load | |||||
context->patch->templatePath = context->patch->factoryTemplatePath; | |||||
} | } | ||||
#if defined(HAVE_LIBLO) && defined(HEADLESS) | #if defined(HAVE_LIBLO) && defined(HEADLESS) | ||||
@@ -253,7 +253,7 @@ static void downloadPatchStorageFailed(const char* const filename) | |||||
} | } | ||||
using namespace rack; | using namespace rack; | ||||
context->patch->templatePath = system::join(asset::systemDir, "template-synth.vcv"); // FIXME | |||||
context->patch->templatePath = system::join(asset::systemDir, "init/wasm.vcv"); // FIXME | |||||
context->patch->loadTemplate(); | context->patch->loadTemplate(); | ||||
context->scene->rackScroll->reset(); | context->scene->rackScroll->reset(); | ||||
} | } | ||||
@@ -277,7 +277,7 @@ static void downloadPatchStorageSucceeded(const char* const filename) | |||||
} | } | ||||
try { | try { | ||||
context->patch->load(CARDINAL_IMPORTED_TEMPLATE_FILENAME); | |||||
context->patch->load(CARDINAL_WASM_IMPORTED_TEMPLATE_FILENAME); | |||||
} catch (rack::Exception& e) { | } catch (rack::Exception& e) { | ||||
const std::string message = rack::string::f("Could not load patch: %s", e.what()); | const std::string message = rack::string::f("Could not load patch: %s", e.what()); | ||||
asyncDialog::create(message.c_str()); | asyncDialog::create(message.c_str()); | ||||
@@ -428,7 +428,7 @@ public: | |||||
void uiIdle() override | void uiIdle() override | ||||
{ | { | ||||
if (counterForFirstIdlePoint >= 0 && ++counterForFirstIdlePoint == 5) | |||||
if (counterForFirstIdlePoint >= 0 && ++counterForFirstIdlePoint == 30) | |||||
{ | { | ||||
counterForFirstIdlePoint = -1; | counterForFirstIdlePoint = -1; | ||||
@@ -311,7 +311,6 @@ endif | |||||
CORE_RESOURCES = patches | CORE_RESOURCES = patches | ||||
CORE_RESOURCES += $(subst ../Rack/res/,,$(wildcard ../Rack/res/ComponentLibrary/*.svg ../Rack/res/fonts/*.ttf)) | CORE_RESOURCES += $(subst ../Rack/res/,,$(wildcard ../Rack/res/ComponentLibrary/*.svg ../Rack/res/fonts/*.ttf)) | ||||
CORE_RESOURCES += $(subst ../,,$(wildcard ../template*.vcv)) | |||||
LV2_RESOURCES = $(CORE_RESOURCES:%=$(TARGET_DIR)/$(NAME).lv2/resources/%) | LV2_RESOURCES = $(CORE_RESOURCES:%=$(TARGET_DIR)/$(NAME).lv2/resources/%) | ||||
VST3_RESOURCES = $(CORE_RESOURCES:%=$(TARGET_DIR)/$(NAME).vst3/Contents/Resources/%) | VST3_RESOURCES = $(CORE_RESOURCES:%=$(TARGET_DIR)/$(NAME).vst3/Contents/Resources/%) | ||||
@@ -376,22 +375,6 @@ $(TARGET_DIR)/%/patches: ../../patches | |||||
-@mkdir -p "$(shell dirname $@)" | -@mkdir -p "$(shell dirname $@)" | ||||
$(SILENT)ln -sf $(abspath $<) $@ | $(SILENT)ln -sf $(abspath $<) $@ | ||||
$(TARGET_DIR)/%/template.vcv: ../template.vcv | |||||
-@mkdir -p "$(shell dirname $@)" | |||||
$(SILENT)ln -sf $(abspath $<) $@ | |||||
$(TARGET_DIR)/%/template-fx.vcv: ../template-fx.vcv | |||||
-@mkdir -p "$(shell dirname $@)" | |||||
$(SILENT)ln -sf $(abspath $<) $@ | |||||
$(TARGET_DIR)/%/template-synth.vcv: ../template-synth.vcv | |||||
-@mkdir -p "$(shell dirname $@)" | |||||
$(SILENT)ln -sf $(abspath $<) $@ | |||||
$(TARGET_DIR)/%/template-wasm.vcv: ../template-wasm.vcv | |||||
-@mkdir -p "$(shell dirname $@)" | |||||
$(SILENT)ln -sf $(abspath $<) $@ | |||||
$(TARGET_DIR)/$(NAME).lv2/resources/%: ../Rack/res/% | $(TARGET_DIR)/$(NAME).lv2/resources/%: ../Rack/res/% | ||||
-@mkdir -p "$(shell dirname $@)" | -@mkdir -p "$(shell dirname $@)" | ||||
$(SILENT)ln -sf $(abspath $<) $@ | $(SILENT)ln -sf $(abspath $<) $@ | ||||
@@ -97,12 +97,15 @@ struct MenuButton : ui::Button { | |||||
struct FileButton : MenuButton { | struct FileButton : MenuButton { | ||||
const bool isStandalone; | const bool isStandalone; | ||||
#if !(defined(DISTRHO_OS_WASM) && defined(STATIC_BUILD)) | |||||
std::vector<std::string> demoPatches; | std::vector<std::string> demoPatches; | ||||
#endif | |||||
FileButton(const bool standalone) | FileButton(const bool standalone) | ||||
: MenuButton(), isStandalone(standalone) | : MenuButton(), isStandalone(standalone) | ||||
{ | { | ||||
const std::string patchesDir = asset::patchesPath(); | |||||
#if !(defined(DISTRHO_OS_WASM) && defined(STATIC_BUILD)) | |||||
const std::string patchesDir = asset::patchesPath() + DISTRHO_OS_SEP_STR "examples"; | |||||
if (system::isDirectory(patchesDir)) | if (system::isDirectory(patchesDir)) | ||||
{ | { | ||||
@@ -111,6 +114,7 @@ struct FileButton : MenuButton { | |||||
return string::lowercase(a) < string::lowercase(b); | return string::lowercase(a) < string::lowercase(b); | ||||
}); | }); | ||||
} | } | ||||
#endif | |||||
} | } | ||||
void onAction(const ActionEvent& e) override { | void onAction(const ActionEvent& e) override { | ||||
@@ -195,6 +199,7 @@ struct FileButton : MenuButton { | |||||
})); | })); | ||||
#endif | #endif | ||||
#if !(defined(DISTRHO_OS_WASM) && defined(STATIC_BUILD)) | |||||
if (!demoPatches.empty()) | if (!demoPatches.empty()) | ||||
{ | { | ||||
menu->addChild(new ui::MenuSeparator); | menu->addChild(new ui::MenuSeparator); | ||||
@@ -220,6 +225,7 @@ struct FileButton : MenuButton { | |||||
})); | })); | ||||
})); | })); | ||||
} | } | ||||
#endif | |||||
#ifndef DISTRHO_OS_WASM | #ifndef DISTRHO_OS_WASM | ||||
if (isStandalone) { | if (isStandalone) { | ||||