AnalogTapeModel

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

WowFlutterMenu.h (1278B)


      1 #pragma once
      2 
      3 #include "../PluginProcessor.h"
      4 #include "MyLNF.h"
      5 
      6 class WowFlutterMenuLNF;
      7 class WowFlutterMenu : public ComboBox
      8 {
      9 public:
     10     WowFlutterMenu (const ChowtapeModelAudioProcessor& proc, const String& type);
     11     ~WowFlutterMenu() override;
     12 
     13     void setupUI();
     14     void setupRateParam (bool isFlutter);
     15     void setRateValue (float value);
     16 
     17 private:
     18     AudioParameterFloat* rateParam = nullptr;
     19 
     20     const ChowtapeModelAudioProcessor& proc;
     21     std::unique_ptr<WowFlutterMenuLNF> lnf;
     22 
     23     JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (WowFlutterMenu)
     24 };
     25 
     26 class WowFlutterMenuItem : public foleys::GuiItem
     27 {
     28 public:
     29     WowFlutterMenuItem (foleys::MagicGUIBuilder& builder, const ValueTree& node, const String& type) : foleys::GuiItem (builder, node)
     30     {
     31         const auto* proc = dynamic_cast<ChowtapeModelAudioProcessor*> (builder.getMagicState().getProcessor());
     32         jassert (proc); // this should never be nullptr!
     33 
     34         menu = std::make_unique<WowFlutterMenu> (*proc, type);
     35         addAndMakeVisible (menu.get());
     36     }
     37 
     38     void update() override {}
     39 
     40     Component* getWrappedComponent() override { return menu.get(); }
     41 
     42 private:
     43     std::unique_ptr<WowFlutterMenu> menu;
     44 
     45     JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (WowFlutterMenuItem)
     46 };