2 Copyright (C) 2006,2007 John Anderson
3 Copyright (C) 2012 Paul Davis
5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 2 of the License, or
8 (at your option) any later version.
10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details.
15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
20 #ifndef __mackie_controls_h__
21 #define __mackie_controls_h__
28 #include <boost/smart_ptr.hpp>
30 #include "pbd/signals.h"
32 #include "mackie_control_exception.h"
33 #include "midi_byte_array.h"
36 class AutomationControl;
39 namespace ArdourSurface {
49 Control (int id, std::string name, Group& group);
52 int id() const { return _id; }
53 const std::string & name() const { return _name; }
54 Group & group() const { return _group; }
57 void set_in_use (bool);
59 // Keep track of the timeout so it can be updated with more incoming events
60 sigc::connection in_use_connection;
62 virtual MidiByteArray zero() = 0;
64 /** If we are doing an in_use timeout for a fader without touch, this
65 * is its touch button control; otherwise 0.
67 Control* in_use_touch_control;
69 boost::shared_ptr<ARDOUR::AutomationControl> control () const { return normal_ac; }
70 virtual void set_control (boost::shared_ptr<ARDOUR::AutomationControl>);
73 void set_value (float val);
75 virtual void start_touch (double when);
76 virtual void stop_touch (bool mark, double when);
79 boost::shared_ptr<ARDOUR::AutomationControl> normal_ac;
82 int _id; /* possibly device-dependent ID */
91 std::ostream & operator << (std::ostream & os, const ArdourSurface::Mackie::Control & control);
93 #endif /* __mackie_controls_h__ */