try just removing all PLATFORM_WINDOWS conditionals in ipmidi code to see if it will...
[ardour.git] / libs / surfaces / mackie / mcp_buttons.cc
index c2d3680ff0300cac0a6d2ae6b83690514dab1345..6885acc97e244781ab0a65fb38e875f97a2a69b6 100644 (file)
@@ -189,7 +189,7 @@ LedState
 MackieControlProtocol::cursor_right_press (Button& )
 {
        if (zoom_mode()) {
-               
+
                if (main_modifier_state() & MODIFIER_OPTION) {
                        /* reset selected tracks to default vertical zoom */
                } else {
@@ -209,7 +209,7 @@ MackieControlProtocol::cursor_right_press (Button& )
 
                ScrollTimeline (page_fraction);
        }
-                       
+
        return off;
 }
 
@@ -223,7 +223,7 @@ LedState
 MackieControlProtocol::cursor_up_press (Button&)
 {
        if (zoom_mode()) {
-               
+
                if (main_modifier_state() & MODIFIER_CONTROL) {
                        VerticalZoomInSelected (); /* EMIT SIGNAL */
                } else {
@@ -504,13 +504,9 @@ MackieControlProtocol::ffwd_release (Button &)
 LedState
 MackieControlProtocol::loop_press (Button &)
 {
-       if (main_modifier_state() & MODIFIER_CONTROL) {
-               set_view_mode (Loop);
-               return on;
-       } else {
-               session->request_play_loop (!session->get_play_loop());
-               return none;
-       }
+       bool was_on = session->get_play_loop();
+       session->request_play_loop (!was_on);
+       return was_on ? off : on;
 }
 
 LedState
@@ -559,24 +555,38 @@ MackieControlProtocol::enter_release (Button &)
 }
 
 LedState
-MackieControlProtocol::F1_press (Button &)
+MackieControlProtocol::bank_release (Button& b, uint32_t basic_bank_num)
 {
-       return off;
+       uint32_t bank_num = basic_bank_num;
+
+       if (b.long_press_count() > 0) {
+               bank_num = 8 + basic_bank_num;
+       }
+
+       switch_banks (n_strips() * bank_num);
+
+       return on;
 }
+
 LedState
-MackieControlProtocol::F1_release (Button &)
+MackieControlProtocol::F1_press (Button &b)
 {
        return off;
 }
 LedState
+MackieControlProtocol::F1_release (Button &b)
+{
+       return bank_release (b, 0);
+}
+LedState
 MackieControlProtocol::F2_press (Button &)
 {
        return off;
 }
 LedState
-MackieControlProtocol::F2_release (Button &)
+MackieControlProtocol::F2_release (Button &b)
 {
-       return off;
+       return bank_release (b, 1);
 }
 LedState
 MackieControlProtocol::F3_press (Button &)
@@ -584,9 +594,9 @@ MackieControlProtocol::F3_press (Button &)
        return off;
 }
 LedState
-MackieControlProtocol::F3_release (Button &)
+MackieControlProtocol::F3_release (Button &b)
 {
-       return off;
+       return bank_release (b, 2);
 }
 LedState
 MackieControlProtocol::F4_press (Button &)
@@ -594,9 +604,9 @@ MackieControlProtocol::F4_press (Button &)
        return off;
 }
 LedState
-MackieControlProtocol::F4_release (Button &)
+MackieControlProtocol::F4_release (Button &b)
 {
-       return off;
+       return bank_release (b, 3);
 }
 LedState
 MackieControlProtocol::F5_press (Button &)
@@ -645,7 +655,8 @@ MackieControlProtocol::F8_release (Button &)
 LedState
 MackieControlProtocol::pan_press (Button &)
 {
-       return off;
+       set_pot_mode (Pan);
+       return none;
 }
 LedState
 MackieControlProtocol::pan_release (Button &)
@@ -660,7 +671,8 @@ MackieControlProtocol::plugin_press (Button &)
 LedState
 MackieControlProtocol::plugin_release (Button &)
 {
-       return none;
+       set_view_mode (Plugins);
+       return none; /* LED state set by set_view_mode */
 }
 LedState
 MackieControlProtocol::eq_press (Button &)
@@ -816,8 +828,8 @@ MackieControlProtocol::clearsolo_release (Mackie::Button&)
 Mackie::LedState
 MackieControlProtocol::track_press (Mackie::Button&)
 {
-
-       return off;
+       set_pot_mode (Trim);
+       return none;
 }
 Mackie::LedState
 MackieControlProtocol::track_release (Mackie::Button&)
@@ -827,13 +839,8 @@ MackieControlProtocol::track_release (Mackie::Button&)
 Mackie::LedState
 MackieControlProtocol::send_press (Mackie::Button&)
 {
-// code moved here from "sends_press"
-       //set_view_mode (Sends);
-       // Led state for vpot assignment should be radio button-ish
-       // Pressing any one should turn the rest off.
-       // but this is not implemented yet so leave off
-       //return on;
-       return off;
+       set_pot_mode (Send);
+       return none;
 }
 Mackie::LedState
 MackieControlProtocol::send_release (Mackie::Button&)
@@ -848,6 +855,7 @@ MackieControlProtocol::miditracks_press (Mackie::Button&)
 Mackie::LedState
 MackieControlProtocol::miditracks_release (Mackie::Button&)
 {
+       set_view_mode (MidiTracks);
        return none;
 }
 Mackie::LedState
@@ -868,6 +876,7 @@ MackieControlProtocol::audiotracks_press (Mackie::Button&)
 Mackie::LedState
 MackieControlProtocol::audiotracks_release (Mackie::Button&)
 {
+       set_view_mode (AudioTracks);
        return none;
 }
 Mackie::LedState
@@ -888,6 +897,7 @@ MackieControlProtocol::aux_press (Mackie::Button&)
 Mackie::LedState
 MackieControlProtocol::aux_release (Mackie::Button&)
 {
+       set_view_mode (Auxes);
        return none;
 }
 Mackie::LedState
@@ -898,6 +908,7 @@ MackieControlProtocol::busses_press (Mackie::Button&)
 Mackie::LedState
 MackieControlProtocol::busses_release (Mackie::Button&)
 {
+       set_view_mode (Busses);
        return none;
 }
 Mackie::LedState
@@ -918,6 +929,7 @@ MackieControlProtocol::user_press (Mackie::Button&)
 Mackie::LedState
 MackieControlProtocol::user_release (Mackie::Button&)
 {
+       set_view_mode (Selected);
        return none;
 }
 Mackie::LedState
@@ -983,6 +995,7 @@ MackieControlProtocol::click_release (Mackie::Button&)
 Mackie::LedState
 MackieControlProtocol::view_press (Mackie::Button&)
 {
+       set_view_mode (Mixer);
        return none;
 }
 Mackie::LedState