| @@ -0,0 +1,15 @@ | |||
| *.a | |||
| *.d | |||
| *.o | |||
| *.exe | |||
| *.dll | |||
| *.dylib | |||
| *.so | |||
| *.zip | |||
| .kdev_include_paths | |||
| .kdev4/ | |||
| bin/ | |||
| build/ | |||
| @@ -0,0 +1,6 @@ | |||
| [submodule "plugins/CVCRack/Rack"] | |||
| path = plugins/CVCRack/Rack | |||
| url = https://github.com/VCVRack/Rack.git | |||
| [submodule "dpf"] | |||
| path = dpf | |||
| url = https://github.com/DISTRHO/DPF.git | |||
| @@ -0,0 +1,42 @@ | |||
| #!/usr/bin/make -f | |||
| # Makefile for DISTRHO Plugins # | |||
| # ---------------------------- # | |||
| # Created by falkTX | |||
| # | |||
| include dpf/Makefile.base.mk | |||
| all: dgl plugins gen | |||
| # -------------------------------------------------------------- | |||
| dgl: | |||
| $(MAKE) -C dpf/dgl opengl | |||
| plugins: dgl | |||
| $(MAKE) all -C plugins/CVCRack | |||
| ifneq ($(CROSS_COMPILING),true) | |||
| gen: plugins dpf/utils/lv2_ttl_generator | |||
| @$(CURDIR)/dpf/utils/generate-ttl.sh | |||
| ifeq ($(MACOS),true) | |||
| @$(CURDIR)/dpf/utils/generate-vst-bundles.sh | |||
| endif | |||
| dpf/utils/lv2_ttl_generator: | |||
| $(MAKE) -C dpf/utils/lv2-ttl-generator | |||
| else | |||
| gen: | |||
| endif | |||
| # -------------------------------------------------------------- | |||
| clean: | |||
| $(MAKE) clean -C dpf/dgl | |||
| $(MAKE) clean -C dpf/utils/lv2-ttl-generator | |||
| $(MAKE) clean -C plugins/CVCRack | |||
| rm -rf bin build | |||
| # -------------------------------------------------------------- | |||
| .PHONY: plugins | |||
| @@ -0,0 +1,5 @@ | |||
| # DISTRHO CVCRack | |||
| WORK IN PROGRESS | |||
| This is a DPF'ied build of [VCVRack](https://github.com/VCVRack/Rack), allowing it to be used as an audio plugin. | |||
| @@ -0,0 +1 @@ | |||
| Subproject commit f79095abdeb7442121f9f26adc53b87352f04e26 | |||
| @@ -0,0 +1,138 @@ | |||
| /* | |||
| * DISTRHO CVCRack Plugin | |||
| * Copyright (C) 2021 Filipe Coelho <falktx@falktx.com> | |||
| * | |||
| * Permission to use, copy, modify, and/or distribute this software for any purpose with | |||
| * or without fee is hereby granted, provided that the above copyright notice and this | |||
| * permission notice appear in all copies. | |||
| * | |||
| * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD | |||
| * TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN | |||
| * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL | |||
| * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER | |||
| * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN | |||
| * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | |||
| */ | |||
| #include "DistrhoPlugin.hpp" | |||
| START_NAMESPACE_DISTRHO | |||
| // ----------------------------------------------------------------------------------------------------------- | |||
| /** | |||
| Plugin to demonstrate parameter outputs using meters. | |||
| */ | |||
| class CVCRackPlugin : public Plugin | |||
| { | |||
| public: | |||
| CVCRackPlugin() | |||
| : Plugin(0, 0, 0) | |||
| { | |||
| } | |||
| protected: | |||
| /* -------------------------------------------------------------------------------------------------------- | |||
| * Information */ | |||
| /** | |||
| Get the plugin label. | |||
| A plugin label follows the same rules as Parameter::symbol, with the exception that it can start with numbers. | |||
| */ | |||
| const char* getLabel() const override | |||
| { | |||
| return "CVCRack"; | |||
| } | |||
| /** | |||
| Get an extensive comment/description about the plugin. | |||
| */ | |||
| const char* getDescription() const override | |||
| { | |||
| return "..."; | |||
| } | |||
| /** | |||
| Get the plugin author/maker. | |||
| */ | |||
| const char* getMaker() const override | |||
| { | |||
| return "DISTRHO"; | |||
| } | |||
| /** | |||
| Get the plugin homepage. | |||
| */ | |||
| const char* getHomePage() const override | |||
| { | |||
| return "https://github.com/DISTRHO/CVCRack"; | |||
| } | |||
| /** | |||
| Get the plugin license name (a single line of text). | |||
| For commercial plugins this should return some short copyright information. | |||
| */ | |||
| const char* getLicense() const override | |||
| { | |||
| return "ISC"; | |||
| } | |||
| /** | |||
| Get the plugin version, in hexadecimal. | |||
| */ | |||
| uint32_t getVersion() const override | |||
| { | |||
| return d_version(1, 0, 0); | |||
| } | |||
| /** | |||
| Get the plugin unique Id. | |||
| This value is used by LADSPA, DSSI and VST plugin formats. | |||
| */ | |||
| int64_t getUniqueId() const override | |||
| { | |||
| return d_cconst('d', 'C', 'V', 'C'); | |||
| } | |||
| /* -------------------------------------------------------------------------------------------------------- | |||
| * Init */ | |||
| /* -------------------------------------------------------------------------------------------------------- | |||
| * Internal data */ | |||
| /* -------------------------------------------------------------------------------------------------------- | |||
| * Process */ | |||
| /** | |||
| Run/process function for plugins without MIDI input. | |||
| */ | |||
| void run(const float** inputs, float** outputs, uint32_t frames) override | |||
| { | |||
| // copy inputs over outputs if needed | |||
| if (outputs[0] != inputs[0]) | |||
| std::memcpy(outputs[0], inputs[0], sizeof(float)*frames); | |||
| if (outputs[1] != inputs[1]) | |||
| std::memcpy(outputs[1], inputs[1], sizeof(float)*frames); | |||
| } | |||
| // ------------------------------------------------------------------------------------------------------- | |||
| private: | |||
| /** | |||
| Set our plugin class as non-copyable and add a leak detector just in case. | |||
| */ | |||
| DISTRHO_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(CVCRackPlugin) | |||
| }; | |||
| /* ------------------------------------------------------------------------------------------------------------ | |||
| * Plugin entry point, called by DPF to create a new plugin instance. */ | |||
| Plugin* createPlugin() | |||
| { | |||
| return new CVCRackPlugin(); | |||
| } | |||
| // ----------------------------------------------------------------------------------------------------------- | |||
| END_NAMESPACE_DISTRHO | |||
| @@ -0,0 +1,73 @@ | |||
| /* | |||
| * DISTRHO CVCRack Plugin | |||
| * Copyright (C) 2021 Filipe Coelho <falktx@falktx.com> | |||
| * | |||
| * Permission to use, copy, modify, and/or distribute this software for any purpose with | |||
| * or without fee is hereby granted, provided that the above copyright notice and this | |||
| * permission notice appear in all copies. | |||
| * | |||
| * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD | |||
| * TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN | |||
| * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL | |||
| * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER | |||
| * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN | |||
| * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | |||
| */ | |||
| #include "DistrhoUI.hpp" | |||
| START_NAMESPACE_DISTRHO | |||
| // ----------------------------------------------------------------------------------------------------------- | |||
| class CVCRackUI : public UI | |||
| { | |||
| public: | |||
| CVCRackUI() | |||
| : UI(128, 512) | |||
| { | |||
| setGeometryConstraints(32, 128, false); | |||
| } | |||
| protected: | |||
| /* -------------------------------------------------------------------------------------------------------- | |||
| * DSP/Plugin Callbacks */ | |||
| /** | |||
| A parameter has changed on the plugin side. | |||
| This is called by the host to inform the UI about parameter changes. | |||
| */ | |||
| void parameterChanged(uint32_t index, float value) override | |||
| { | |||
| } | |||
| /* -------------------------------------------------------------------------------------------------------- | |||
| * Widget Callbacks */ | |||
| /** | |||
| The drawing function. | |||
| */ | |||
| void onDisplay() override | |||
| { | |||
| } | |||
| // ------------------------------------------------------------------------------------------------------- | |||
| private: | |||
| /** | |||
| Set our UI class as non-copyable and add a leak detector just in case. | |||
| */ | |||
| DISTRHO_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(CVCRackUI) | |||
| }; | |||
| /* ------------------------------------------------------------------------------------------------------------ | |||
| * UI entry point, called by DPF to create a new UI instance. */ | |||
| UI* createUI() | |||
| { | |||
| return new CVCRackUI(); | |||
| } | |||
| // ----------------------------------------------------------------------------------------------------------- | |||
| END_NAMESPACE_DISTRHO | |||
| @@ -0,0 +1,37 @@ | |||
| /* | |||
| * DISTRHO CVCRack Plugin | |||
| * Copyright (C) 2021 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 2 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 license see the LICENSE file. | |||
| */ | |||
| #ifndef DISTRHO_PLUGIN_INFO_H_INCLUDED | |||
| #define DISTRHO_PLUGIN_INFO_H_INCLUDED | |||
| #define DISTRHO_PLUGIN_BRAND "DISTRHO" | |||
| #define DISTRHO_PLUGIN_NAME "CVCRack" | |||
| #define DISTRHO_PLUGIN_URI "http://distrho.sf.net/plugins/glBars" | |||
| #define DISTRHO_PLUGIN_HAS_UI 1 | |||
| #define DISTRHO_PLUGIN_NUM_INPUTS 2 | |||
| #define DISTRHO_PLUGIN_NUM_OUTPUTS 2 | |||
| #define DISTRHO_PLUGIN_WANT_DIRECT_ACCESS 1 | |||
| // #define DISTRHO_PLUGIN_LV2_CATEGORY "lv2:AnalyserPlugin" | |||
| // #define DISTRHO_PLUGIN_VST3_CATEGORIES "Fx|Analyzer" | |||
| #define DISTRHO_UI_USER_RESIZABLE 1 | |||
| enum Parameters { | |||
| kParameterCount | |||
| }; | |||
| #endif // DISTRHO_PLUGIN_INFO_H_INCLUDED | |||
| @@ -0,0 +1,105 @@ | |||
| #!/usr/bin/make -f | |||
| # Makefile for DISTRHO Plugins # | |||
| # ---------------------------- # | |||
| # Created by falkTX | |||
| # | |||
| # -------------------------------------------------------------- | |||
| # Project name, used for binaries | |||
| NAME = CVCRack | |||
| # -------------------------------------------------------------- | |||
| # Files to build (DPF stuff) | |||
| FILES_DSP = \ | |||
| CVCRackPlugin.cpp | |||
| FILES_UI = \ | |||
| CVCRackUI.cpp | |||
| # -------------------------------------------------------------- | |||
| # Files to build (VCV stuff) | |||
| FILES_DSP += Rack/dep/pffft/pffft.c | |||
| FILES_DSP += Rack/dep/pffft/fftpack.c | |||
| # FILES_DSP += Rack/build/src/common.cpp | |||
| FILES_UI += Rack/dep/oui-blendish/blendish.c | |||
| FILES_UI += Rack/dep/nanovg/src/nanovg.c | |||
| FILES_UI += Rack/dep/glfw/deps/glad.c | |||
| # FIXME | |||
| FILES_UI += Rack/dep/osdialog/osdialog.c | |||
| FILES_UI += Rack/dep/osdialog/osdialog_zenity.c | |||
| FILES_DSP += $(wildcard Rack/src/*.c) | |||
| FILES_DSP += $(wildcard Rack/src/*/*.c) | |||
| # TODO filter out src/rtaudio.cpp src/rtmidi.cpp | |||
| FILES_DSP += $(wildcard Rack/src/*.cpp) | |||
| FILES_DSP += $(wildcard Rack/src/*/*.cpp) | |||
| EXTRA_LIBS = Rack/dep/lib/libglfw3.a | |||
| EXTRA_LIBS += Rack/dep/lib/libjansson.a | |||
| EXTRA_LIBS += Rack/dep/lib/libspeexdsp.a | |||
| # ifeq ($(LINUX),true) | |||
| EXTRA_LIBS += Rack/dep/lib/libGLEW.a | |||
| # endif | |||
| # ifeq ($(MACOS),true) | |||
| # EXTRA_LIBS += Rack/dep/lib/libGLEW.a | |||
| # endif | |||
| # | |||
| # ifeq ($(WINDOWS),true) | |||
| # EXTRA_LIBS += Rack/dep/lib/libglew32.a | |||
| # endif | |||
| # -------------------------------------------------------------- | |||
| Rack/dep/lib/%.a: | |||
| $(MAKE) -C Rack/dep lib/$*.a | |||
| # -------------------------------------------------------------- | |||
| # Do some magic | |||
| include ../../dpf/Makefile.plugins.mk | |||
| # -------------------------------------------------------------- | |||
| # Extra flags for VCV stuff | |||
| BASE_FLAGS += -D_APP_VERSION=2.git.0 | |||
| BASE_FLAGS += -IRack/include | |||
| BASE_FLAGS += -IRack/dep/include | |||
| BASE_FLAGS += -IRack/dep/filesystem/include | |||
| BASE_FLAGS += -IRack/dep/fuzzysearchdatabase/src | |||
| BASE_FLAGS += -IRack/dep/glfw/deps | |||
| BASE_FLAGS += -IRack/dep/nanovg/src | |||
| BASE_FLAGS += -IRack/dep/nanosvg/src | |||
| BASE_FLAGS += -IRack/dep/osdialog | |||
| BASE_FLAGS += -IRack/dep/oui-blendish | |||
| BASE_FLAGS += -IRack/dep/pffft | |||
| ifeq ($(MACOS),true) | |||
| BASE_FLAGS += -DARCH_MAC | |||
| else ifeq ($(WINDOWS),true) | |||
| BASE_FLAGS += -DARCH_WIN | |||
| else | |||
| BASE_FLAGS += -DARCH_LIN | |||
| endif | |||
| # FIXME | |||
| BASE_FLAGS += -Wno-unused-parameter | |||
| BASE_FLAGS += -Wno-unused-variable | |||
| LINK_FLAGS += -lpthread -ldl | |||
| # -------------------------------------------------------------- | |||
| # Enable all possible plugin types | |||
| TARGETS = jack lv2 vst2 vst3 | |||
| all: $(TARGETS) | |||
| # -------------------------------------------------------------- | |||
| @@ -0,0 +1 @@ | |||
| Subproject commit 042a9ce026d253700ea14e340182900162ab4653 | |||