From 4ead1d80bd80689ae9abfc9428733bcd68129735 Mon Sep 17 00:00:00 2001 From: falkTX Date: Wed, 27 Jul 2022 04:29:54 +0100 Subject: [PATCH] Add a single CardinalNative standalone variant Based on FX but forces usage of native audio/midi instead of JACK Signed-off-by: falkTX --- dpf | 2 +- src/CardinalFX/DistrhoPluginInfo.h | 8 +--- src/CardinalNative/CardinalCommon.cpp | 1 + src/CardinalNative/CardinalPlugin.cpp | 1 + src/CardinalNative/CardinalUI.cpp | 1 + src/CardinalNative/DistrhoPluginInfo.h | 59 ++++++++++++++++++++++++++ src/CardinalNative/Makefile | 8 ++++ src/CardinalNative/RemoteNanoVG.cpp | 1 + src/CardinalNative/RemoteWindow.cpp | 1 + src/CardinalNative/Window.cpp | 1 + src/CardinalNative/common.cpp | 1 + src/CardinalNative/glfw.cpp | 1 + src/Makefile | 6 ++- src/Makefile.cardinal.mk | 22 ++++++---- 14 files changed, 95 insertions(+), 18 deletions(-) create mode 120000 src/CardinalNative/CardinalCommon.cpp create mode 120000 src/CardinalNative/CardinalPlugin.cpp create mode 120000 src/CardinalNative/CardinalUI.cpp create mode 100644 src/CardinalNative/DistrhoPluginInfo.h create mode 100644 src/CardinalNative/Makefile create mode 120000 src/CardinalNative/RemoteNanoVG.cpp create mode 120000 src/CardinalNative/RemoteWindow.cpp create mode 120000 src/CardinalNative/Window.cpp create mode 120000 src/CardinalNative/common.cpp create mode 120000 src/CardinalNative/glfw.cpp diff --git a/dpf b/dpf index d41b971..f412918 160000 --- a/dpf +++ b/dpf @@ -1 +1 @@ -Subproject commit d41b971d77dceadcb76a7736908d0b6a36ff1469 +Subproject commit f412918c5f4022f074663abf86877a67f9d9a421 diff --git a/src/CardinalFX/DistrhoPluginInfo.h b/src/CardinalFX/DistrhoPluginInfo.h index bab1cc0..c70b915 100644 --- a/src/CardinalFX/DistrhoPluginInfo.h +++ b/src/CardinalFX/DistrhoPluginInfo.h @@ -28,13 +28,7 @@ #define DISTRHO_PLUGIN_BRAND "DISTRHO" #define DISTRHO_PLUGIN_URI "https://distrho.kx.studio/plugins/cardinal#fx" -#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__) +#if defined(__MOD_DEVICES__) # define DISTRHO_PLUGIN_NAME "Cardinal Mini" # define DISTRHO_PLUGIN_LABEL "CardinalMini" #else diff --git a/src/CardinalNative/CardinalCommon.cpp b/src/CardinalNative/CardinalCommon.cpp new file mode 120000 index 0000000..76b4b5f --- /dev/null +++ b/src/CardinalNative/CardinalCommon.cpp @@ -0,0 +1 @@ +../CardinalCommon.cpp \ No newline at end of file diff --git a/src/CardinalNative/CardinalPlugin.cpp b/src/CardinalNative/CardinalPlugin.cpp new file mode 120000 index 0000000..c0c7e71 --- /dev/null +++ b/src/CardinalNative/CardinalPlugin.cpp @@ -0,0 +1 @@ +../CardinalPlugin.cpp \ No newline at end of file diff --git a/src/CardinalNative/CardinalUI.cpp b/src/CardinalNative/CardinalUI.cpp new file mode 120000 index 0000000..5558256 --- /dev/null +++ b/src/CardinalNative/CardinalUI.cpp @@ -0,0 +1 @@ +../CardinalUI.cpp \ No newline at end of file diff --git a/src/CardinalNative/DistrhoPluginInfo.h b/src/CardinalNative/DistrhoPluginInfo.h new file mode 100644 index 0000000..5cb1e33 --- /dev/null +++ b/src/CardinalNative/DistrhoPluginInfo.h @@ -0,0 +1,59 @@ +/* + * DISTRHO Cardinal Plugin + * Copyright (C) 2021-2022 Filipe Coelho + * + * 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_FX 1 +#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" + +#if defined(DISTRHO_OS_WASM) && defined(STATIC_BUILD) +# define DISTRHO_PLUGIN_NAME "Mini Cardinal" +# define DISTRHO_PLUGIN_LABEL "MiniCardinal" +#else +# define DISTRHO_PLUGIN_NAME "Cardinal" +# define DISTRHO_PLUGIN_LABEL "Cardinal" +#endif + +#ifdef HEADLESS +#define DISTRHO_PLUGIN_HAS_UI 0 +#else +#define DISTRHO_PLUGIN_HAS_UI 1 +#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 +#endif +#define DISTRHO_PLUGIN_IS_SYNTH 0 +#define DISTRHO_PLUGIN_NUM_INPUTS CARDINAL_NUM_AUDIO_INPUTS +#define DISTRHO_PLUGIN_NUM_OUTPUTS CARDINAL_NUM_AUDIO_OUTPUTS +#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 "lv2:UtilityPlugin" +#define DISTRHO_PLUGIN_VST3_CATEGORIES "Fx|Generator" + +#endif // DISTRHO_PLUGIN_INFO_H_INCLUDED diff --git a/src/CardinalNative/Makefile b/src/CardinalNative/Makefile new file mode 100644 index 0000000..9798d7e --- /dev/null +++ b/src/CardinalNative/Makefile @@ -0,0 +1,8 @@ +#!/usr/bin/make -f +# Makefile for DISTRHO Plugins # +# ---------------------------- # +# Created by falkTX +# + +NAME = CardinalNative +include ../Makefile.cardinal.mk diff --git a/src/CardinalNative/RemoteNanoVG.cpp b/src/CardinalNative/RemoteNanoVG.cpp new file mode 120000 index 0000000..a6394af --- /dev/null +++ b/src/CardinalNative/RemoteNanoVG.cpp @@ -0,0 +1 @@ +../custom/RemoteNanoVG.cpp \ No newline at end of file diff --git a/src/CardinalNative/RemoteWindow.cpp b/src/CardinalNative/RemoteWindow.cpp new file mode 120000 index 0000000..7e00fed --- /dev/null +++ b/src/CardinalNative/RemoteWindow.cpp @@ -0,0 +1 @@ +../custom/RemoteWindow.cpp \ No newline at end of file diff --git a/src/CardinalNative/Window.cpp b/src/CardinalNative/Window.cpp new file mode 120000 index 0000000..759f272 --- /dev/null +++ b/src/CardinalNative/Window.cpp @@ -0,0 +1 @@ +../override/Window.cpp \ No newline at end of file diff --git a/src/CardinalNative/common.cpp b/src/CardinalNative/common.cpp new file mode 120000 index 0000000..915948e --- /dev/null +++ b/src/CardinalNative/common.cpp @@ -0,0 +1 @@ +../override/common.cpp \ No newline at end of file diff --git a/src/CardinalNative/glfw.cpp b/src/CardinalNative/glfw.cpp new file mode 120000 index 0000000..8c6a6e4 --- /dev/null +++ b/src/CardinalNative/glfw.cpp @@ -0,0 +1 @@ +../custom/glfw.cpp \ No newline at end of file diff --git a/src/Makefile b/src/Makefile index f632812..a9a0b90 100644 --- a/src/Makefile +++ b/src/Makefile @@ -206,9 +206,10 @@ ifeq ($(MOD_BUILD),true) $(MAKE) -C Cardinal lv2 $(MAKE) -C CardinalFX lv2 else ifeq ($(WASM),true) - $(MAKE) -C CardinalFX jack + $(MAKE) -C CardinalNative else $(MAKE) -C Cardinal + $(MAKE) -C CardinalNative $(MAKE) -C CardinalFX $(CARDINAL_FX_ARGS) $(MAKE) -C CardinalSynth $(CARDINAL_SYNTH_ARGS) endif @@ -216,6 +217,9 @@ endif jack: $(TARGET) $(MAKE) jack -C Cardinal +native: $(TARGET) + $(MAKE) jack -C CardinalNative + lv2: $(TARGET) $(MAKE) lv2 -C Cardinal $(MAKE) lv2 -C CardinalFX $(CARDINAL_FX_ARGS) diff --git a/src/Makefile.cardinal.mk b/src/Makefile.cardinal.mk index 66a82c9..cf13cf0 100644 --- a/src/Makefile.cardinal.mk +++ b/src/Makefile.cardinal.mk @@ -10,6 +10,8 @@ ifeq ($(NAME),Cardinal) CARDINAL_VARIANT = main else ifeq ($(NAME),CardinalFX) CARDINAL_VARIANT = fx +else ifeq ($(NAME),CardinalNative) +CARDINAL_VARIANT = native else ifeq ($(NAME),CardinalSynth) CARDINAL_VARIANT = synth endif @@ -55,6 +57,15 @@ NVG_DISABLE_SKIPPING_WHITESPACE = true NVG_FONT_TEXTURE_FLAGS = NVG_IMAGE_NEAREST USE_NANOVG_FBO = true 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 +# fx and synth variants should only use rtaudio/sdl2 fallbacks +FORCE_NATIVE_AUDIO_FALLBACK = true +endif + include ../../dpf/Makefile.base.mk # -------------------------------------------------------------- @@ -300,11 +311,9 @@ BUILD_CXX_FLAGS += -DCARDINAL_PLUGIN_PREFIX='"$(PREFIX)"' # Enable all possible plugin types and setup resources ifeq ($(CARDINAL_VARIANT),main) -ifneq ($(STATIC_BUILD),true) all: jack lv2 vst3 -else -all: lv2 vst3 -endif # STATIC_BUILD +else ifeq ($(CARDINAL_VARIANT),native) +all: jack else all: lv2 vst2 vst3 static endif @@ -323,11 +332,6 @@ LV2_RESOURCES += $(TARGET_DIR)/$(NAME).lv2/modgui/documentation.pdf LV2_RESOURCES += $(TARGET_DIR)/$(NAME).lv2/modgui endif -# Cardinal main variant should not use rtaudio/sdl2 fallback (it has CV ports) -ifeq ($(CARDINAL_VARIANT),main) -jack: BUILD_CXX_FLAGS += -DDPF_JACK_STANDALONE_SKIP_RTAUDIO_FALLBACK -DDPF_JACK_STANDALONE_SKIP_SDL2_FALLBACK -endif - # Cardinal main variant is not available as VST2 due to lack of CV ports ifneq ($(CARDINAL_VARIANT),main) ifeq ($(MACOS),true)