Ardour  9.0-pre0-1467-gc8540a5ad6
c1_control.h
Go to the documentation of this file.
1 #ifndef ardour_surface_console1_button_h
2 #define ardour_surface_console1_button_h
3 
4 #include "ardour/debug.h"
5 #include "console1.h"
6 
7 namespace ArdourSurface {
8 
10 
12 {
13  public:
15  {
20  METER
21  };
22 
24  : console1 (console1)
25  , _id (id)
26  {
27  }
28 
29  virtual ~Controller () {}
30 
32  ControllerID id () const { return _id; }
33 
34  virtual ControllerType get_type () { return CONTROLLER; }
35 
36  protected:
38 };
39 
41 {
42  public:
44  ControllerID id,
45  std::function<void (uint32_t)> action,
46  std::function<void (uint32_t)> shift_action = 0,
47  std::function<void (uint32_t)> plugin_action = 0,
48  std::function<void (uint32_t)> plugin_shift_action = 0 )
50  , action (action)
54  {
55  console1->buttons.insert (std::make_pair (id, this));
56  }
57 
59 
60  void set_action (std::function<void (uint32_t)> new_action) { action = new_action; }
61  void set_plugin_action (std::function<void (uint32_t)> new_action) { plugin_action = new_action; }
62  void set_plugin_shift_action (std::function<void (uint32_t)> new_action) { plugin_shift_action = new_action; }
63 
64  virtual void set_led_state (bool onoff)
65  {
66  // DEBUG_TRACE(DEBUG::Console1, "ControllerButton::set_led_state ...\n");
67  MIDI::byte buf[3];
68  buf[0] = 0xB0;
69  buf[1] = _id;
70  buf[2] = onoff ? 127 : 0;
71 
72  console1->write (buf, 3);
73  }
74 
75  virtual void set_led_value (uint32_t val)
76  {
77  // DEBUG_TRACE(DEBUG::Console1, "ControllerButton::set_led_state ...\n");
78  MIDI::byte buf[3];
79  buf[0] = 0xB0;
80  buf[1] = _id;
81  buf[2] = val;
82 
83  console1->write (buf, 3);
84  }
85  std::function<void (uint32_t)> action;
86  std::function<void (uint32_t)> shift_action;
87  std::function<void (uint32_t)> plugin_action;
88  std::function<void (uint32_t)> plugin_shift_action;
89 };
90 
92 {
93  public:
95  ControllerID id,
96  std::vector<uint32_t> state_values,
97  std::function<void (uint32_t)> action,
98  std::function<void (uint32_t)> shift_action = 0,
99  std::function<void (uint32_t)> plugin_action = 0,
100  std::function<void (uint32_t)> plugin_shift_action = 0
101  )
102  : Controller (console1, id)
103  , action (action)
108  {
109  console1->multi_buttons.insert (std::make_pair (id, this));
110  }
111 
113 
114  virtual void set_led_state (uint32_t state)
115  {
116  if (state >= state_values.size ())
117  return;
118  MIDI::byte buf[3];
119  buf[0] = 0xB0;
120  buf[1] = _id;
121  buf[2] = state_values[state];
122 
123  console1->write (buf, 3);
124  }
125 
126  void set_action (std::function<void (uint32_t)> new_action) { action = new_action; }
127  void set_plugin_action (std::function<void (uint32_t)> new_action) { plugin_action = new_action; }
128  void set_plugin_shift_action (std::function<void (uint32_t)> new_action) { plugin_shift_action = new_action; }
129 
130  uint32_t state_count () { return state_values.size (); }
131 
132  std::function<void (uint32_t)> action;
133  std::function<void (uint32_t)> shift_action;
134  std::function<void (uint32_t)> plugin_action;
135  std::function<void (uint32_t)> plugin_shift_action;
136 
137  private:
138  std::vector<uint32_t> state_values;
139 };
140 
141 class Meter : public Controller
142 {
143  public:
145  ControllerID id,
146  std::function<void ()> action,
147  std::function<void ()> shift_action = 0)
148  : Controller (console1, id)
149  , action (action)
151  {
152  console1->meters.insert (std::make_pair (id, this));
153  }
154 
156 
157  virtual void set_value (uint32_t value)
158  {
159  MIDI::byte buf[3];
160  buf[0] = 0xB0;
161  buf[1] = _id;
162  buf[2] = value;
163 
164  console1->write (buf, 3);
165  }
166  std::function<void ()> action;
167  std::function<void ()> shift_action;
168 };
169 
170 class Encoder : public Controller
171 {
172  public:
174  ControllerID id,
175  std::function<void (uint32_t)> action,
176  std::function<void (uint32_t)> shift_action = 0,
177  std::function<void (uint32_t)> plugin_action = 0,
178  std::function<void (uint32_t)> plugin_shift_action = 0)
179  : Controller (console1, id)
180  , action (action)
184  {
185  console1->encoders.insert (std::make_pair (id, this));
186  }
187 
189 
190  void set_action (std::function<void (uint32_t)> new_action) { action = new_action; }
191  void set_plugin_action (std::function<void (uint32_t)> new_action) { plugin_action = new_action; }
192  void set_plugin_shift_action (std::function<void (uint32_t)> new_action) { plugin_shift_action = new_action; }
193 
194  virtual void set_value (uint32_t value)
195  {
196  MIDI::byte buf[3];
197  buf[0] = 0xB0;
198  buf[1] = _id;
199  buf[2] = value;
200 
201  console1->write (buf, 3);
202  }
203  std::function<void (uint32_t)> action;
204  std::function<void (uint32_t val)> shift_action;
205  std::function<void (uint32_t val)> plugin_action;
206  std::function<void (uint32_t val)> plugin_shift_action;
207 
208  PBD::Signal<void(uint32_t)>* plugin_signal;
209 };
210 
211 }
212 #endif // ardour_surface_console1_button_h
MultiStateButtonMap multi_buttons
Definition: console1.h:383
ControllerButton(Console1 *console1, ControllerID id, std::function< void(uint32_t)> action, std::function< void(uint32_t)> shift_action=0, std::function< void(uint32_t)> plugin_action=0, std::function< void(uint32_t)> plugin_shift_action=0)
Definition: c1_control.h:43
virtual void set_led_state(bool onoff)
Definition: c1_control.h:64
std::function< void(uint32_t)> shift_action
Definition: c1_control.h:86
void set_plugin_action(std::function< void(uint32_t)> new_action)
Definition: c1_control.h:61
std::function< void(uint32_t)> action
Definition: c1_control.h:85
std::function< void(uint32_t)> plugin_shift_action
Definition: c1_control.h:88
void set_action(std::function< void(uint32_t)> new_action)
Definition: c1_control.h:60
std::function< void(uint32_t)> plugin_action
Definition: c1_control.h:87
void set_plugin_shift_action(std::function< void(uint32_t)> new_action)
Definition: c1_control.h:62
virtual void set_led_value(uint32_t val)
Definition: c1_control.h:75
virtual ControllerType get_type()
Definition: c1_control.h:34
ControllerID id() const
Definition: c1_control.h:32
Controller(Console1 *console1, ControllerID id)
Definition: c1_control.h:23
std::function< void(uint32_t)> action
Definition: c1_control.h:203
void set_action(std::function< void(uint32_t)> new_action)
Definition: c1_control.h:190
std::function< void(uint32_t val)> plugin_shift_action
Definition: c1_control.h:206
ControllerType get_type()
Definition: c1_control.h:188
std::function< void(uint32_t val)> plugin_action
Definition: c1_control.h:205
Encoder(Console1 *console1, ControllerID id, std::function< void(uint32_t)> action, std::function< void(uint32_t)> shift_action=0, std::function< void(uint32_t)> plugin_action=0, std::function< void(uint32_t)> plugin_shift_action=0)
Definition: c1_control.h:173
void set_plugin_action(std::function< void(uint32_t)> new_action)
Definition: c1_control.h:191
void set_plugin_shift_action(std::function< void(uint32_t)> new_action)
Definition: c1_control.h:192
virtual void set_value(uint32_t value)
Definition: c1_control.h:194
PBD::Signal< void(uint32_t)> * plugin_signal
Definition: c1_control.h:208
std::function< void(uint32_t val)> shift_action
Definition: c1_control.h:204
std::function< void()> action
Definition: c1_control.h:166
virtual void set_value(uint32_t value)
Definition: c1_control.h:157
ControllerType get_type()
Definition: c1_control.h:155
Meter(Console1 *console1, ControllerID id, std::function< void()> action, std::function< void()> shift_action=0)
Definition: c1_control.h:144
std::function< void()> shift_action
Definition: c1_control.h:167
void set_plugin_action(std::function< void(uint32_t)> new_action)
Definition: c1_control.h:127
void set_plugin_shift_action(std::function< void(uint32_t)> new_action)
Definition: c1_control.h:128
std::function< void(uint32_t)> shift_action
Definition: c1_control.h:133
MultiStateButton(Console1 *console1, ControllerID id, std::vector< uint32_t > state_values, std::function< void(uint32_t)> action, std::function< void(uint32_t)> shift_action=0, std::function< void(uint32_t)> plugin_action=0, std::function< void(uint32_t)> plugin_shift_action=0)
Definition: c1_control.h:94
std::function< void(uint32_t)> plugin_shift_action
Definition: c1_control.h:135
virtual void set_led_state(uint32_t state)
Definition: c1_control.h:114
std::function< void(uint32_t)> plugin_action
Definition: c1_control.h:134
std::function< void(uint32_t)> action
Definition: c1_control.h:132
void set_action(std::function< void(uint32_t)> new_action)
Definition: c1_control.h:126
std::vector< uint32_t > state_values
Definition: c1_control.h:138
void write(const MidiByteArray &)