diff --git a/plugins/AudibleInstruments b/plugins/AudibleInstruments index b948516..43569f4 160000 --- a/plugins/AudibleInstruments +++ b/plugins/AudibleInstruments @@ -1 +1 @@ -Subproject commit b948516db4bf1d0f5ba5ee4babeb4980721ec036 +Subproject commit 43569f442ff3c54448dfd3b5d1f93a61faa0bd56 diff --git a/plugins/Befaco b/plugins/Befaco index 98c7e62..9a2a2a8 160000 --- a/plugins/Befaco +++ b/plugins/Befaco @@ -1 +1 @@ -Subproject commit 98c7e62cfe878f9bc849abda61cfd70e8c1966e5 +Subproject commit 9a2a2a8f82c3ec9f6eb86c677ff8ba4e7e4aa495 diff --git a/plugins/BogaudioModules b/plugins/BogaudioModules index 1d88a3e..ed6b580 160000 --- a/plugins/BogaudioModules +++ b/plugins/BogaudioModules @@ -1 +1 @@ -Subproject commit 1d88a3e0e94542acf8ac95892ce1ff39b68424f3 +Subproject commit ed6b580f9e205f5d5d1ef6b64d5cf49bac955861 diff --git a/plugins/Fundamental b/plugins/Fundamental index 71017fc..fe2c34e 160000 --- a/plugins/Fundamental +++ b/plugins/Fundamental @@ -1 +1 @@ -Subproject commit 71017fc7704bcb24145bee6b6ab1f7fee3340b03 +Subproject commit fe2c34eddc3064f534f2a2bd8e9e329d39021769 diff --git a/plugins/GrandeModular b/plugins/GrandeModular index eab50a4..efdf86c 160000 --- a/plugins/GrandeModular +++ b/plugins/GrandeModular @@ -1 +1 @@ -Subproject commit eab50a469bd24107bcab6a825050a64e3f0f1aa4 +Subproject commit efdf86ca6f47562bde164d145884de92e5ce5fc8 diff --git a/plugins/ImpromptuModularDark/PanelTheme.cpp b/plugins/ImpromptuModularDark/PanelTheme.cpp index 7603552..6103644 100644 --- a/plugins/ImpromptuModularDark/PanelTheme.cpp +++ b/plugins/ImpromptuModularDark/PanelTheme.cpp @@ -9,6 +9,10 @@ +void writeThemeAndContrastAsDefault() {} +void readThemeAndContrastFromDefault() {} + + void loadThemeAndContrastFromDefault(int* panelTheme, float* panelContrast) { *panelTheme = 1; *panelContrast = panelContrastDefault; diff --git a/plugins/Makefile b/plugins/Makefile index 5b254db..788a661 100644 --- a/plugins/Makefile +++ b/plugins/Makefile @@ -212,7 +212,7 @@ PLUGIN_FILES += $(filter-out AS/src/AS.cpp,$(wildcard AS/src/*.cpp)) PLUGIN_FILES += AS/freeverb/revmodel.cpp # modules/types which are present in other plugins -AS_CUSTOM = ADSR LabelDisplayWidget LowFrequencyOscillator VCA allpass comb revmodel +AS_CUSTOM = ADSR LabelDisplayWidget LowFrequencyOscillator VCA YellowRedLight allpass comb revmodel # -------------------------------------------------------------- # Atelier @@ -336,7 +336,7 @@ PLUGIN_FILES += $(filter-out Befaco/src/plugin.cpp,$(wildcard Befaco/src/*.cpp)) PLUGIN_BINARIES += Befaco/src/SpringReverbIR.pcm # modules/types which are present in other plugins -BEFACO_CUSTOM = ADSR +BEFACO_CUSTOM = ADSR Mixer # -------------------------------------------------------------- # Bidoo @@ -390,6 +390,10 @@ PLUGIN_FILES += ESeries/src/E340.cpp # Fundamental PLUGIN_FILES += $(filter-out Fundamental/src/plugin.cpp,$(wildcard Fundamental/src/*.cpp)) +PLUGIN_FILES += Fundamental/src/dr_wav.c + +# modules/types which are present in other plugins +FUNDAMENTAL_CUSTOM = $(DRWAV) # -------------------------------------------------------------- # GrandeModular @@ -522,7 +526,7 @@ PLUGIN_BINARIES += ValleyAudio/src/VOX_MACH.bin PLUGIN_BINARIES += ValleyAudio/src/XFADE.bin # modules/types which are present in other plugins -VALLEYAUDIO_CUSTOM = $(DRWAV) +VALLEYAUDIO_CUSTOM = $(DRWAV) DigitalDisplay VALLEYAUDIO_CUSTOM_PER_FILE = TempoKnob # -------------------------------------------------------------- @@ -847,6 +851,13 @@ $(BUILD_DIR)/ESeries/%.cpp.o: ESeries/%.cpp $(foreach m,$(ESERIES_CUSTOM),$(call custom_module_names,$(m),ESeries)) \ -DpluginInstance=pluginInstance__ESeries +$(BUILD_DIR)/Fundamental/%.c.o: Fundamental/%.c + -@mkdir -p "$(shell dirname $(BUILD_DIR)/$<)" + @echo "Compiling $<" + $(SILENT)$(CC) $< $(BUILD_C_FLAGS) -c -o $@ \ + $(foreach m,$(FUNDAMENTAL_CUSTOM),$(call custom_module_names,$(m),Fundamental)) \ + -DpluginInstance=pluginInstance__Fundamental + $(BUILD_DIR)/Fundamental/%.cpp.o: Fundamental/%.cpp -@mkdir -p "$(shell dirname $(BUILD_DIR)/$<)" @echo "Compiling $<" diff --git a/plugins/ValleyAudio b/plugins/ValleyAudio index d51e97d..eb0f8f9 160000 --- a/plugins/ValleyAudio +++ b/plugins/ValleyAudio @@ -1 +1 @@ -Subproject commit d51e97d77b23b0321231b0bdab8c18f24ae159d7 +Subproject commit eb0f8f92082eb38600f35170867cd528d898b48e diff --git a/plugins/plugins.cpp b/plugins/plugins.cpp index 9535376..34e9443 100644 --- a/plugins/plugins.cpp +++ b/plugins/plugins.cpp @@ -33,9 +33,11 @@ // AS #define modelADSR modelASADSR #define modelVCA modelASVCA +#define YellowRedLight ASYellowRedLight #include "AS/src/AS.hpp" #undef modelADSR #undef modelVCA +#undef YellowRedLight // Atelier #include "Atelier/src/plugin.hpp" @@ -45,8 +47,10 @@ // Befaco #define modelADSR modelBefacoADSR +#define modelMixer modelBefacoMixer #include "Befaco/src/plugin.hpp" #undef modelADSR +#undef modelMixer // Bidoo #include "Bidoo/src/plugin.hpp" @@ -611,6 +615,7 @@ static void initStatic__Befaco() if (spl.ok()) { #define modelADSR modelBefacoADSR +#define modelMixer modelBefacoMixer p->addModel(modelEvenVCO); p->addModel(modelRampage); p->addModel(modelABC); @@ -629,6 +634,7 @@ static void initStatic__Befaco() p->addModel(modelMuxlicer); p->addModel(modelMex); #undef modelADSR +#undef modelMixer } } @@ -950,6 +956,7 @@ static void initStatic__Fundamental() p->addModel(modelLFO2); p->addModel(modelDelay); p->addModel(modelADSR); + p->addModel(modelMixer); p->addModel(modelVCMixer); p->addModel(model_8vert); p->addModel(modelUnity); @@ -968,6 +975,17 @@ static void initStatic__Fundamental() p->addModel(modelMidSide); p->addModel(modelNoise); p->addModel(modelRandom); + + // show all plugins, helping those familiar with v1 Rack modules + if (json_t* const modules = json_object_get(spl.rootJ, "modules")) + { + size_t i; + json_t* v; + json_array_foreach(modules, i, v) + { + json_object_set(v, "hidden", json_false()); + } + } } } diff --git a/plugins/todo.txt b/plugins/todo.txt index 2a9b67e..c8074ce 100644 --- a/plugins/todo.txt +++ b/plugins/todo.txt @@ -28,9 +28,6 @@ LindenbergResearch 43959.0 (not opensource?) Geodesics 42761.0 https://github.com/MarcBoule/Geodesics -mscHack 42316.0 -https://github.com/mschack/VCV-Rack-Plugins/ - BaconMusic 42095.0 https://github.com/baconpaul/BaconPlugs/ diff --git a/src/Makefile.cardinal.mk b/src/Makefile.cardinal.mk index 6e41e4b..851200b 100644 --- a/src/Makefile.cardinal.mk +++ b/src/Makefile.cardinal.mk @@ -40,6 +40,8 @@ CARLA_EXTRA_LIBS += $(CARLA_BUILD_DIR)/modules/$(CARLA_BUILD_TYPE)/rtmempool.a CARLA_EXTRA_LIBS += $(CARLA_BUILD_DIR)/modules/$(CARLA_BUILD_TYPE)/sfzero.a CARLA_EXTRA_LIBS += $(CARLA_BUILD_DIR)/modules/$(CARLA_BUILD_TYPE)/water.a CARLA_EXTRA_LIBS += $(CARLA_BUILD_DIR)/modules/$(CARLA_BUILD_TYPE)/zita-resampler.a + +ifeq ($(MACOS),true) ifeq ($(USING_JUCE),true) CARLA_EXTRA_LIBS += $(CARLA_BUILD_DIR)/modules/$(CARLA_BUILD_TYPE)/juce_audio_basics.a CARLA_EXTRA_LIBS += $(CARLA_BUILD_DIR)/modules/$(CARLA_BUILD_TYPE)/juce_audio_processors.a @@ -52,6 +54,8 @@ ifeq ($(USING_JUCE_GUI_EXTRA),true) CARLA_EXTRA_LIBS += $(CARLA_BUILD_DIR)/modules/$(CARLA_BUILD_TYPE)/juce_gui_extra.a endif endif +endif + # ifneq ($(MACOS),true) # CARLA_EXTRA_LIBS += -Wl,--no-whole-archive -Wl,--end-group # endif diff --git a/src/override/dep.cpp b/src/override/dep.cpp index 277c9c6..0abf939 100644 --- a/src/override/dep.cpp +++ b/src/override/dep.cpp @@ -46,7 +46,7 @@ float FollowerBase::efGainMaxDecibelsDebug = 12.0f; // Custom Cardinal filtering static const struct { const char* const filename; - const char* shapes[4]; + const char* shapes[8]; } pathsToFilterOut[] = { { "/Core/Audio2.svg", @@ -149,95 +149,114 @@ static const struct { }, { "/Fundamental/8vert.svg", - {"path69642","path69646","path69640","path69644"} + {"path17","path21","circle15","path19"} }, { "/Fundamental/ADSR.svg", - {"path33693","path33697","path33699","path33695"} + {"path12","path16","circle18","path14"} }, { "/Fundamental/Delay.svg", - {"path25369","path25373","path25375","path25371"} + {"path14","path18","circle20","path16"} }, { - "/Fundamental/LFO-1.svg", - {"path35889","path35893","path35895","path35891"} - }, - { - "/Fundamental/LFO-2.svg", - {"path36131","path36135","path36137","path36133"} + "/Fundamental/LFO.svg", + {"path14","path18","circle20","path16"} }, { "/Fundamental/Merge.svg", - {"path29991","path29995","path29989","path29993"} + {"path16","path20","circle14","path18", + "path26","path30","circle24","path28"} }, { "/Fundamental/MidSide.svg", - {"path44181","path44185","path44179","path44183"} + {"path23","path27","circle21","path25", + "path33","path37","circle31","path35"} + }, + { + "/Fundamental/Mixer.svg", + {"path14","path18","circle12","path16"} }, { "/Fundamental/Mutes.svg", - {"path21613","path21617","path21611","path21615"} + {"path17","path21","circle15","path19"} }, { "/Fundamental/Noise.svg", - {"path105594","path105598","path105592","path105596"} + {"path14","path18","circle12","path16"} }, { "/Fundamental/Octave.svg", - {"path38471","path38475","path38469","path38473"} + {"path14","path18","circle12","path16"} }, { "/Fundamental/Pulses.svg", - {"path46241","path46245","path46239","path46243"} + {"path14","path18","circle12","path16"} }, { "/Fundamental/Quantizer.svg", - {"path38549","path38553","path38547","path38551"} + {"path14","path18","circle12","path16"} }, { "/Fundamental/Random.svg", - {"path89732","path89736","path89730","path89734"} + {"path58","path62","circle64","path60"} + }, + { + "/Fundamental/Scope.svg", + {"path14","path18","circle20","path16"} }, { "/Fundamental/SEQ3.svg", - {"path35687","path35691","path35693","path35689"} + {"path16","path20","circle22","path18"} }, { - "/Fundamental/Scope.svg", - {"path33887","path33891","path33893","path33889"} + "/Fundamental/SequentialSwitch1.svg", + {"path17","path21","circle15","path19"} + }, + { + "/Fundamental/SequentialSwitch2.svg", + {"path17","path21","circle15","path19"} }, { "/Fundamental/Split.svg", - {"path29999","path30003","path29997","path30001"} + {"path18","path22","circle16","path20", + "path28","path32","circle26","path30"} }, { "/Fundamental/Sum.svg", - {"path10913","path10917","path10911","path10915"} + {"path24","path28","circle22","path26"} }, { "/Fundamental/Unity.svg", {"path21219","path21223","path21217","path21221"} }, + { + "/Fundamental/VCA-1.svg", + {"path16","path20","circle14","path18"} + }, { "/Fundamental/VCF.svg", - {"path25239","path25243","path25245","path25241"} + {"path12","path16","circle18","path14"} }, { "/Fundamental/VCMixer.svg", - {"path125839","path125843","path125845","path125841"} + {"path12","path16","circle18","path14"} }, { - "/Fundamental/VCO-1.svg", - {"path33533","path33537","path33539","path33535"} + "/Fundamental/VCO.svg", + {"path14","path18","circle20","path16"} }, { - "/Fundamental/VCO-2.svg", - {"path37557","path37561","path37563","path37559"} + "/Fundamental/Viz.svg", + {"path14","path18","circle12","path16"} }, { - "/Fundamental/Viz.svg", - {"path41769","path41773","path41767","path41771"} + "/Fundamental/WTLFO.svg", + {"path12","path16","circle18","path14"} + }, + { + "/Fundamental/WTVCO.svg", + {"path12","path16","circle18","path14"} }, }; static const struct { @@ -352,9 +371,6 @@ static const struct { { "/DrumKit/Snare.svg", {}, -1 }, { "/DrumKit/Tomi.svg", {}, -1 }, { "/ESeries/E340.svg", {}, -1 }, - { "/Fundamental/SequentialSwitch1.svg", {}, -1 }, - { "/Fundamental/SequentialSwitch2.svg", {}, -1 }, - { "/Fundamental/VCA-1.svg", {}, -1 }, { "/Fundamental/VCA.svg", {}, -1 }, { "/JW-Modules/Add5.svg", {}, -1 }, { "/JW-Modules/BlankPanel1hp.svg", {}, -1 }, @@ -380,8 +396,11 @@ static const struct { { "/JW-Modules/XYPad.svg", {}, -1 }, }; -static void removeShape(NSVGimage* const handle, const char* const id) +static inline void removeShape(NSVGimage* const handle, const char* const id) { + if (id == nullptr) + return; + for (NSVGshape *shape = handle->shapes, *old = nullptr; shape != nullptr; old = shape, shape = shape->next) { if (std::strcmp(shape->id, id) != 0) @@ -394,11 +413,13 @@ static void removeShape(NSVGimage* const handle, const char* const id) nsvg__deletePaths(shape->paths); free(shape); - break; + return; } + + printf("NOTICE: failed to find '%s' shape to remove\n", id); } -static bool invertPaint(NSVGpaint& paint, const char* const svgFileToInvert = nullptr) +static inline bool invertPaint(NSVGpaint& paint, const char* const svgFileToInvert = nullptr) { // Special case for DrumKit background grandient if (paint.type == NSVG_PAINT_LINEAR_GRADIENT && svgFileToInvert != nullptr && std::strncmp(svgFileToInvert, "/DrumKit/", 9) == 0) @@ -519,6 +540,10 @@ NSVGimage* nsvgParseFromFileCardinal(const char* const filename, const char* con removeShape(handle, pathsToFilterOut[i].shapes[1]); removeShape(handle, pathsToFilterOut[i].shapes[2]); removeShape(handle, pathsToFilterOut[i].shapes[3]); + removeShape(handle, pathsToFilterOut[i].shapes[4]); + removeShape(handle, pathsToFilterOut[i].shapes[5]); + removeShape(handle, pathsToFilterOut[i].shapes[6]); + removeShape(handle, pathsToFilterOut[i].shapes[7]); for (NSVGshape* shape = handle->shapes; shape != nullptr; shape = shape->next) {