AnalogTapeModel

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

OnOffManager.h (952B)


      1 #ifndef ONOFFMANAGER_H_INCLUDED
      2 #define ONOFFMANAGER_H_INCLUDED
      3 
      4 #include <JuceHeader.h>
      5 
      6 /** Utility class to enable/disable components triggered by audio parameter changes */
      7 class OnOffManager : private AudioProcessorValueTreeState::Listener,
      8                      private AsyncUpdater
      9 {
     10 public:
     11     OnOffManager (AudioProcessorValueTreeState& vts, const AudioProcessor* proc);
     12     ~OnOffManager() override;
     13 
     14     void setOnOffForNewEditor (AudioProcessorEditor* editor);
     15     void parameterChanged (const String& parameterID, float newValue) override;
     16 
     17 private:
     18     void handleAsyncUpdate() override;
     19     void onOffButtonToggled();
     20 
     21     AudioProcessorValueTreeState& vts;
     22     const AudioProcessor* proc;
     23 
     24     const std::unordered_map<String, StringArray> triggerMap;
     25     const StringArray* componentsToToggle = nullptr;
     26     bool turningOn = false;
     27 
     28     JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (OnOffManager)
     29 };
     30 
     31 #endif // ONOFFMANAGER_H_INCLUDED