summaryrefslogtreecommitdiff
path: root/libs/surfaces/mackie/surface.h
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2008-12-12 22:55:03 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2008-12-12 22:55:03 +0000
commit51625b2474e72850d19ff521d1b9f80be8b24136 (patch)
treea26983d5e3fdd437fa227ebcb0e188bc72a20e90 /libs/surfaces/mackie/surface.h
parentf03a87a132feb525a743de675d0439e981ab329a (diff)
"merge" (i.e. wholesale import) 2.0-ongoing Mackie code and then fix to compile in 3.0 context
git-svn-id: svn://localhost/ardour2/branches/3.0@4315 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/surfaces/mackie/surface.h')
-rw-r--r--libs/surfaces/mackie/surface.h43
1 files changed, 39 insertions, 4 deletions
diff --git a/libs/surfaces/mackie/surface.h b/libs/surfaces/mackie/surface.h
index 0ccde75537..5305fe7eb8 100644
--- a/libs/surfaces/mackie/surface.h
+++ b/libs/surfaces/mackie/surface.h
@@ -9,6 +9,8 @@ namespace Mackie
{
class MackieButtonHandler;
+class SurfacePort;
+class MackieMidiBuilder;
/**
This represents an entire control surface, made up of Groups,
@@ -53,11 +55,13 @@ public:
These are alternative addressing schemes
They use maps because the indices aren't always
0-based.
+
+ Indexed by raw_id not by id. @see Control for the distinction.
*/
- std::map<int,Control*> faders;
- std::map<int,Control*> pots;
- std::map<int,Control*> buttons;
- std::map<int,Control*> leds;
+ std::map<int,Fader*> faders;
+ std::map<int,Pot*> pots;
+ std::map<int,Button*> buttons;
+ std::map<int,Led*> leds;
/// no strip controls in here because they usually
/// have the same names.
@@ -79,7 +83,38 @@ public:
/// map button ids to calls to press_ and release_ in mbh
virtual void handle_button( MackieButtonHandler & mbh, ButtonState bs, Button & button ) = 0;
+
+public:
+ /// display an indicator of the first switched-in Route. Do nothing by default.
+ virtual void display_bank_start( SurfacePort &, MackieMidiBuilder &, uint32_t current_bank ) {};
+
+ /// called from MackieControlPRotocol::zero_all to turn things off
+ virtual void zero_all( SurfacePort &, MackieMidiBuilder & ) {};
+
+ /// turn off leds around the jog wheel. This is for surfaces that use a pot
+ /// pretending to be a jog wheel.
+ virtual void blank_jog_ring( SurfacePort &, MackieMidiBuilder & ) {};
+
+ virtual bool has_timecode_display() const = 0;
+ virtual void display_timecode( SurfacePort &, MackieMidiBuilder &, const std::string & timecode, const std::string & timecode_last ) {};
+public:
+ /**
+ This is used to calculate the clicks per second that define
+ a transport speed of 1.0 for the jog wheel. 100.0 is 10 clicks
+ per second, 50.5 is 5 clicks per second.
+ */
+ virtual float scrub_scaling_factor() = 0;
+
+ /**
+ The scaling factor function for speed increase and decrease. At
+ low transport speeds this should return a small value, for high transport
+ speeds, this should return an exponentially larger value. This provides
+ high definition control at low speeds and quick speed changes to/from
+ higher speeds.
+ */
+ virtual float scaled_delta( const ControlState & state, float current_speed ) = 0;
+
protected:
virtual void init_controls() = 0;
virtual void init_strips( uint32_t max_strips, uint32_t unit_strips );