|
- /*
- * DISTRHO Cardinal 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 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 <juce_audio_processors/juce_audio_processors.h>
-
- #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<plugin.getParameterCount(); ++i)
- addParameter(new ParameterForDPF(plugin, i));
- }
-
- ~CardinalWrapperProcessor() override
- {
- }
-
- const juce::String getName() const override
- {
- return plugin.getName();
- }
-
- juce::StringArray getAlternateDisplayNames() const override
- {
- return juce::StringArray(plugin.getLabel());
- }
-
- void prepareToPlay(double sampleRate, int samplesPerBlock) override
- {
- plugin.deactivateIfNeeded();
- plugin.setSampleRate(sampleRate);
- plugin.setBufferSize(samplesPerBlock);
- plugin.activate();
- }
-
- void releaseResources() override
- {
- plugin.deactivateIfNeeded();
- }
-
- void processBlock(juce::AudioBuffer<float>& 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"
|