/*
  ==============================================================================

    APVTSListener.h
    Created: 24 May 2025 11:10:36am
    Author:  Luigi

  ==============================================================================
*/
#pragma once
#include <JuceHeader.h>
#include "CMLSReverb.h"
#include "CMLSDelay.h"
#include "CMLSChorus.h"
#include "CMLSEqualizer.h"
#include "CMLSDistortion.h"

class APVTSListeners : public juce::AudioProcessorValueTreeState::Listener {
    public:
        APVTSListeners();
        ~APVTSListeners() override;

        // Setters for processors
        void setEqualizerProcessor(CMLSEqualizer* equalizer);
        void setDistortionProcssor(CMLSDistortion* distortion);
        void setChorusProcessor(CMLSChorus* chorus);
        void setDelayProcessor(CMLSDelay* delay);
        void setReverbProcessor(CMLSReverb* reverb);

        //Callback method
        void parameterChanged(const juce::String& parameterID, float newValue) override;

    private:
        CMLSEqualizer* equalizerProcessor = nullptr;
        CMLSDistortion* distortionProcessor = nullptr;
        CMLSChorus* chorusProcessor = nullptr;
        CMLSDelay* delayProcessor = nullptr;
		CMLSReverb* reverbProcessor = nullptr;
};