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