Proteus

Guitar amp and pedal capture plugin using neural networks
Log | Files | Refs | Submodules | README

CabSim.h (1953B)


      1 /*
      2   ==============================================================================
      3   CabSim
      4   ==============================================================================
      5 */
      6 #include "../JuceLibraryCode/JuceHeader.h"
      7 
      8 #pragma once
      9 
     10 //==============================================================================
     11 class CabSim
     12 {
     13 public:
     14     //==============================================================================
     15     CabSim() = default;
     16 
     17     //==============================================================================
     18     void prepare (const juce::dsp::ProcessSpec& spec)
     19     {
     20         processorChain.prepare(spec);
     21     }
     22 
     23     //==============================================================================
     24     template <typename ProcessContext>
     25     void process(const ProcessContext& context) noexcept
     26     {
     27         processorChain.process(context);
     28     }
     29 
     30     //==============================================================================
     31     void reset() noexcept 
     32     {
     33         processorChain.reset();
     34     }
     35 
     36     void load(const void* sourceData, size_t sourceDataSize) noexcept
     37     {
     38         auto& convolution = processorChain.template get<convolutionIndex>();
     39         //loadImpulseResponse(const void* sourceData, size_t sourceDataSize, Stereo isStereo, Trim requiresTrimming, size_t size, Normalise requiresNormalisation = Normalise::yes)
     40         convolution.loadImpulseResponse(sourceData, sourceDataSize,
     41             juce::dsp::Convolution::Stereo::yes,
     42             juce::dsp::Convolution::Trim::no,
     43             0);
     44        //convolution.loadImpulseResponse(irFile,
     45        //   juce::dsp::Convolution::Stereo::yes,
     46        //   juce::dsp::Convolution::Trim::no,
     47        //   0); // Set to 0 to use the full size of IR with no trimming
     48     }
     49 
     50 private:
     51     enum
     52     {
     53         convolutionIndex
     54     };
     55 
     56     juce::dsp::ProcessorChain<juce::dsp::Convolution> processorChain;
     57 
     58     JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(CabSim)
     59 };