Tweak mini variant build to allow standalone

Signed-off-by: falkTX <falktx@falktx.com>
This commit is contained in:
falkTX 2023-02-19 20:34:20 +01:00
parent 5376573d09
commit ca5bfd6270
No known key found for this signature in database
GPG key ID: CDBAA37ABC74FBA0
25 changed files with 171 additions and 168 deletions

View file

@ -814,7 +814,11 @@ jobs:
run: |
VERSION=$(cat Makefile | awk 'sub("VERSION = ","")')
cd bin
sed -i "s/CardinalMini\./CardinalMini-v${VERSION}\./g" *.html *.js
sed -i "s/CardinalNative\./CardinalNative-v${VERSION}\./g" *.html *.js
mv CardinalMini.data CardinalMini-v${VERSION}.data
mv CardinalMini.js CardinalMini-v${VERSION}.js
mv CardinalMini.wasm CardinalMini-v${VERSION}.wasm
mv CardinalNative.data CardinalNative-v${VERSION}.data
mv CardinalNative.js CardinalNative-v${VERSION}.js
mv CardinalNative.wasm CardinalNative-v${VERSION}.wasm
@ -844,82 +848,6 @@ jobs:
files: |
*.zip
wasm-mini:
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v3
with:
submodules: recursive
- name: Set up cache
id: cache
uses: actions/cache@v3
with:
path: |
~/emsdk
src/Rack/dep/bin
src/Rack/dep/include
src/Rack/dep/lib
src/Rack/dep/share
src/Rack/dep/jansson-2.12
src/Rack/dep/libarchive-3.4.3
src/Rack/dep/libsamplerate-0.1.9
src/Rack/dep/speexdsp-SpeexDSP-1.2rc3
src/Rack/dep/zstd-1.4.5
key: wasm-mini-v${{ env.CACHE_VERSION }}
- name: Set up dependencies
run: |
sudo apt-get update -qq
sudo apt-get install -yqq brotli
sudo apt-get clean
[ -e ~/emsdk ] || git clone https://github.com/emscripten-core/emsdk.git ~/emsdk
cd ~/emsdk && ./emsdk install ${{ env.EMSCRIPTEN_VERSION }} && ./emsdk activate ${{ env.EMSCRIPTEN_VERSION }}
- name: Build wasm-mini cross-compiled
env:
AR: emar
CC: emcc
CXX: em++
NM: emnm
RANLIB: emranlib
STRIP: emstrip
WITH_LTO: false
run: |
source ~/emsdk/emsdk_env.sh
make features
make CIBUILD=true NOPLUGINS=true NOOPT=true NOSIMD=true STATIC_BUILD=true USE_GLES2=true -j $(nproc)
- name: Make wasm versioned and compress
run: |
VERSION=$(cat Makefile | awk 'sub("VERSION = ","")')
cd bin
rm -r *.lv2
sed -i "s/CardinalNative\./CardinalNative-v${VERSION}\./g" *.html *.js
mv CardinalNative.data CardinalNative-v${VERSION}.data
mv CardinalNative.js CardinalNative-v${VERSION}.js
mv CardinalNative.wasm CardinalNative-v${VERSION}.wasm
brotli -k -q 11 *.data *.html *.js *.wasm
- name: Set sha8 (non-release)
if: startsWith(github.ref, 'refs/tags/') != true
run: echo "SHA8=$(echo ${{ github.sha }} | cut -c1-8)" >> $GITHUB_ENV
- name: Set sha8 (release)
if: startsWith(github.ref, 'refs/tags/')
run: echo "SHA8=$(echo ${{ github.ref_name }})" >> $GITHUB_ENV
- name: Pack binaries
run: |
cd bin; zip -r -9 ../${{ github.event.repository.name }}-wasm-mini-${{ github.event.pull_request.number || env.SHA8 }}.zip $(ls *.br *.html *.data *.js *.wasm)
- uses: actions/upload-artifact@v3
with:
name: ${{ github.event.repository.name }}-wasm-mini-${{ github.event.pull_request.number || env.SHA8 }}
path: |
*.zip
- uses: softprops/action-gh-release@v1
if: startsWith(github.ref, 'refs/tags/')
with:
tag_name: ${{ github.ref_name }}
name: ${{ github.ref_name }}
draft: false
prerelease: false
files: |
*.zip
win32:
runs-on: ubuntu-22.04
steps:

View file

@ -1,19 +0,0 @@
/*
* DISTRHO Cardinal Plugin
* Copyright (C) 2021-2022 Filipe Coelho <falktx@falktx.com>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 3 of
* the License, or any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* For a full copy of the GNU General Public License see the LICENSE file.
*/
#define CARDINAL_COMMON_DSP_ONLY
#include "../CardinalCommon.cpp"

View file

@ -0,0 +1 @@
../CardinalCommon.cpp

View file

@ -35,7 +35,7 @@
#define DISTRHO_PLUGIN_LABEL "CardinalMini"
#define DISTRHO_PLUGIN_HAS_UI 1
#define DISTRHO_PLUGIN_WANT_DIRECT_ACCESS 0
#define DISTRHO_PLUGIN_WANT_DIRECT_ACCESS 1
#define DISTRHO_UI_FILE_BROWSER 1
#define DISTRHO_UI_USE_NANOVG 1
#define DISTRHO_UI_USER_RESIZABLE 1
@ -52,8 +52,4 @@
#define DISTRHO_PLUGIN_LV2_CATEGORY "mod:ControlVoltagePlugin, lv2:UtilityPlugin"
#define DISTRHO_PLUGIN_VST3_CATEGORIES "Fx|Generator"
// #ifdef __MOD_DEVICES__
# define DISTRHO_PLUGIN_USES_MODGUI 1
// #endif
#endif // DISTRHO_PLUGIN_INFO_H_INCLUDED

View file

@ -5,5 +5,4 @@
#
NAME = CardinalMini
MODGUI_CLASS_NAME = distrho_cardinal_mini
include ../Makefile.cardinal.mk

View file

@ -0,0 +1,19 @@
/*
* DISTRHO Cardinal Plugin
* Copyright (C) 2021-2022 Filipe Coelho <falktx@falktx.com>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 3 of
* the License, or any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* For a full copy of the GNU General Public License see the LICENSE file.
*/
#define CARDINAL_COMMON_DSP_ONLY
#include "../CardinalCommon.cpp"

View file

@ -0,0 +1 @@
../CardinalPlugin.cpp

View file

@ -0,0 +1 @@
../CardinalRemote.cpp

View file

@ -0,0 +1 @@
../CardinalUI.cpp

View file

@ -0,0 +1,56 @@
/*
* DISTRHO Cardinal Plugin
* Copyright (C) 2021-2022 Filipe Coelho <falktx@falktx.com>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 3 of
* the License, or any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* For a full copy of the GNU General Public License see the LICENSE file.
*/
#ifndef DISTRHO_PLUGIN_INFO_H_INCLUDED
#define DISTRHO_PLUGIN_INFO_H_INCLUDED
#define CARDINAL_VARIANT_MAIN 0
#define CARDINAL_VARIANT_MINI 1
#define CARDINAL_VARIANT_FX 0
#define CARDINAL_VARIANT_NATIVE 0
#define CARDINAL_VARIANT_SYNTH 0
#define CARDINAL_NUM_AUDIO_INPUTS 2
#define CARDINAL_NUM_AUDIO_OUTPUTS 2
#define DISTRHO_PLUGIN_BRAND "DISTRHO"
#define DISTRHO_PLUGIN_URI "https://distrho.kx.studio/plugins/cardinal#mini"
#define DISTRHO_PLUGIN_NAME "Cardinal Mini"
#define DISTRHO_PLUGIN_LABEL "CardinalMini"
#define DISTRHO_PLUGIN_HAS_UI 1
#define DISTRHO_PLUGIN_WANT_DIRECT_ACCESS 0
#define DISTRHO_UI_FILE_BROWSER 1
#define DISTRHO_UI_USE_NANOVG 1
#define DISTRHO_UI_USER_RESIZABLE 1
#define DISTRHO_UI_DEFAULT_WIDTH 1000
#define DISTRHO_UI_DEFAULT_HEIGHT 600
#define DISTRHO_PLUGIN_IS_SYNTH 0
#define DISTRHO_PLUGIN_NUM_INPUTS CARDINAL_NUM_AUDIO_INPUTS + 5
#define DISTRHO_PLUGIN_NUM_OUTPUTS CARDINAL_NUM_AUDIO_OUTPUTS + 5
#define DISTRHO_PLUGIN_WANT_MIDI_INPUT 1
#define DISTRHO_PLUGIN_WANT_MIDI_OUTPUT 1
#define DISTRHO_PLUGIN_WANT_FULL_STATE 1
#define DISTRHO_PLUGIN_WANT_STATE 1
#define DISTRHO_PLUGIN_WANT_TIMEPOS 1
#define DISTRHO_PLUGIN_LV2_CATEGORY "mod:ControlVoltagePlugin, lv2:UtilityPlugin"
#define DISTRHO_PLUGIN_USES_MODGUI 1
#define DISTRHO_PLUGIN_USES_CUSTOM_MODGUI 1
#endif // DISTRHO_PLUGIN_INFO_H_INCLUDED

View file

