SpectMorph
smmorphoperatormodule.hh
1 // Licensed GNU LGPL v3 or later: http://www.gnu.org/licenses/lgpl.html
2 
3 #ifndef SPECTMORPH_MORPH_OPERATOR_MODULE_HH
4 #define SPECTMORPH_MORPH_OPERATOR_MODULE_HH
5 
6 #include "smmorphoperator.hh"
7 #include "smlivedecodersource.hh"
8 
9 #include <string>
10 
11 namespace SpectMorph
12 {
13 
14 class MorphPlanVoice;
15 
17 {
18 public:
20  virtual ~MorphModuleSharedState();
21 };
22 
24 {
25 protected:
26  MorphPlanVoice *morph_plan_voice;
27  std::vector<MorphOperatorModule *> m_dependencies;
28  int m_update_value_tag;
29 
30  void clear_dependencies();
31  void add_dependency (MorphOperatorModule *dep_mod);
32 public:
34  virtual ~MorphOperatorModule();
35 
36  virtual float latency_ms();
37  virtual void set_latency_ms (float latency_ms);
38  virtual void set_config (MorphOperator *op) = 0;
39  virtual LiveDecoderSource *source();
40  virtual float value();
41  virtual void reset_value();
42  virtual void update_value (double time_ms);
43  virtual void update_shared_state (double time_ms);
44 
45  const std::vector<MorphOperatorModule *>& dependencies() const;
46  int& update_value_tag();
47 
48  static MorphOperatorModule *create (MorphOperator *op, MorphPlanVoice *voice);
49 };
50 
51 }
52 
53 #endif
Definition: smmorphoperatormodule.hh:23
Definition: smlivedecodersource.hh:10
Definition: smmorphplanvoice.hh:14
Definition: smmorphoperator.hh:19
Definition: smaudio.hh:15
Definition: smmorphoperatormodule.hh:16