AnalogTapeModel

Physical modelling signal processing for analog tape recording
Log | Files | Refs | Submodules | README | LICENSE

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 };