@ -0,0 +1,11 @@
#!/usr/bin/make -f
# Makefile for DISTRHO Plugins #
# ---------------------------- #
# Created by falkTX
#
NAME = CardinalMini
DPF_BUILD_DIR = ../../build/$(NAME)-sep
DSP_UI_SPLIT = true
MODGUI_CLASS_NAME = distrho_cardinal_mini
include ../Makefile.cardinal.mk

View file

@ -0,0 +1 @@
../override/MenuBar.cpp

View file

@ -0,0 +1 @@
../custom/RemoteNanoVG.cpp

View file

@ -0,0 +1 @@
../custom/RemoteWindow.cpp

View file

@ -0,0 +1 @@
../override/Window.cpp

View file

@ -0,0 +1 @@
../override/common.cpp

View file

@ -0,0 +1 @@
../custom/glfw.cpp

View file

@ -61,7 +61,7 @@
extern const std::string CARDINAL_VERSION;
namespace rack {
#if CARDINAL_VARIANT_MINI || defined(HEADLESS)
#if (CARDINAL_VARIANT_MINI && ! DISTRHO_PLUGIN_WANT_DIRECT_ACCESS) || defined(HEADLESS)
namespace app {
rack::widget::Widget* createMenuBar() { return new rack::widget::Widget; }
}
@ -179,7 +179,7 @@ class CardinalPlugin : public CardinalBasePlugin
// real values, not VCV interpreted ones
float fWindowParameters[kWindowParameterCount];
#endif
#if CARDINAL_VARIANT_MINI
#if CARDINAL_VARIANT_MINI && ! DISTRHO_PLUGIN_WANT_DIRECT_ACCESS
float fMiniReportValues[kCardinalParameterCountAtMini - kCardinalParameterStartMini];
#endif
@ -213,7 +213,7 @@ public:
fWindowParameters[kWindowParameterInvertZoom] = 0.0f;
fWindowParameters[kWindowParameterSqueezeModulePositions] = 1.0f;
#endif
#if CARDINAL_VARIANT_MINI
#if CARDINAL_VARIANT_MINI && ! DISTRHO_PLUGIN_WANT_DIRECT_ACCESS
std::memset(fMiniReportValues, 0, sizeof(fMiniReportValues));
fMiniReportValues[kCardinalParameterMiniTimeBar - kCardinalParameterStartMini] = 1;
fMiniReportValues[kCardinalParameterMiniTimeBeat - kCardinalParameterStartMini] = 1;
@ -460,7 +460,7 @@ protected:
parameter.name = "Show tooltips";
parameter.symbol = "tooltips";
parameter.hints = kParameterIsAutomatable|kParameterIsInteger|kParameterIsBoolean;
#if CARDINAL_VARIANT_MINI
#if CARDINAL_VARIANT_MINI && ! DISTRHO_PLUGIN_WANT_DIRECT_ACCESS
parameter.hints |= kParameterIsHidden;
#endif
parameter.ranges.def = 1.0f;
@ -472,7 +472,7 @@ protected:
parameter.symbol = "cableOpacity";
parameter.unit = "%";
parameter.hints = kParameterIsAutomatable;
#if CARDINAL_VARIANT_MINI
#if CARDINAL_VARIANT_MINI && ! DISTRHO_PLUGIN_WANT_DIRECT_ACCESS
parameter.hints |= kParameterIsHidden;
#endif
parameter.ranges.def = 50.0f;
@ -484,7 +484,7 @@ protected:
parameter.symbol = "cableTension";
parameter.unit = "%";
parameter.hints = kParameterIsAutomatable;
#if CARDINAL_VARIANT_MINI
#if CARDINAL_VARIANT_MINI && ! DISTRHO_PLUGIN_WANT_DIRECT_ACCESS
parameter.hints |= kParameterIsHidden;
#endif
parameter.ranges.def = 75.0f;
@ -496,7 +496,7 @@ protected:
parameter.symbol = "rackBrightness";
parameter.unit = "%";
parameter.hints = kParameterIsAutomatable;
#if CARDINAL_VARIANT_MINI
#if CARDINAL_VARIANT_MINI && ! DISTRHO_PLUGIN_WANT_DIRECT_ACCESS
parameter.hints |= kParameterIsHidden;
#endif
parameter.ranges.def = 100.0f;
@ -508,7 +508,7 @@ protected:
parameter.symbol = "haloBrightness";
parameter.unit = "%";
parameter.hints = kParameterIsAutomatable;
#if CARDINAL_VARIANT_MINI
#if CARDINAL_VARIANT_MINI && ! DISTRHO_PLUGIN_WANT_DIRECT_ACCESS
parameter.hints |= kParameterIsHidden;
#endif
parameter.ranges.def = 25.0f;
@ -519,7 +519,7 @@ protected:
parameter.name = "Knob mode";
parameter.symbol = "knobMode";
parameter.hints = kParameterIsAutomatable|kParameterIsInteger;
#if CARDINAL_VARIANT_MINI
#if CARDINAL_VARIANT_MINI && ! DISTRHO_PLUGIN_WANT_DIRECT_ACCESS
parameter.hints |= kParameterIsHidden;
#endif
parameter.ranges.def = 0.0f;
@ -539,7 +539,7 @@ protected:
parameter.name = "Scroll wheel knob control";
parameter.symbol = "knobScroll";
parameter.hints = kParameterIsAutomatable|kParameterIsInteger|kParameterIsBoolean;
#if CARDINAL_VARIANT_MINI
#if CARDINAL_VARIANT_MINI && ! DISTRHO_PLUGIN_WANT_DIRECT_ACCESS
parameter.hints |= kParameterIsHidden;
#endif
parameter.ranges.def = 0.0f;
@ -550,7 +550,7 @@ protected:
parameter.name = "Scroll wheel knob sensitivity";
parameter.symbol = "knobScrollSensitivity";
parameter.hints = kParameterIsAutomatable|kParameterIsLogarithmic;
#if CARDINAL_VARIANT_MINI
#if CARDINAL_VARIANT_MINI && ! DISTRHO_PLUGIN_WANT_DIRECT_ACCESS
parameter.hints |= kParameterIsHidden;
#endif
parameter.ranges.def = 1.0f;
@ -561,7 +561,7 @@ protected:
parameter.name = "Lock module positions";
parameter.symbol = "lockModules";
parameter.hints = kParameterIsAutomatable|kParameterIsInteger|kParameterIsBoolean;
#if CARDINAL_VARIANT_MINI
#if CARDINAL_VARIANT_MINI && ! DISTRHO_PLUGIN_WANT_DIRECT_ACCESS
parameter.hints |= kParameterIsHidden;
#endif
parameter.ranges.def = 0.0f;
@ -572,7 +572,7 @@ protected:
parameter.name = "Update rate limit";
parameter.symbol = "rateLimit";
parameter.hints = kParameterIsAutomatable|kParameterIsInteger;
#if CARDINAL_VARIANT_MINI
#if CARDINAL_VARIANT_MINI && ! DISTRHO_PLUGIN_WANT_DIRECT_ACCESS
parameter.hints |= kParameterIsHidden;
#endif
parameter.ranges.def = 0.0f;
@ -592,7 +592,7 @@ protected:
parameter.name = "Browser sort";
parameter.symbol = "browserSort";
parameter.hints = kParameterIsAutomatable|kParameterIsInteger;
#if CARDINAL_VARIANT_MINI
#if CARDINAL_VARIANT_MINI && ! DISTRHO_PLUGIN_WANT_DIRECT_ACCESS
parameter.hints |= kParameterIsHidden;
#endif
parameter.ranges.def = 3.0f;
@ -618,7 +618,7 @@ protected:
parameter.name = "Browser zoom";
parameter.symbol = "browserZoom";
parameter.hints = kParameterIsAutomatable;
#if CARDINAL_VARIANT_MINI
#if CARDINAL_VARIANT_MINI && ! DISTRHO_PLUGIN_WANT_DIRECT_ACCESS
parameter.hints |= kParameterIsHidden;
#endif
parameter.unit = "%";
@ -647,7 +647,7 @@ protected:
parameter.name = "Invert zoom";
parameter.symbol = "invertZoom";
parameter.hints = kParameterIsAutomatable|kParameterIsInteger|kParameterIsBoolean;
#if CARDINAL_VARIANT_MINI
#if CARDINAL_VARIANT_MINI && ! DISTRHO_PLUGIN_WANT_DIRECT_ACCESS
parameter.hints |= kParameterIsHidden;
#endif
parameter.ranges.def = 0.0f;
@ -658,7 +658,7 @@ protected:
parameter.name = "Auto-squeeze module positions";
parameter.symbol = "squeezeModules";
parameter.hints = kParameterIsAutomatable|kParameterIsInteger|kParameterIsBoolean;
#if CARDINAL_VARIANT_MINI
#if CARDINAL_VARIANT_MINI && ! DISTRHO_PLUGIN_WANT_DIRECT_ACCESS
parameter.hints |= kParameterIsHidden;
#endif
parameter.ranges.def = 1.0f;
@ -669,7 +669,7 @@ protected:
}
#endif
#if CARDINAL_VARIANT_MINI
#if CARDINAL_VARIANT_MINI && ! DISTRHO_PLUGIN_WANT_DIRECT_ACCESS
switch (index)
{
case kCardinalParameterMiniAudioIn1:
@ -817,7 +817,7 @@ protected:
switch (index)
{
case kCardinalStatePatch:
#if CARDINAL_VARIANT_MINI
#if CARDINAL_VARIANT_MINI && ! DISTRHO_PLUGIN_WANT_DIRECT_ACCESS
state.hints = kStateIsHostReadable;
#else
state.hints = kStateIsOnlyForDSP | kStateIsBase64Blob;
@ -833,7 +833,7 @@ protected:
if (std::fread(fileContent, fileSize, 1, f) == 1)
{
fileContent[fileSize] = '\0';
#if CARDINAL_VARIANT_MINI
#if CARDINAL_VARIANT_MINI && ! DISTRHO_PLUGIN_WANT_DIRECT_ACCESS
state.defaultValue = fileContent;
#else
state.defaultValue = String::asBase64(fileContent, fileSize);
@ -859,7 +859,7 @@ protected:
break;
#if CARDINAL_VARIANT_MINI || !defined(HEADLESS)
case kCardinalStateModuleInfos:
#if CARDINAL_VARIANT_MINI
#if CARDINAL_VARIANT_MINI && ! DISTRHO_PLUGIN_WANT_DIRECT_ACCESS
state.hints = kStateIsHostReadable;
#else
state.hints = kStateIsOnlyForDSP;
@ -875,7 +875,7 @@ protected:
state.label = "Window size";
break;
#endif
#if CARDINAL_VARIANT_MINI
#if CARDINAL_VARIANT_MINI && ! DISTRHO_PLUGIN_WANT_DIRECT_ACCESS
case kCardinalStateParamChange:
state.hints = kStateIsHostReadable | kStateIsOnlyForDSP;
state.key = "param";
@ -903,7 +903,7 @@ protected:
return fWindowParameters[index - kCardinalParameterStartWindow];
#endif
#if CARDINAL_VARIANT_MINI
#if CARDINAL_VARIANT_MINI && ! DISTRHO_PLUGIN_WANT_DIRECT_ACCESS
if (index < kCardinalParameterCountAtMini)
return fMiniReportValues[index - kCardinalParameterStartMini];
#endif
@ -1006,7 +1006,7 @@ protected:
context->patch->cleanAutosave();
// context->history->setSaved();
#if CARDINAL_VARIANT_MINI
#if CARDINAL_VARIANT_MINI && ! DISTRHO_PLUGIN_WANT_DIRECT_ACCESS
FILE* const f = std::fopen(rack::system::join(context->patch->autosavePath, "patch.json").c_str(), "r");
DISTRHO_SAFE_ASSERT_RETURN(f != nullptr, String());
@ -1037,7 +1037,7 @@ protected:
void setState(const char* const key, const char* const value) override
{
#if CARDINAL_VARIANT_MINI
#if CARDINAL_VARIANT_MINI && ! DISTRHO_PLUGIN_WANT_DIRECT_ACCESS
if (std::strcmp(key, "param") == 0)
{
long long moduleId = 0;
@ -1115,7 +1115,7 @@ protected:
if (fAutosavePath.empty())
return;
#if CARDINAL_VARIANT_MINI
#if CARDINAL_VARIANT_MINI && ! DISTRHO_PLUGIN_WANT_DIRECT_ACCESS
rack::system::removeRecursively(fAutosavePath);
rack::system::createDirectories(fAutosavePath);
@ -1228,7 +1228,7 @@ protected:
context->ticksPerClock = timePos.bbt.ticksPerBeat / timePos.bbt.beatType;
context->ticksPerFrame = 1.0 / samplesPerTick;
context->tickClock = std::fmod(timePos.bbt.tick, context->ticksPerClock);
#if CARDINAL_VARIANT_MINI
#if CARDINAL_VARIANT_MINI && ! DISTRHO_PLUGIN_WANT_DIRECT_ACCESS
fMiniReportValues[kCardinalParameterMiniTimeBar - kCardinalParameterStartMini] = timePos.bbt.bar;
fMiniReportValues[kCardinalParameterMiniTimeBeat - kCardinalParameterStartMini] = timePos.bbt.beat;
fMiniReportValues[kCardinalParameterMiniTimeBeatsPerBar - kCardinalParameterStartMini] = timePos.bbt.beatsPerBar;
@ -1243,7 +1243,7 @@ protected:
context->reset = reset;
fNextExpectedFrame = timePos.playing ? timePos.frame + frames : 0;
#if CARDINAL_VARIANT_MINI
#if CARDINAL_VARIANT_MINI && ! DISTRHO_PLUGIN_WANT_DIRECT_ACCESS
const int flags = (timePos.playing ? 0x1 : 0x0)
| (timePos.bbt.valid ? 0x2 : 0x0)
| (reset ? 0x4 : 0x0);
@ -1286,7 +1286,7 @@ protected:
std::memset(outputs[i], 0, sizeof(float)*frames);
}
#if CARDINAL_VARIANT_MINI
#if CARDINAL_VARIANT_MINI && ! DISTRHO_PLUGIN_WANT_DIRECT_ACCESS
for (int i=0; i<DISTRHO_PLUGIN_NUM_INPUTS; ++i)
fMiniReportValues[i] = context->dataIns[i][0];
#endif

View file

@ -28,11 +28,11 @@
#include "extra/Base64.hpp"
#include "extra/ScopedSafeLocale.hpp"
#if defined(STATIC_BUILD) || CARDINAL_VARIANT_MINI
#if defined(STATIC_BUILD) || ! DISTRHO_PLUGIN_WANT_DIRECT_ACCESS
# undef HAVE_LIBLO
#endif
#if (CARDINAL_VARIANT_MINI || defined(HAVE_LIBLO)) && !defined(HEADLESS)
#if (defined(HAVE_LIBLO) || ! DISTRHO_PLUGIN_WANT_DIRECT_ACCESS) && !defined(HEADLESS)
# define CARDINAL_REMOTE_ENABLED
#endif
@ -88,7 +88,7 @@ bool connectToRemote()
RemoteDetails* remoteDetails = ui->remoteDetails;
#if CARDINAL_VARIANT_MINI
#if ! DISTRHO_PLUGIN_WANT_DIRECT_ACCESS
if (remoteDetails == nullptr)
{
ui->remoteDetails = remoteDetails = new RemoteDetails;
@ -148,7 +148,7 @@ void idleRemote(RemoteDetails* const remote)
void sendParamChangeToRemote(RemoteDetails* const remote, int64_t moduleId, int paramId, float value)
{
#ifdef CARDINAL_REMOTE_ENABLED
#if CARDINAL_VARIANT_MINI
#if ! DISTRHO_PLUGIN_WANT_DIRECT_ACCESS
char paramBuf[512] = {};
{
const ScopedSafeLocale cssl;
@ -179,7 +179,7 @@ void sendFullPatchToRemote(RemoteDetails* const remote)
std::vector<uint8_t> data;
using namespace rack::system;
#if CARDINAL_VARIANT_MINI
#if ! DISTRHO_PLUGIN_WANT_DIRECT_ACCESS
FILE* const f = std::fopen(join(context->patch->autosavePath, "patch.json").c_str(), "r");
DISTRHO_SAFE_ASSERT_RETURN(f != nullptr,);
@ -221,7 +221,7 @@ void sendFullPatchToRemote(RemoteDetails* const remote)
void sendScreenshotToRemote(RemoteDetails*, const char* const screenshot)
{
#if defined(HAVE_LIBLO) && ! CARDINAL_VARIANT_MINI
#if defined(HAVE_LIBLO) && DISTRHO_PLUGIN_WANT_DIRECT_ACCESS
const lo_address addr = lo_address_new_with_proto(LO_UDP, REMOTE_HOST, CARDINAL_DEFAULT_REMOTE_HOST_PORT);
DISTRHO_SAFE_ASSERT_RETURN(addr != nullptr,);

View file

@ -346,7 +346,7 @@ public:
{
rack::contextSet(context);
#if CARDINAL_VARIANT_MINI
#if CARDINAL_VARIANT_MINI && ! DISTRHO_PLUGIN_WANT_DIRECT_ACCESS
// create unique temporary path for this instance
try {
char uidBuf[24];
@ -490,7 +490,7 @@ public:
context->tlw = nullptr;
context->ui = nullptr;
#if CARDINAL_VARIANT_MINI
#if CARDINAL_VARIANT_MINI && ! DISTRHO_PLUGIN_WANT_DIRECT_ACCESS
{
const ScopedContext sc(this);
context->patch->clear();
@ -620,7 +620,7 @@ public:
filebrowserhandle = nullptr;
}
#if CARDINAL_VARIANT_MINI
#if CARDINAL_VARIANT_MINI && ! DISTRHO_PLUGIN_WANT_DIRECT_ACCESS
{
const ScopedContext sc(this);
for (uint32_t i=0; i<DISTRHO_PLUGIN_NUM_OUTPUTS;++i)
@ -726,7 +726,7 @@ protected:
// host mapped parameters
if (index < kCardinalParameterCountAtModules)
{
#if CARDINAL_VARIANT_MINI
#if CARDINAL_VARIANT_MINI && ! DISTRHO_PLUGIN_WANT_DIRECT_ACCESS
context->parameters[index] = value;
#endif
return;
@ -735,7 +735,7 @@ protected:
// bypass
if (index == kCardinalParameterBypass)
{
#if CARDINAL_VARIANT_MINI
#if CARDINAL_VARIANT_MINI && ! DISTRHO_PLUGIN_WANT_DIRECT_ACCESS
context->bypassed = value > 0.5f;
#endif
return;
@ -829,7 +829,7 @@ protected:
return;
}
#if CARDINAL_VARIANT_MINI
#if CARDINAL_VARIANT_MINI && ! DISTRHO_PLUGIN_WANT_DIRECT_ACCESS
if (index < kCardinalParameterCountAtMiniBuffers)
{
float* const buffer = *const_cast<float**>(&context->dataIns[index - kCardinalParameterStartMiniBuffers]);
@ -886,7 +886,7 @@ protected:
void stateChanged(const char* const key, const char* const value) override
{
#if CARDINAL_VARIANT_MINI
#if CARDINAL_VARIANT_MINI && ! DISTRHO_PLUGIN_WANT_DIRECT_ACCESS
if (std::strcmp(key, "patch") == 0)
{
if (fAutosavePath.empty())

View file

@ -244,12 +244,14 @@ all: $(TARGETS)
ifeq ($(MOD_BUILD),true)
$(MAKE) -C Cardinal lv2
$(MAKE) -C CardinalFX lv2
$(MAKE) -C CardinalMini lv2_sep
$(MAKE) -C CardinalMiniSep lv2_sep
else ifeq ($(WASM),true)
$(MAKE) -C CardinalNative
$(MAKE) -C CardinalMini
else
$(MAKE) -C Cardinal
$(MAKE) -C CardinalMini
$(MAKE) -C CardinalMiniSep
$(MAKE) -C CardinalNative
$(MAKE) -C CardinalFX $(CARDINAL_FX_ARGS)
$(MAKE) -C CardinalSynth $(CARDINAL_SYNTH_ARGS)
@ -265,7 +267,7 @@ lv2: $(TARGETS)
$(MAKE) lv2 -C Cardinal
$(MAKE) lv2 -C CardinalFX $(CARDINAL_FX_ARGS)
$(MAKE) lv2 -C CardinalSynth $(CARDINAL_SYNTH_ARGS)
$(MAKE) lv2_sep -C CardinalMini
$(MAKE) lv2_sep -C CardinalMiniSep
vst2: $(TARGETS)
$(MAKE) vst2 -C CardinalFX $(CARDINAL_FX_ARGS)

View file

@ -67,7 +67,7 @@ WASM_EXCEPTIONS = true
ifeq ($(CARDINAL_VARIANT),main)
# main variant should not use rtaudio/sdl2 fallback (it has CV ports)
SKIP_NATIVE_AUDIO_FALLBACK = true
else
else ifneq ($(CARDINAL_VARIANT),mini)
# other variants should only use rtaudio/sdl2 fallbacks
FORCE_NATIVE_AUDIO_FALLBACK = true
endif
@ -99,7 +99,7 @@ FILES_DSP += CardinalCommon.cpp
FILES_DSP += CardinalRemote.cpp
FILES_DSP += common.cpp
ifeq ($(CARDINAL_VARIANT),mini)
ifeq ($(DSP_UI_SPLIT),true)
FILES_DSP += RemoteNanoVG.cpp
FILES_DSP += RemoteWindow.cpp
else ifeq ($(HEADLESS),true)
@ -119,18 +119,20 @@ endif
# --------------------------------------------------------------
# Rack and plugin libs
ifeq ($(HEADLESS),true)
ifeq ($(DSP_UI_SPLIT),true)
TARGET_SUFFIX = -headless
else ifeq ($(HEADLESS),true)
TARGET_SUFFIX = -headless
endif
ifeq ($(CARDINAL_VARIANT),mini)
RACK_EXTRA_LIBS = ../../plugins/plugins-mini-headless.a
RACK_EXTRA_LIBS = ../../plugins/plugins-mini$(TARGET_SUFFIX).a
else
RACK_EXTRA_LIBS = ../../plugins/plugins$(TARGET_SUFFIX).a
endif
ifeq ($(CARDINAL_VARIANT),mini)
RACK_EXTRA_LIBS += ../rack-headless.a
RACK_EXTRA_LIBS += ../rack$(TARGET_SUFFIX).a
else
RACK_EXTRA_LIBS += ../rack$(TARGET_SUFFIX).a
endif
@ -255,7 +257,7 @@ endif
# --------------------------------------------------------------
# mini variant UI
ifeq ($(CARDINAL_VARIANT),mini)
ifeq ($(DSP_UI_SPLIT),true)
ifneq ($(HEADLESS),true)
FILES_UI = CardinalUI.cpp
FILES_UI += CardinalCommon-UI.cpp
@ -324,13 +326,10 @@ endif
ifeq ($(MOD_BUILD),true)
BASE_FLAGS += -DDISTRHO_PLUGIN_MINIMUM_BUFFER_SIZE=0xffff
BASE_FLAGS += -DDISTRHO_PLUGIN_USES_MODGUI=1
ifeq ($(CARDINAL_VARIANT),mini)
BASE_FLAGS += -DDISTRHO_PLUGIN_USES_CUSTOM_MODGUI=0
else
BASE_FLAGS += -DDISTRHO_PLUGIN_USES_CUSTOM_MODGUI=1
endif
BASE_FLAGS += -DSIMDE_ENABLE_OPENMP -fopenmp
LINK_FLAGS += -fopenmp
else ifeq ($(CARDINAL_VARIANT),mini)
BUILD_CXX_FLAGS += -DDISTRHO_PLUGIN_MINIMUM_BUFFER_SIZE=0xffff
endif
ifneq ($(WASM),true)
@ -362,10 +361,6 @@ BUILD_CXX_FLAGS += -std=gnu++17
endif
endif
ifeq ($(CARDINAL_VARIANT),mini)
BUILD_CXX_FLAGS += -DDISTRHO_PLUGIN_MINIMUM_BUFFER_SIZE=0xffff
endif
# Rack code is not tested for this flag, unset it
BUILD_CXX_FLAGS += -U_GLIBCXX_ASSERTIONS -Wp,-U_GLIBCXX_ASSERTIONS
@ -504,8 +499,10 @@ BUILD_CXX_FLAGS += -DCARDINAL_PLUGIN_PREFIX='"$(PREFIX)"'
ifeq ($(CARDINAL_VARIANT),main)
TARGETS = jack lv2 vst3 clap
else ifeq ($(CARDINAL_VARIANT),mini)
else ifeq ($(DSP_UI_SPLIT),true)
TARGETS = lv2_sep
else ifeq ($(CARDINAL_VARIANT),mini)
TARGETS = jack
else ifeq ($(CARDINAL_VARIANT),native)
TARGETS = jack
else

View file

@ -205,7 +205,9 @@ struct CardinalPluginContext : rack::Context {
// -----------------------------------------------------------------------------------------------------------
#if DISTRHO_PLUGIN_WANT_DIRECT_ACCESS
CardinalPluginContext* getRackContextFromPlugin(void* ptr);
#endif
class CardinalBasePlugin : public Plugin {
public:

View file

@ -135,7 +135,7 @@ struct FileButton : MenuButton {
patchUtils::loadTemplateDialog();
}));
#if ! CARDINAL_VARIANT_MINI
#if DISTRHO_PLUGIN_WANT_DIRECT_ACCESS
#ifndef DISTRHO_OS_WASM
menu->addChild(createMenuItem("Open / Import...", RACK_MOD_CTRL_NAME "+O", []() {
patchUtils::loadDialog();
@ -172,7 +172,7 @@ struct FileButton : MenuButton {
patchUtils::revertDialog();
}, APP->patch->path.empty()));
#if defined(HAVE_LIBLO) || CARDINAL_VARIANT_MINI
#if defined(HAVE_LIBLO) || ! DISTRHO_PLUGIN_WANT_DIRECT_ACCESS
#ifdef __MOD_DEVICES__
#define REMOTE_NAME "MOD"
#else
@ -201,7 +201,7 @@ struct FileButton : MenuButton {
}
#endif
#if ! CARDINAL_VARIANT_MINI
#if DISTRHO_PLUGIN_WANT_DIRECT_ACCESS
#ifndef DISTRHO_OS_WASM
menu->addChild(new ui::MenuSeparator);
@ -768,7 +768,7 @@ struct MeterLabel : ui::Label {
// uiLastTime = time;
// }
#if CARDINAL_VARIANT_MINI
#if DISTRHO_PLUGIN_WANT_DIRECT_ACCESS
text = string::f("%.1f fps", 1.0 / frameDurationAvg);
#else
double meterAverage = APP->engine->getMeterAverage();
@ -807,7 +807,7 @@ struct MenuBar : widget::OpaqueWidget {
viewButton->text = "View";
layout->addChild(viewButton);
#if ! CARDINAL_VARIANT_MINI
#if DISTRHO_PLUGIN_WANT_DIRECT_ACCESS
EngineButton* engineButton = new EngineButton;
engineButton->text = "Engine";
layout->addChild(engineButton);

View file

@ -330,8 +330,10 @@ void Scene::onHoverKey(const HoverKeyEvent& e) {
}
if (e.key == GLFW_KEY_F7 && (e.mods & RACK_MOD_MASK) == 0) {
if (remoteUtils::RemoteDetails* const remoteDetails = remoteUtils::getRemote())
{
remoteUtils::sendFullPatchToRemote(remoteDetails);
window::generateScreenshot();
}
e.consume(this);
}
if (e.key == GLFW_KEY_F9 && (e.mods & RACK_MOD_MASK) == 0) {