| @@ -1081,14 +1081,14 @@ jobs: | |||||
| make NOOPT=true SKIP_STRIPPING=true -j $(nproc) | make NOOPT=true SKIP_STRIPPING=true -j $(nproc) | ||||
| - name: Run Cardinal self-tests | - name: Run Cardinal self-tests | ||||
| run: | | run: | | ||||
| #xvfb-run valgrind \ | |||||
| #--gen-suppressions=all \ | |||||
| #--exit-on-first-error=yes \ | |||||
| #--error-exitcode=255 \ | |||||
| #--leak-check=no \ | |||||
| #--track-origins=yes \ | |||||
| #--suppressions=./dpf/utils/valgrind-dpf.supp | |||||
| xvfb-run ./bin/Cardinal selftest | |||||
| # --exit-on-first-error=yes | |||||
| xvfb-run valgrind \ | |||||
| --gen-suppressions=all \ | |||||
| --error-exitcode=255 \ | |||||
| --leak-check=no \ | |||||
| --track-origins=yes \ | |||||
| --suppressions=./dpf/utils/valgrind-dpf.supp \ | |||||
| ./bin/Cardinal selftest | |||||
| - name: Validate LV2 ttl syntax | - name: Validate LV2 ttl syntax | ||||
| run: | | run: | | ||||
| lv2_validate \ | lv2_validate \ | ||||
| @@ -8,7 +8,7 @@ | |||||
| # jucewrapper/CMakeList.txt `project` | # jucewrapper/CMakeList.txt `project` | ||||
| # src/CardinalCommon.cpp `CARDINAL_VERSION` | # src/CardinalCommon.cpp `CARDINAL_VERSION` | ||||
| # src/CardinalPlugin.cpp `getVersion` | # src/CardinalPlugin.cpp `getVersion` | ||||
| VERSION = 22.08 | |||||
| VERSION = 22.09 | |||||
| # -------------------------------------------------------------- | # -------------------------------------------------------------- | ||||
| # Import base definitions | # Import base definitions | ||||
| @@ -19,16 +19,12 @@ All "Core" modules from Rack have been replaced by Cardinal equivalents, simplif | |||||
| Cardinal does not load external modules and does not connect to the official Rack library/store. | Cardinal does not load external modules and does not connect to the official Rack library/store. | ||||
| All VCV branding has been removed (to the best of our knowledge) in order to avoid any trademark issues. | All VCV branding has been removed (to the best of our knowledge) in order to avoid any trademark issues. | ||||
| **The VST3 version is in progress, already part of the build but still experimental.** | |||||
| Prefer to use other formats if you can. | |||||
| ## Current status | ## Current status | ||||
| Cardinal should be considered stable, if you spot any bugs please report them. | Cardinal should be considered stable, if you spot any bugs please report them. | ||||
| Currently the following should be noted: | Currently the following should be noted: | ||||
| - VST3 support incomplete/experimental [#41](https://github.com/DISTRHO/Cardinal/issues/41) | |||||
| - Windows 32bit builds do not work well [#80](https://github.com/DISTRHO/Cardinal/issues/80) | - Windows 32bit builds do not work well [#80](https://github.com/DISTRHO/Cardinal/issues/80) | ||||
| ### Stable release | ### Stable release | ||||
| @@ -1 +1 @@ | |||||
| Subproject commit c6f49f6da367306f0c02e49dcfd6fba2d7c93551 | |||||
| Subproject commit 963f194b0ed93829188ffda23320b1dc848f07d8 | |||||
| @@ -24,7 +24,8 @@ Bellow follows a list of features comparing the official plugin to Cardinal. | |||||
| | Plugin in AU format | No | Yes | | | | Plugin in AU format | No | Yes | | | ||||
| | Plugin in LV2 format | No | Yes | | | | Plugin in LV2 format | No | Yes | | | ||||
| | Plugin in VST2 format | Yes | Yes | | | | Plugin in VST2 format | Yes | Yes | | | ||||
| | Plugin in VST3 format | No | WIP | | | |||||
| | Plugin in VST3 format | No | Yes | | | |||||
| | Plugin in CLAP format | No | WIP | | | |||||
| | Plugin inside itself | No, will crash | Yes | Technical limitations prevent Rack Pro from loading inside itself | | | Plugin inside itself | No, will crash | Yes | Technical limitations prevent Rack Pro from loading inside itself | | ||||
| | Multi-threaded engine | Yes | No, uses host audio thread | Intentional in Cardinal, for removing jitter | | | Multi-threaded engine | Yes | No, uses host audio thread | Intentional in Cardinal, for removing jitter | | ||||
| | Supports ARM systems | No | Yes | This means Apple M1 too, yes | | | Supports ARM systems | No | Yes | This means Apple M1 too, yes | | ||||
| @@ -1 +1 @@ | |||||
| Subproject commit 6cf523adada34df242dc1bf4b33bfb025284c631 | |||||
| Subproject commit 5ddaeefc47bd215c630b372304461a62f3464924 | |||||
| @@ -1,5 +1,5 @@ | |||||
| cmake_minimum_required(VERSION 3.15) | cmake_minimum_required(VERSION 3.15) | ||||
| project(Cardinal VERSION 22.08) | |||||
| project(Cardinal VERSION 22.09) | |||||
| add_subdirectory(JUCE) | add_subdirectory(JUCE) | ||||
| @@ -1 +1 @@ | |||||
| Subproject commit 2284e4a3befb097b42ae30032147fd61226f64ff | |||||
| Subproject commit 93aa1d0bbb2550bf05998e331e603e87425aeb91 | |||||
| @@ -1 +1 @@ | |||||
| Subproject commit 9d35b745af8569d6a9d6bc5c3f2c3e64c852d8e0 | |||||
| Subproject commit adf84fc00a953f8e8a1b378531a08ee68b9a68d7 | |||||
| @@ -1 +1 @@ | |||||
| Subproject commit b88130f6b6311c8cd58669c20cc9842f2ea81575 | |||||
| Subproject commit 97f61b3616a6e0935ac84f02b1e35734413c6b34 | |||||
| @@ -1 +1 @@ | |||||
| Subproject commit 788ceb73cfabddaff7245b0df072b0e22a19b360 | |||||
| Subproject commit 66527f10d0ad18d03aca3bbabceb198396da5d81 | |||||
| @@ -1093,6 +1093,9 @@ endif | |||||
| # Rack code is not tested for this flag, unset it | # Rack code is not tested for this flag, unset it | ||||
| BUILD_CXX_FLAGS += -U_GLIBCXX_ASSERTIONS -Wp,-U_GLIBCXX_ASSERTIONS | BUILD_CXX_FLAGS += -U_GLIBCXX_ASSERTIONS -Wp,-U_GLIBCXX_ASSERTIONS | ||||
| # Ignore bad behaviour from Rack API | |||||
| BUILD_CXX_FLAGS += -Wno-format-security | |||||
| ifeq ($(WASM),true) | ifeq ($(WASM),true) | ||||
| BUILD_CXX_FLAGS += -fexceptions | BUILD_CXX_FLAGS += -fexceptions | ||||
| endif | endif | ||||
| @@ -1225,9 +1228,13 @@ VST2_RESOURCES = $(PLUGIN_LIST:%=../bin/CardinalFX.vst/Contents/Resources/Plugi | |||||
| VST2_RESOURCES += $(PLUGIN_LIST:%=../bin/CardinalSynth.vst/Contents/Resources/PluginManifests/%.json) | VST2_RESOURCES += $(PLUGIN_LIST:%=../bin/CardinalSynth.vst/Contents/Resources/PluginManifests/%.json) | ||||
| VST2_RESOURCES += $(RESOURCE_FILES:%=../bin/CardinalFX.vst/Contents/Resources/%) | VST2_RESOURCES += $(RESOURCE_FILES:%=../bin/CardinalFX.vst/Contents/Resources/%) | ||||
| VST2_RESOURCES += $(RESOURCE_FILES:%=../bin/CardinalSynth.vst/Contents/Resources/%) | VST2_RESOURCES += $(RESOURCE_FILES:%=../bin/CardinalSynth.vst/Contents/Resources/%) | ||||
| CLAP_RESOURCES = $(PLUGIN_LIST:%=../bin/CardinalFX.clap/Contents/Resources/PluginManifests/%.json) | |||||
| CLAP_RESOURCES += $(RESOURCE_FILES:%=../bin/CardinalFX.clap/Contents/Resources/%) | |||||
| else | else | ||||
| VST2_RESOURCES = $(PLUGIN_LIST:%=../bin/Cardinal.vst/resources/PluginManifests/%.json) | VST2_RESOURCES = $(PLUGIN_LIST:%=../bin/Cardinal.vst/resources/PluginManifests/%.json) | ||||
| VST2_RESOURCES += $(RESOURCE_FILES:%=../bin/Cardinal.vst/resources/%) | VST2_RESOURCES += $(RESOURCE_FILES:%=../bin/Cardinal.vst/resources/%) | ||||
| CLAP_RESOURCES = $(PLUGIN_LIST:%=../bin/Cardinal.clap/resources/PluginManifests/%.json) | |||||
| CLAP_RESOURCES += $(RESOURCE_FILES:%=../bin/Cardinal.clap/resources/%) | |||||
| endif | endif | ||||
| VST3_RESOURCES = $(PLUGIN_LIST:%=../bin/Cardinal.vst3/Contents/Resources/PluginManifests/%.json) | VST3_RESOURCES = $(PLUGIN_LIST:%=../bin/Cardinal.vst3/Contents/Resources/PluginManifests/%.json) | ||||
| @@ -1239,7 +1246,7 @@ VST3_RESOURCES += $(RESOURCE_FILES:%=../bin/CardinalSynth.vst3/Contents/Resource | |||||
| endif | endif | ||||
| resources: $(LV2_RESOURCES) $(VST2_RESOURCES) $(VST3_RESOURCES) | |||||
| resources: $(LV2_RESOURCES) $(VST2_RESOURCES) $(VST3_RESOURCES) $(CLAP_RESOURCES) | |||||
| ../bin/Cardinal.lv2/resources/%: % | ../bin/Cardinal.lv2/resources/%: % | ||||
| -@mkdir -p "$(shell dirname $@)" | -@mkdir -p "$(shell dirname $@)" | ||||
| @@ -1308,6 +1315,10 @@ ifeq ($(MACOS),true) | |||||
| -@mkdir -p "$(shell dirname $@)" | -@mkdir -p "$(shell dirname $@)" | ||||
| $(SILENT)ln -sf $(abspath $<) $@ | $(SILENT)ln -sf $(abspath $<) $@ | ||||
| ../bin/CardinalFX.clap/Contents/Resources/%: % | |||||
| -@mkdir -p "$(shell dirname $@)" | |||||
| $(SILENT)ln -sf $(abspath $<) $@ | |||||
| ../bin/CardinalSynth.vst/Contents/Resources/%: % | ../bin/CardinalSynth.vst/Contents/Resources/%: % | ||||
| -@mkdir -p "$(shell dirname $@)" | -@mkdir -p "$(shell dirname $@)" | ||||
| $(SILENT)ln -sf $(abspath $<) $@ | $(SILENT)ln -sf $(abspath $<) $@ | ||||
| @@ -1316,6 +1327,10 @@ ifeq ($(MACOS),true) | |||||
| -@mkdir -p "$(shell dirname $@)" | -@mkdir -p "$(shell dirname $@)" | ||||
| $(SILENT)ln -sf $(abspath $<) $@ | $(SILENT)ln -sf $(abspath $<) $@ | ||||
| ../bin/CardinalFX.clap/Contents/Resources/PluginManifests/%.json: %/plugin.json | |||||
| -@mkdir -p "$(shell dirname $@)" | |||||
| $(SILENT)ln -sf $(abspath $<) $@ | |||||
| ../bin/CardinalSynth.vst/Contents/Resources/PluginManifests/%.json: %/plugin.json | ../bin/CardinalSynth.vst/Contents/Resources/PluginManifests/%.json: %/plugin.json | ||||
| -@mkdir -p "$(shell dirname $@)" | -@mkdir -p "$(shell dirname $@)" | ||||
| $(SILENT)ln -sf $(abspath $<) $@ | $(SILENT)ln -sf $(abspath $<) $@ | ||||
| @@ -1324,9 +1339,17 @@ else | |||||
| -@mkdir -p "$(shell dirname $@)" | -@mkdir -p "$(shell dirname $@)" | ||||
| $(SILENT)ln -sf $(abspath $<) $@ | $(SILENT)ln -sf $(abspath $<) $@ | ||||
| ../bin/Cardinal.clap/resources/%: % | |||||
| -@mkdir -p "$(shell dirname $@)" | |||||
| $(SILENT)ln -sf $(abspath $<) $@ | |||||
| ../bin/Cardinal.vst/resources/PluginManifests/%.json: %/plugin.json | ../bin/Cardinal.vst/resources/PluginManifests/%.json: %/plugin.json | ||||
| -@mkdir -p "$(shell dirname $@)" | -@mkdir -p "$(shell dirname $@)" | ||||
| $(SILENT)ln -sf $(abspath $<) $@ | $(SILENT)ln -sf $(abspath $<) $@ | ||||
| ../bin/Cardinal.clap/resources/PluginManifests/%.json: %/plugin.json | |||||
| -@mkdir -p "$(shell dirname $@)" | |||||
| $(SILENT)ln -sf $(abspath $<) $@ | |||||
| endif | endif | ||||
| # -------------------------------------------------------------- | # -------------------------------------------------------------- | ||||
| @@ -1 +1 @@ | |||||
| Subproject commit cd71f9a4c4a23bdec5666cc78c5bc8b3f936d175 | |||||
| Subproject commit f526208d9b54f9fc8950919ed3f9d9793c6e54e2 | |||||
| @@ -1 +1 @@ | |||||
| Subproject commit 4507aa7e1b0efc68e33e0ce1530ebd8ac7b7763c | |||||
| Subproject commit 9745a4c63747a2225a31da69b085e6185b4c8407 | |||||
| @@ -1 +1 @@ | |||||
| Subproject commit f2a8c19f8aa81769e13d085d69a44de5afaacfaa | |||||
| Subproject commit eb46ce3a8b5795d61c2e3eb60f6ca58799a8cee2 | |||||
| @@ -1 +1 @@ | |||||
| Subproject commit b63a685c6c68be188f5a3d5d9f6582eb94d62e53 | |||||
| Subproject commit 407829b0341dc04aa8530bd14a739c9f222930ed | |||||
| @@ -1 +1 @@ | |||||
| Subproject commit 3f895c7663e3e54c4e30c406c56d420ea407133e | |||||
| Subproject commit 7c15142c4e7adb174f92d7ad54c819970ac4bda4 | |||||
| @@ -39,6 +39,8 @@ | |||||
| #define DISTRHO_UI_FILE_BROWSER 1 | #define DISTRHO_UI_FILE_BROWSER 1 | ||||
| #define DISTRHO_UI_USE_NANOVG 1 | #define DISTRHO_UI_USE_NANOVG 1 | ||||
| #define DISTRHO_UI_USER_RESIZABLE 1 | #define DISTRHO_UI_USER_RESIZABLE 1 | ||||
| #define DISTRHO_UI_DEFAULT_WIDTH 1228 | |||||
| #define DISTRHO_UI_DEFAULT_HEIGHT 666 | |||||
| #endif | #endif | ||||
| #define DISTRHO_PLUGIN_IS_SYNTH 0 | #define DISTRHO_PLUGIN_IS_SYNTH 0 | ||||
| #define DISTRHO_PLUGIN_NUM_INPUTS CARDINAL_NUM_AUDIO_INPUTS + 10 | #define DISTRHO_PLUGIN_NUM_INPUTS CARDINAL_NUM_AUDIO_INPUTS + 10 | ||||
| @@ -57,7 +57,7 @@ | |||||
| # include <emscripten/emscripten.h> | # include <emscripten/emscripten.h> | ||||
| #endif | #endif | ||||
| const std::string CARDINAL_VERSION = "22.08"; | |||||
| const std::string CARDINAL_VERSION = "22.09"; | |||||
| namespace rack { | namespace rack { | ||||
| @@ -45,6 +45,8 @@ | |||||
| #define DISTRHO_UI_FILE_BROWSER 1 | #define DISTRHO_UI_FILE_BROWSER 1 | ||||
| #define DISTRHO_UI_USE_NANOVG 1 | #define DISTRHO_UI_USE_NANOVG 1 | ||||
| #define DISTRHO_UI_USER_RESIZABLE 1 | #define DISTRHO_UI_USER_RESIZABLE 1 | ||||
| #define DISTRHO_UI_DEFAULT_WIDTH 1228 | |||||
| #define DISTRHO_UI_DEFAULT_HEIGHT 666 | |||||
| #endif | #endif | ||||
| #define DISTRHO_PLUGIN_IS_SYNTH 0 | #define DISTRHO_PLUGIN_IS_SYNTH 0 | ||||
| #define DISTRHO_PLUGIN_NUM_INPUTS CARDINAL_NUM_AUDIO_INPUTS | #define DISTRHO_PLUGIN_NUM_INPUTS CARDINAL_NUM_AUDIO_INPUTS | ||||
| @@ -45,6 +45,8 @@ | |||||
| #define DISTRHO_UI_FILE_BROWSER 1 | #define DISTRHO_UI_FILE_BROWSER 1 | ||||
| #define DISTRHO_UI_USE_NANOVG 1 | #define DISTRHO_UI_USE_NANOVG 1 | ||||
| #define DISTRHO_UI_USER_RESIZABLE 1 | #define DISTRHO_UI_USER_RESIZABLE 1 | ||||
| #define DISTRHO_UI_DEFAULT_WIDTH 1228 | |||||
| #define DISTRHO_UI_DEFAULT_HEIGHT 666 | |||||
| #endif | #endif | ||||
| #define DISTRHO_PLUGIN_IS_SYNTH 0 | #define DISTRHO_PLUGIN_IS_SYNTH 0 | ||||
| #define DISTRHO_PLUGIN_NUM_INPUTS CARDINAL_NUM_AUDIO_INPUTS | #define DISTRHO_PLUGIN_NUM_INPUTS CARDINAL_NUM_AUDIO_INPUTS | ||||
| @@ -712,7 +712,7 @@ protected: | |||||
| uint32_t getVersion() const override | uint32_t getVersion() const override | ||||
| { | { | ||||
| return d_version(0, 22, 8); | |||||
| return d_version(0, 22, 9); | |||||
| } | } | ||||
| int64_t getUniqueId() const override | int64_t getUniqueId() const override | ||||
| @@ -733,20 +733,49 @@ protected: | |||||
| void initAudioPort(const bool input, uint32_t index, AudioPort& port) override | void initAudioPort(const bool input, uint32_t index, AudioPort& port) override | ||||
| { | { | ||||
| #if CARDINAL_VARIANT_FX || CARDINAL_VARIANT_NATIVE || CARDINAL_VARIANT_SYNTH | |||||
| if (index < 2) | |||||
| port.groupId = kPortGroupStereo; | |||||
| #endif | |||||
| if (index >= 8) | |||||
| #if CARDINAL_VARIANT_MAIN | |||||
| if (index < 8) | |||||
| { | |||||
| port.groupId = index / 2; | |||||
| } | |||||
| else | |||||
| { | { | ||||
| port.hints = kAudioPortIsCV | kCVPortHasPositiveUnipolarRange | kCVPortHasScaledRange; | port.hints = kAudioPortIsCV | kCVPortHasPositiveUnipolarRange | kCVPortHasScaledRange; | ||||
| index -= 8; | index -= 8; | ||||
| } | } | ||||
| #elif CARDINAL_VARIANT_FX || CARDINAL_VARIANT_NATIVE || CARDINAL_VARIANT_SYNTH | |||||
| if (index < 2) | |||||
| port.groupId = kPortGroupStereo; | |||||
| #endif | |||||
| CardinalBasePlugin::initAudioPort(input, index, port); | CardinalBasePlugin::initAudioPort(input, index, port); | ||||
| } | } | ||||
| #if CARDINAL_VARIANT_MAIN | |||||
| void initPortGroup(const uint32_t index, PortGroup& portGroup) override | |||||
| { | |||||
| switch (index) | |||||
| { | |||||
| case 0: | |||||
| portGroup.name = "Audio 1+2"; | |||||
| portGroup.symbol = "audio_1_and_2"; | |||||
| break; | |||||
| case 1: | |||||
| portGroup.name = "Audio 3+4"; | |||||
| portGroup.symbol = "audio_3_and_4"; | |||||
| break; | |||||
| case 2: | |||||
| portGroup.name = "Audio 5+6"; | |||||
| portGroup.symbol = "audio_5_and_6"; | |||||
| break; | |||||
| case 3: | |||||
| portGroup.name = "Audio 7+8"; | |||||
| portGroup.symbol = "audio_7_and_8"; | |||||
| break; | |||||
| } | |||||
| } | |||||
| #endif | |||||
| void initParameter(const uint32_t index, Parameter& parameter) override | void initParameter(const uint32_t index, Parameter& parameter) override | ||||
| { | { | ||||
| if (index < kModuleParameters) | if (index < kModuleParameters) | ||||
| @@ -39,6 +39,8 @@ | |||||
| #define DISTRHO_UI_FILE_BROWSER 1 | #define DISTRHO_UI_FILE_BROWSER 1 | ||||
| #define DISTRHO_UI_USE_NANOVG 1 | #define DISTRHO_UI_USE_NANOVG 1 | ||||
| #define DISTRHO_UI_USER_RESIZABLE 1 | #define DISTRHO_UI_USER_RESIZABLE 1 | ||||
| #define DISTRHO_UI_DEFAULT_WIDTH 1228 | |||||
| #define DISTRHO_UI_DEFAULT_HEIGHT 666 | |||||
| #endif | #endif | ||||
| #define DISTRHO_PLUGIN_IS_SYNTH 1 | #define DISTRHO_PLUGIN_IS_SYNTH 1 | ||||
| #define DISTRHO_PLUGIN_NUM_INPUTS CARDINAL_NUM_AUDIO_INPUTS | #define DISTRHO_PLUGIN_NUM_INPUTS CARDINAL_NUM_AUDIO_INPUTS | ||||
| @@ -339,7 +339,7 @@ class CardinalUI : public CardinalBaseUI, | |||||
| public: | public: | ||||
| CardinalUI() | CardinalUI() | ||||
| : CardinalBaseUI(1228, 666) | |||||
| : CardinalBaseUI(DISTRHO_UI_DEFAULT_WIDTH, DISTRHO_UI_DEFAULT_HEIGHT) | |||||
| { | { | ||||
| Window& window(getWindow()); | Window& window(getWindow()); | ||||
| @@ -351,7 +351,7 @@ public: | |||||
| setGeometryConstraints(648 * scaleFactor, 538 * scaleFactor); | setGeometryConstraints(648 * scaleFactor, 538 * scaleFactor); | ||||
| if (scaleFactor != 1.0) | if (scaleFactor != 1.0) | ||||
| setSize(1228 * scaleFactor, 666 * scaleFactor); | |||||
| setSize(DISTRHO_UI_DEFAULT_WIDTH * scaleFactor, DISTRHO_UI_DEFAULT_HEIGHT * scaleFactor); | |||||
| rack::contextSet(context); | rack::contextSet(context); | ||||
| @@ -120,6 +120,9 @@ BUILD_CXX_FLAGS += -DnsvgParseFromFile=nsvgParseFromFileCardinal | |||||
| # Rack code is not tested for this flag, unset it | # Rack code is not tested for this flag, unset it | ||||
| BUILD_CXX_FLAGS += -U_GLIBCXX_ASSERTIONS -Wp,-U_GLIBCXX_ASSERTIONS | BUILD_CXX_FLAGS += -U_GLIBCXX_ASSERTIONS -Wp,-U_GLIBCXX_ASSERTIONS | ||||
| # Ignore bad behaviour from Rack API | |||||
| BUILD_CXX_FLAGS += -Wno-format-security | |||||
| # -------------------------------------------------------------- | # -------------------------------------------------------------- | ||||
| # Rack files to build | # Rack files to build | ||||
| @@ -197,8 +200,8 @@ endif | |||||
| TARGET = rack.a | TARGET = rack.a | ||||
| ifneq ($(MACOS),true) | ifneq ($(MACOS),true) | ||||
| CARDINAL_FX_ARGS = VST2_FILENAME=Cardinal.vst/CardinalFX$(LIB_EXT) | |||||
| CARDINAL_SYNTH_ARGS = VST2_FILENAME=Cardinal.vst/CardinalSynth$(LIB_EXT) | |||||
| CARDINAL_FX_ARGS = VST2_FILENAME=Cardinal.vst/CardinalFX$(LIB_EXT) CLAP_FILENAME=Cardinal.clap/CardinalFX.clap | |||||
| CARDINAL_SYNTH_ARGS = VST2_FILENAME=Cardinal.vst/CardinalSynth$(LIB_EXT) CLAP_FILENAME=Cardinal.clap/CardinalSynth.clap | |||||
| endif | endif | ||||
| all: $(TARGET) | all: $(TARGET) | ||||
| @@ -234,6 +237,9 @@ vst3: $(TARGET) | |||||
| $(MAKE) vst3 -C CardinalFX $(CARDINAL_FX_ARGS) | $(MAKE) vst3 -C CardinalFX $(CARDINAL_FX_ARGS) | ||||
| $(MAKE) vst3 -C CardinalSynth $(CARDINAL_SYNTH_ARGS) | $(MAKE) vst3 -C CardinalSynth $(CARDINAL_SYNTH_ARGS) | ||||
| clap: $(TARGET) | |||||
| $(MAKE) clap -C CardinalFX $(CARDINAL_FX_ARGS) | |||||
| clean: | clean: | ||||
| rm -f $(TARGET) | rm -f $(TARGET) | ||||
| rm -rf $(BUILD_DIR) | rm -rf $(BUILD_DIR) | ||||
| @@ -163,8 +163,10 @@ endif | |||||
| ifneq ($(CARDINAL_VARIANT),main) | ifneq ($(CARDINAL_VARIANT),main) | ||||
| ifeq ($(MACOS),true) | ifeq ($(MACOS),true) | ||||
| VST2_RESOURCES = $(CORE_RESOURCES:%=$(TARGET_DIR)/$(NAME).vst/Contents/Resources/%) | VST2_RESOURCES = $(CORE_RESOURCES:%=$(TARGET_DIR)/$(NAME).vst/Contents/Resources/%) | ||||
| CLAP_RESOURCES = $(CORE_RESOURCES:%=$(TARGET_DIR)/$(NAME).clap/Contents/Resources/%) | |||||
| else | else | ||||
| VST2_RESOURCES = $(CORE_RESOURCES:%=$(TARGET_DIR)/Cardinal.vst/resources/%) | VST2_RESOURCES = $(CORE_RESOURCES:%=$(TARGET_DIR)/Cardinal.vst/resources/%) | ||||
| CLAP_RESOURCES = $(CORE_RESOURCES:%=$(TARGET_DIR)/Cardinal.clap/resources/%) | |||||
| endif | endif | ||||
| endif | endif | ||||
| @@ -182,6 +184,7 @@ endif | |||||
| # Do some magic | # Do some magic | ||||
| USE_VST2_BUNDLE = true | USE_VST2_BUNDLE = true | ||||
| USE_CLAP_BUNDLE = true | |||||
| include ../../dpf/Makefile.plugins.mk | include ../../dpf/Makefile.plugins.mk | ||||
| # -------------------------------------------------------------- | # -------------------------------------------------------------- | ||||
| @@ -250,6 +253,9 @@ endif | |||||
| # Rack code is not tested for this flag, unset it | # Rack code is not tested for this flag, unset it | ||||
| BUILD_CXX_FLAGS += -U_GLIBCXX_ASSERTIONS -Wp,-U_GLIBCXX_ASSERTIONS | BUILD_CXX_FLAGS += -U_GLIBCXX_ASSERTIONS -Wp,-U_GLIBCXX_ASSERTIONS | ||||
| # Ignore bad behaviour from Rack API | |||||
| BUILD_CXX_FLAGS += -Wno-format-security | |||||
| # -------------------------------------------------------------- | # -------------------------------------------------------------- | ||||
| # FIXME lots of warnings from VCV side | # FIXME lots of warnings from VCV side | ||||
| @@ -355,10 +361,16 @@ else | |||||
| TARGETS = lv2 vst2 vst3 static | TARGETS = lv2 vst2 vst3 static | ||||
| endif | endif | ||||
| # TESTING | |||||
| ifeq ($(CARDINAL_VARIANT),fx) | |||||
| TARGETS += clap | |||||
| endif | |||||
| all: $(TARGETS) | all: $(TARGETS) | ||||
| lv2: $(LV2_RESOURCES) | lv2: $(LV2_RESOURCES) | ||||
| vst2: $(VST2_RESOURCES) | vst2: $(VST2_RESOURCES) | ||||
| vst3: $(VST3_RESOURCES) | vst3: $(VST3_RESOURCES) | ||||
| clap: $(CLAP_RESOURCES) | |||||
| # -------------------------------------------------------------- | # -------------------------------------------------------------- | ||||
| # Extra rules for macOS app bundle | # Extra rules for macOS app bundle | ||||
| @@ -430,6 +442,10 @@ $(TARGET_DIR)/Cardinal.vst/resources/%: ../Rack/res/% | |||||
| -@mkdir -p "$(shell dirname $@)" | -@mkdir -p "$(shell dirname $@)" | ||||
| $(SILENT)ln -sf $(abspath $<) $@ | $(SILENT)ln -sf $(abspath $<) $@ | ||||
| $(TARGET_DIR)/Cardinal.clap/resources/%: ../Rack/res/% | |||||
| -@mkdir -p "$(shell dirname $@)" | |||||
| $(SILENT)ln -sf $(abspath $<) $@ | |||||
| $(TARGET_DIR)/$(NAME).vst/Contents/Resources/%: ../Rack/res/% | $(TARGET_DIR)/$(NAME).vst/Contents/Resources/%: ../Rack/res/% | ||||
| -@mkdir -p "$(shell dirname $@)" | -@mkdir -p "$(shell dirname $@)" | ||||
| $(SILENT)ln -sf $(abspath $<) $@ | $(SILENT)ln -sf $(abspath $<) $@ | ||||
| @@ -438,4 +454,8 @@ $(TARGET_DIR)/$(NAME).vst3/Contents/Resources/%: ../Rack/res/% | |||||
| -@mkdir -p "$(shell dirname $@)" | -@mkdir -p "$(shell dirname $@)" | ||||
| $(SILENT)ln -sf $(abspath $<) $@ | $(SILENT)ln -sf $(abspath $<) $@ | ||||
| $(TARGET_DIR)/$(NAME).clap/Contents/Resources/%: ../Rack/res/% | |||||
| -@mkdir -p "$(shell dirname $@)" | |||||
| $(SILENT)ln -sf $(abspath $<) $@ | |||||
| # -------------------------------------------------------------- | # -------------------------------------------------------------- | ||||
| @@ -10,5 +10,4 @@ This package provides the AU, LV2, VST2 and VST3 audio plugins, plus standalones | |||||
| Notes: | Notes: | ||||
| - Due to AU and VST2 not supporting CV ports, the main variant is not available for these formats | - Due to AU and VST2 not supporting CV ports, the main variant is not available for these formats | ||||
| - The VST3 version is in progress, Synth and FX variants work well, main variant is known to have issues | |||||
| - The standalones are intentionally very barebones in terms of system integration, prefer to use the plugin versions if you can | - The standalones are intentionally very barebones in terms of system integration, prefer to use the plugin versions if you can | ||||