From c8dea01ab935f2149b67da92543dba64867014fd Mon Sep 17 00:00:00 2001 From: falkTX Date: Wed, 8 Dec 2021 22:38:39 +0000 Subject: [PATCH] Continue battling juce and cmake, add needed stubs Signed-off-by: falkTX --- dpf | 2 +- jucewrapper/CMakeLists.txt | 16 ++- jucewrapper/CardinalWrapper.cpp | 179 ++++++++++++++++++++++++++++++-- src/Makefile.cardinal.mk | 4 +- 4 files changed, 190 insertions(+), 11 deletions(-) diff --git a/dpf b/dpf index 2208680..c6c6900 160000 --- a/dpf +++ b/dpf @@ -1 +1 @@ -Subproject commit 2208680d20cca0360d38043d65f050a51d2c5a02 +Subproject commit c6c6900b8743550da7eb4f0f61a28ee85ac80966 diff --git a/jucewrapper/CMakeLists.txt b/jucewrapper/CMakeLists.txt index 748aee8..4926dbb 100644 --- a/jucewrapper/CMakeLists.txt +++ b/jucewrapper/CMakeLists.txt @@ -13,17 +13,29 @@ juce_add_plugin(CardinalFX EDITOR_WANTS_KEYBOARD_FOCUS TRUE PLUGIN_MANUFACTURER_CODE Dstr PLUGIN_CODE dCnF - FORMATS AU + FORMATS VST3 AU PRODUCT_NAME "CardinalFX") target_sources(CardinalFX PRIVATE - Source/CardinalWrapper.cpp) + CardinalWrapper.cpp) + +target_include_directories(CardinalFX + PRIVATE + . + ../dpf/distrho) target_compile_definitions(CardinalFX PUBLIC + JUCE_USE_CURL=0 JUCE_WEB_BROWSER=0) +target_link_options(CardinalFX + PRIVATE + "-l/Shared/Personal/FOSS/GIT/DISTRHO/DISTRHO_Cardinal/bin/CardinalFX.so" + "-Wl,-rpath,." +) + target_link_libraries(CardinalFX PRIVATE juce::juce_audio_utils diff --git a/jucewrapper/CardinalWrapper.cpp b/jucewrapper/CardinalWrapper.cpp index e1e58ec..4d3a435 100644 --- a/jucewrapper/CardinalWrapper.cpp +++ b/jucewrapper/CardinalWrapper.cpp @@ -17,27 +17,194 @@ #include +#include "DistrhoPlugin.hpp" +#include "DistrhoUI.hpp" + +DISTRHO_PLUGIN_EXPORT DISTRHO_NAMESPACE::Plugin* createSharedPlugin(); +#define createPlugin ::createSharedPlugin +#include "src/DistrhoPluginInternal.hpp" + +START_NAMESPACE_DISTRHO + +// ----------------------------------------------------------------------------------------------------------- + +class ParameterForDPF : public juce::AudioProcessorParameter +{ + PluginExporter& plugin; + const uint index; + +public: + ParameterForDPF(PluginExporter& plugin_, const uint index_) + : plugin(plugin_), + index(index_) {} + +protected: + float getValue() const override + { + return plugin.getParameterRanges(index).getNormalizedValue(plugin.getParameterValue(index)); + } + + void setValue(const float newValue) override + { + plugin.setParameterValue(index, plugin.getParameterRanges(index).getUnnormalizedValue(newValue)); + } + + float getDefaultValue() const override + { + return plugin.getParameterDefault(index); + } + + juce::String getName(int) const override + { + return plugin.getParameterName(index).buffer(); + } + + juce::String getLabel() const override + { + return plugin.getParameterUnit(index).buffer(); + } + + float getValueForText(const juce::String& text) const override + { + return 0.0f; + } +}; + +// ----------------------------------------------------------------------------------------------------------- + class CardinalWrapperProcessor : public juce::AudioProcessor { + PluginExporter plugin; + + static bool writeMidiCb(void* ptr, const MidiEvent& midiEvent) + { + return false; + } + + static bool requestParameterValueChangeCb(void* ptr, uint32_t index, float value) + { + return false; + } + public: CardinalWrapperProcessor() - {} + : plugin(this, writeMidiCb, requestParameterValueChangeCb) + { + for (uint i=0; i& buffer, juce::MidiBuffer& midiMessages) override + { + midiMessages.clear(); + // AudioPlayHead* getPlayHead() + } + + double getTailLengthSeconds() const override + { + return true; + } + + bool acceptsMidi() const override + { + return true; + } + + bool producesMidi() const override + { + return true; + } + + juce::AudioProcessorEditor* createEditor() override; + + bool hasEditor() const override + { + return true; + } + + int getNumPrograms() override + { + return 0; + } + + int getCurrentProgram() override + { + return 0; + } + + void setCurrentProgram(int) override + { + } + + const juce::String getProgramName(int) override + { + return {}; + } + + void changeProgramName(int, const juce::String&) override + { + } + + void getStateInformation(juce::MemoryBlock& destData) override + { + } + + void setStateInformation(const void* data, int sizeInBytes) override + { + } }; class CardinalWrapperEditor : public juce::AudioProcessorEditor { public: - CardinalWrapperEditor(CardinalWrapperProcessor&) + CardinalWrapperEditor(CardinalWrapperProcessor& processor) + : juce::AudioProcessorEditor(processor) {} + ~CardinalWrapperEditor() override {} }; + +// ----------------------------------------------------------------------------------------------------------- + +END_NAMESPACE_DISTRHO + +// ----------------------------------------------------------------------------------------------------------- + +juce::AudioProcessor* createPluginFilter() +{ + return new DISTRHO_NAMESPACE::CardinalWrapperProcessor; +} + +// ----------------------------------------------------------------------------------------------------------- + +#define DISTRHO_IS_STANDALONE 0 +#include "src/DistrhoPlugin.cpp" +#include "src/DistrhoUtils.cpp" diff --git a/src/Makefile.cardinal.mk b/src/Makefile.cardinal.mk index 46b182f..abfa5b0 100644 --- a/src/Makefile.cardinal.mk +++ b/src/Makefile.cardinal.mk @@ -234,7 +234,7 @@ BUILD_CXX_FLAGS += -DCARDINAL_PLUGIN_PREFIX='"$(PREFIX)"' ifeq ($(NAME),CardinalFX) -all: jack vst2 lv2 resources +all: jack vst2 lv2 shared resources CORE_RESOURCES = $(filter-out icon.png,$(subst ../Rack/res/,,$(wildcard ../Rack/res/*))) template.vcv @@ -251,7 +251,7 @@ else # CardinalFX ifeq ($(NAME),Cardinal) all: jack lv2 vst3 resources else -all: jack lv2 vst2 vst3 resources +all: jack lv2 vst2 vst3 shared resources endif PLUGIN_RESOURCES += $(TARGET_DIR)/$(NAME).lv2/resources