/* * DISTRHO Cardinal Plugin * Copyright (C) 2021 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. */ #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& 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"