PluginProcessor.h (3580B)
1 /* 2 ============================================================================== 3 4 This file was auto-generated! 5 6 It contains the basic framework code for a JUCE plugin processor. 7 8 ============================================================================== 9 */ 10 11 #pragma once 12 13 #include "GUI/MyLNF.h" 14 #include "GUI/OnOff/OnOffManager.h" 15 #include "GUI/Visualizers/TapeScope.h" 16 #include "MixGroups/MixGroupsController.h" 17 #include "Processors/Chew/ChewProcessor.h" 18 #include "Processors/Compression/CompressionProcessor.h" 19 #include "Processors/Degrade/DegradeProcessor.h" 20 #include "Processors/DryWetProcessor.h" 21 #include "Processors/GainProcessor.h" 22 #include "Processors/Hysteresis/HysteresisProcessor.h" 23 #include "Processors/Hysteresis/ToneControl.h" 24 #include "Processors/Input_Filters/InputFilters.h" 25 #include "Processors/Loss_Effects/LossFilter.h" 26 #include "Processors/MidSide/MidSideProcessor.h" 27 #include "Processors/Timing_Effects/WowFlutterProcessor.h" 28 29 #if HAS_CLAP_JUCE_EXTENSIONS 30 JUCE_BEGIN_IGNORE_WARNINGS_GCC_LIKE ("-Wunused-parameter") 31 #include "clap-juce-extensions/clap-juce-extensions.h" 32 JUCE_END_IGNORE_WARNINGS_GCC_LIKE 33 #endif 34 35 #if CHOWDSP_AUTO_UPDATE 36 #include "GUI/AutoUpdating.h" 37 #endif 38 39 class ChowtapeModelAudioProcessor : public chowdsp::PluginBase<ChowtapeModelAudioProcessor> 40 { 41 public: 42 ChowtapeModelAudioProcessor(); 43 44 static void addParameters (Parameters& params); 45 46 void prepareToPlay (double sampleRate, int samplesPerBlock) override; 47 void releaseResources() override; 48 49 bool isBusesLayoutSupported (const BusesLayout& layouts) const override; 50 51 void processAudioBlock (AudioBuffer<float>&) override; 52 void processBlockBypassed (AudioBuffer<float>&, MidiBuffer&) override; 53 float calcLatencySamples() const noexcept; 54 55 AudioProcessorEditor* createEditor() override; 56 57 void getStateInformation (MemoryBlock& destData) override; 58 void setStateInformation (const void* data, int sizeInBytes) override; 59 60 const AudioProcessorValueTreeState& getVTS() const { return vts; } 61 AudioProcessorValueTreeState& getVTS() { return vts; } 62 const AudioPlayHead::CurrentPositionInfo& getPositionInfo() const { return positionInfo; } 63 auto* getOpenGLHelper() { return openGLHelper.get(); } 64 auto& getOversampling() { return hysteresis.getOSManager(); } 65 66 private: 67 using DryDelayType = chowdsp::DelayLine<float, chowdsp::DelayLineInterpolationTypes::Lagrange5th>; 68 void latencyCompensation(); 69 70 chowdsp::SharedPluginSettings pluginSettings; 71 72 chowdsp::FloatParameter* inGainDBParam = nullptr; 73 chowdsp::FloatParameter* outGainDBParam = nullptr; 74 chowdsp::FloatParameter* dryWetParam = nullptr; 75 76 GainProcessor inGain; 77 InputFilters inputFilters; 78 MidSideProcessor midSideController; 79 ToneControl toneControl; 80 CompressionProcessor compressionProcessor; 81 HysteresisProcessor hysteresis; 82 DegradeProcessor degrade; 83 ChewProcessor chewer; 84 LossFilter lossFilter; 85 WowFlutterProcessor flutter; 86 DryWetProcessor dryWet; 87 DryDelayType dryDelay { 1 << 21 }; 88 GainProcessor outGain; 89 OnOffManager onOffManager; 90 91 AudioBuffer<float> dryBuffer; 92 93 foleys::MagicProcessorState magicState { *this, vts }; 94 TapeScope* scope = nullptr; 95 96 MyLNF myLNF; 97 MixGroupsController mixGroupsController; 98 AudioPlayHead::CurrentPositionInfo positionInfo; 99 100 std::unique_ptr<chowdsp::OpenGLHelper> openGLHelper = nullptr; 101 102 #if CHOWDSP_AUTO_UPDATE 103 AutoUpdater updater; 104 #endif 105 106 JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (ChowtapeModelAudioProcessor) 107 };