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) { | |||