13 #include "JuceHeader.h" 42 #ifndef JucePlugin_PreferredChannelConfigurations
48 void processBlockBypassed(juce::AudioSampleBuffer& audio, juce::MidiBuffer& midi)
override;
51 juce::AudioProcessorEditor* createEditor()
override;
52 bool hasEditor()
const override;
55 const juce::String getName()
const override;
57 bool acceptsMidi()
const override;
58 bool producesMidi()
const override;
59 bool isMidiEffect()
const override;
60 double getTailLengthSeconds()
const override;
63 int getNumPrograms() override;
64 int getCurrentProgram() override;
65 void setCurrentProgram(
int index) override;
66 const juce::String getProgramName(
int index)
override;
67 void changeProgramName(
int index,
const juce::String& newName)
override;
70 void getStateInformation(juce::MemoryBlock& destData)
override;
71 void setStateInformation(
const void* data,
int sizeInBytes) override;
74 juce::AudioProcessorValueTreeState parameters;
77 static constexpr const char * PID_ACTIVE =
"is_active";
79 static constexpr const char * PID_IR_FILE_CHOICE =
"ir_file_choice";
80 static constexpr const char * PID_IR_LENGTH =
"ir_length";
82 static constexpr const char * PID_FILTER_PREFIX =
"filter";
83 static constexpr const char * PID_FILTER_FREQ_SUFFIX =
"_freq";
84 static constexpr const char * PID_FILTER_Q_SUFFIX =
"_q";
85 static constexpr const char * PID_FILTER_GAIN_SUFFIX =
"_gain";
87 static constexpr const char * PID_PREDELAY =
"predelay";
88 static constexpr const char * PID_IR_GAIN =
"ir_gain";
89 static constexpr const char * PID_WETRATIO =
"wetratio";
90 static constexpr const char * PID_AUDIO_OUT_GAIN =
"audio_out_gain";
93 std::vector<IRPipeline::Ptr> irPipelines;
94 std::vector<MainPipeline::Ptr> mainPipelines;
96 std::mutex updatingParams;
102 bool paramsInitialised =
false;
105 static constexpr int NUM_BLOCKS_PER_UPDATE_PARAMS = 5;
106 int64_t blocksProcessed = 0;
114 AudioBlock audioChannels;
float getParam(const juce::AudioProcessorValueTreeState ¶ms, const juce::String &blockId) const
Internal method used to get (and check) a parameter's value.
void updateParams(double sampleRate)
Update parameters across all channels.
void processChannel(int channelIdx)
Applies reverb effect on single channel using preconfigured pipelines.
void updateParamsForChannel(int channelIdx, double sampleRate)
Update parameters for a given channel.
void prepareToPlay(double sampleRate, int samplesPerBlock) override
Prepare the processor before playback starts.
void releaseResources() override
Release resource when playback stops.
AudioProcessor()
Constructs a reverb audio processor & initialises its inner pipelines.
void processBlock(juce::AudioSampleBuffer &audio, juce::MidiBuffer &) override
Applies reverb effect on audio buffer using parameters given through the editor.