diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2008-12-12 22:55:03 +0000 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2008-12-12 22:55:03 +0000 |
commit | 51625b2474e72850d19ff521d1b9f80be8b24136 (patch) | |
tree | a26983d5e3fdd437fa227ebcb0e188bc72a20e90 /libs/surfaces/mackie/surface.h | |
parent | f03a87a132feb525a743de675d0439e981ab329a (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.h | 43 |
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 ); |