MCP: more twiddling with code
authorPaul Davis <paul@linuxaudiosystems.com>
Wed, 11 Apr 2012 16:11:55 +0000 (16:11 +0000)
committerPaul Davis <paul@linuxaudiosystems.com>
Wed, 11 Apr 2012 16:11:55 +0000 (16:11 +0000)
git-svn-id: svn://localhost/ardour2/branches/3.0@11902 d708f5d6-7413-0410-9779-e7cbd77b26cf

libs/surfaces/mackie/button.h
libs/surfaces/mackie/controls.h
libs/surfaces/mackie/jog.h
libs/surfaces/mackie/pot.h
libs/surfaces/mackie/strip.cc
libs/surfaces/mackie/surface.cc

index e6712234c012197b1eb7a185176405ff50401e86..e0286287077a7a632cf0ef954e95516f087a2343 100644 (file)
@@ -30,6 +30,15 @@ class Surface;
 class Button : public Control
 {
 public:
+       enum base_id_t {
+               recenable_base_id = 0x0,
+               solo_base_id = 0x08,
+               mute_base_id = 0x10,
+               select_base_id = 0x18,
+               vselect_base_id = 0x20,
+               fader_touch_base_id = 0xe0,
+       };
+
        enum ButtonID {
                Io = 0x28,
                Sends = 0x29,
index 71f2b57c8f4a64f6fda4da662746c35e9a3eeb34..e3fe7ca131a7ae4fdd323a6f1e35eb91d7426e87 100644 (file)
@@ -40,19 +40,6 @@ class Surface;
 class Control
 {
 public:
-       enum base_id_t {
-               /* ID's associated with pot (Controller) messages */
-               pot_base_id = 0x30,
-               jog_base_id = 0x3c,
-               /* ID's associated with button (NoteOn) messages */
-               recenable_button_base_id = 0x0,
-               solo_button_base_id = 0x08,
-               mute_button_base_id = 0x10,
-               select_button_base_id = 0x18,
-               vselect_button_base_id = 0x20,
-               fader_touch_button_base_id = 0xe0,
-       };
-       
        Control (int id, std::string name, Group& group);
        virtual ~Control() {}
        
index abccd01b0633b4e43899f9505f9ffc1dc847350a..a4a6b739dedef7e2b1615f641c66a1a647ea959f 100644 (file)
@@ -28,6 +28,10 @@ namespace Mackie {
 class Jog : public Pot
 {
 public:
+       enum base_id_t {
+               base_id = 0x3c
+       };
+
        Jog (int id, std::string name, Group & group)
                : Pot  (id, name, group)
        {
index fc9858e24cdd1cb6602393ccba94501dc5ea5dc0..ccb6eec0f13e19269ed6be6793ec4cdcbdf7a688 100644 (file)
@@ -8,6 +8,10 @@ namespace Mackie {
 class Pot : public Control
 {
 public:
+       enum base_id_t {
+               base_id = 0x30,
+       };
+
        enum Mode {
                dot = 0,
                boost_cut = 1,
index 7751eed04fb290d311c83efb7f6147418dba8919..ddc982aeb6da9f3bb09b79c0669e6e13bd77fd29 100644 (file)
@@ -92,26 +92,54 @@ void Strip::add (Control & control)
 {
        Group::add (control);
 
-       if  (control.name() == "gain") {
-               _gain = reinterpret_cast<Fader*>(&control);
-       } else if  (control.name() == "vpot") {
-               _vpot = reinterpret_cast<Pot*>(&control);
-       } else if  (control.name() == "recenable") {
-               _recenable = reinterpret_cast<Button*>(&control);
-       } else if  (control.name() == "solo") {
-               _solo = reinterpret_cast<Button*>(&control);
-       } else if  (control.name() == "mute") {
-               _mute = reinterpret_cast<Button*>(&control);
-       } else if  (control.name() == "select") {
-               _select = reinterpret_cast<Button*>(&control);
-       } else if  (control.name() == "vselect") {
-               _vselect = reinterpret_cast<Button*>(&control);
-       } else if  (control.name() == "fader_touch") {
-               _fader_touch = reinterpret_cast<Button*>(&control);
-       } else if  (control.name() == "meter") {
-               _meter = reinterpret_cast<Meter*>(&control);
-       } else {
-               // relax 
+       Fader* fader;
+       Pot* pot;
+       Button* button;
+       Meter* meter;
+
+       if ((fader = dynamic_cast<Fader*>(&control)) != 0) {
+
+               _gain = fader;
+
+       } else if ((pot = dynamic_cast<Pot*>(&control)) != 0) {
+
+               _vpot = pot;
+
+       } else if ((button = dynamic_cast<Button*>(&control)) != 0) {
+
+               if (control.raw_id() >= Button::recenable_base_id &&
+                   control.raw_id() < Button::recenable_base_id + 8) {
+                       
+                       _recenable = button;
+
+               } else if (control.raw_id() >= Button::mute_base_id &&
+                          control.raw_id() < Button::mute_base_id + 8) {
+
+                       _mute = button;
+
+               } else if (control.raw_id() >= Button::solo_base_id &&
+                          control.raw_id() < Button::solo_base_id + 8) {
+
+                       _solo = button;
+
+               } else if (control.raw_id() >= Button::select_base_id &&
+                          control.raw_id() < Button::select_base_id + 8) {
+
+                       _select = button;
+
+               } else if (control.raw_id() >= Button::vselect_base_id &&
+                          control.raw_id() < Button::vselect_base_id + 8) {
+
+                       _vselect = button;
+
+               } else if (control.raw_id() >= Button::fader_touch_base_id &&
+                          control.raw_id() < Button::fader_touch_base_id + 8) {
+
+                       _fader_touch = button;
+               }
+
+       } else if ((meter = dynamic_cast<Meter*>(&control)) != 0) {
+               _meter = meter;
        }
 }
 
@@ -417,33 +445,34 @@ Strip::handle_button (Button& button, ButtonState bs)
        }
 
        if (bs == press) {
-               if (button.raw_id() >= Control::recenable_button_base_id &&
-                   button.raw_id() < Control::recenable_button_base_id + 8) {
+               if (button.raw_id() >= Button::recenable_base_id &&
+                   button.raw_id() < Button::recenable_base_id + 8) {
 
                        _route->set_record_enabled (!_route->record_enabled(), this);
 
-               } else if (button.raw_id() >= Control::mute_button_base_id &&
-                          button.raw_id() < Control::mute_button_base_id + 8) {
+               } else if (button.raw_id() >= Button::mute_base_id &&
+                          button.raw_id() < Button::mute_base_id + 8) {
 
                        _route->set_mute (!_route->muted(), this);
 
-               } else if (button.raw_id() >= Control::solo_button_base_id &&
-                          button.raw_id() < Control::solo_button_base_id + 8) {
+               } else if (button.raw_id() >= Button::solo_base_id &&
+                          button.raw_id() < Button::solo_base_id + 8) {
 
                        _route->set_solo (!_route->soloed(), this);
 
-               } else if (button.raw_id() >= Control::select_button_base_id &&
-                          button.raw_id() < Control::select_button_base_id + 8) {
+               } else if (button.raw_id() >= Button::select_base_id &&
+                          button.raw_id() < Button::select_base_id + 8) {
 
                        _surface->mcp().select_track (_route);
 
-               } else if (button.raw_id() >= Control::vselect_button_base_id &&
-                          button.raw_id() < Control::vselect_button_base_id + 8) {
+               } else if (button.raw_id() >= Button::vselect_base_id &&
+                          button.raw_id() < Button::vselect_base_id + 8) {
 
                }
        }
 
-       if (button.name() == "fader_touch") {
+       if (button.raw_id() >= Button::fader_touch_base_id &&
+           button.raw_id() < Button::fader_touch_base_id + 8) {
 
                DEBUG_TRACE (DEBUG::MackieControl, string_compose ("fader touch, press ? %1\n", (bs == press)));
 
index 86c2378ee945b6cc8f9a35e9e9466c00125f0129..1662819160e117d4e388d99169f20294c82a93c7 100644 (file)
@@ -231,13 +231,13 @@ Surface::init_controls()
 
 static StripControlDefinition mackie_strip_controls[] = {
        { "gain", 0, Fader::factory, },
-       { "vpot", Control::pot_base_id, Pot::factory, },
-       { "recenable", Control::recenable_button_base_id, Button::factory, },
-       { "solo", Control::solo_button_base_id, Button::factory, },
-       { "mute", Control::mute_button_base_id, Button::factory, },
-       { "select", Control::select_button_base_id, Button::factory, },
-       { "vselect", Control::vselect_button_base_id, Button::factory, },
-       { "fader_touch", Control::fader_touch_button_base_id, Button::factory, },
+       { "vpot", Pot::base_id, Pot::factory, },
+       { "recenable", Button::recenable_base_id, Button::factory, },
+       { "solo", Button::solo_base_id, Button::factory, },
+       { "mute", Button::mute_base_id, Button::factory, },
+       { "select", Button::select_base_id, Button::factory, },
+       { "vselect", Button::vselect_base_id, Button::factory, },
+       { "fader_touch", Button::fader_touch_base_id, Button::factory, },
        { "meter", 0, Meter::factory, },
        { "", 0, Button::factory, }
 };
@@ -385,9 +385,9 @@ Surface::handle_midi_controller_message (MIDI::Parser &, MIDI::EventTwoBytes* ev
 {
        DEBUG_TRACE (DEBUG::MackieControl, string_compose ("SurfacePort::handle_midi_controller %1 = %2\n", ev->controller_number, ev->value));
 
-       Pot* pot = pots[Control::pot_base_id | ev->controller_number];
+       Pot* pot = pots[ev->controller_number];
 
-       if (!pot && ev->controller_number == Control::jog_base_id) {
+       if (!pot && ev->controller_number == Jog::base_id) {
                pot = dynamic_cast<Pot*> (controls_by_name["jog"]);
        }