Signed-off-by: falkTX <falktx@falktx.com>tags/23.02
@@ -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: | |||
@@ -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" |
@@ -0,0 +1 @@ | |||
../CardinalCommon.cpp |
@@ -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 |
@@ -5,5 +5,4 @@ | |||
# | |||
NAME = CardinalMini | |||
MODGUI_CLASS_NAME = distrho_cardinal_mini | |||
include ../Makefile.cardinal.mk |
@@ -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" |
@@ -0,0 +1 @@ | |||
../CardinalPlugin.cpp |
@@ -0,0 +1 @@ | |||
../CardinalRemote.cpp |
@@ -0,0 +1 @@ | |||
../CardinalUI.cpp |
@@ -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 |
@@ -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 |
@@ -0,0 +1 @@ | |||
../override/MenuBar.cpp |
@@ -0,0 +1 @@ | |||
../custom/RemoteNanoVG.cpp |
@@ -0,0 +1 @@ | |||
../custom/RemoteWindow.cpp |
@@ -0,0 +1 @@ | |||
../override/Window.cpp |
@@ -0,0 +1 @@ | |||
../override/common.cpp |
@@ -0,0 +1 @@ | |||
../custom/glfw.cpp |
@@ -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,10 +1286,10 @@ 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 | |||
#endif | |||
if (bypassed) | |||
{ | |||
@@ -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,); | |||
@@ -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()) | |||
@@ -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) | |||
@@ -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 | |||
@@ -205,7 +205,9 @@ struct CardinalPluginContext : rack::Context { | |||
// ----------------------------------------------------------------------------------------------------------- | |||
#if DISTRHO_PLUGIN_WANT_DIRECT_ACCESS | |||
CardinalPluginContext* getRackContextFromPlugin(void* ptr); | |||
#endif | |||
class CardinalBasePlugin : public Plugin { | |||
public: | |||
@@ -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); | |||
@@ -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(); | |||
window::generateScreenshot(); | |||
} | |||
e.consume(this); | |||
} | |||
if (e.key == GLFW_KEY_F9 && (e.mods & RACK_MOD_MASK) == 0) { | |||