OpenWareLaboratory
Control.h
Go to the documentation of this file.
1 #ifndef __Control_h__
2 #define __Control_h__
3 
4 #include "Patch.h"
5 #include "message.h"
6 #include "main.h"
7 
8 template<PatchParameterId PID>
9 class Control {
10 public:
11  Control<PID>(){
12  ASSERT(PID < getProgramVector()->parameters_size, "Invalid parameter ID");
13  }
14  Control<PID>(const float value){
15  ASSERT(PID < getProgramVector()->parameters_size, "Invalid parameter ID");
16  set(value);
17  }
18  void set(const float value){
19  if(getProgramVector()->hardware_version == OWL_MODULAR_HARDWARE && PID < 4)
20  doSetPatchParameter(PID, 4095 - (int16_t)(value*4096.0f));
21  else
22  doSetPatchParameter(PID, (int16_t)(value*4096));
23  }
24  float get(){
25  if(getProgramVector()->hardware_version == OWL_MODULAR_HARDWARE && PID < 4){
26  return (4095 - getProgramVector()->parameters[PID])/4096.0f;
27  }else{
28  return getProgramVector()->parameters[PID]/4096.0f;
29  }
30  }
31  Control<PID>& operator=(const float value){
32  set(value);
33  return *this;
34  }
35  operator float(){
36  return get();
37  }
38 };
39 
40 #endif /* __Control_h__ */
Definition: Control.h:9
Control< PID > & operator=(const float value)
Definition: Control.h:31
void set(const float value)
Definition: Control.h:18
float get()
Definition: Control.h:24
#define ASSERT(cond, msg)
Definition: message.h:16