add ffwd and rewind, and use frmm_left and frm_right for marker prev/next. Remap...
authorJohn Anderson <ardour@semiosix.com>
Wed, 11 Apr 2007 16:26:39 +0000 (16:26 +0000)
committerJohn Anderson <ardour@semiosix.com>
Wed, 11 Apr 2007 16:26:39 +0000 (16:26 +0000)
git-svn-id: svn://localhost/ardour2/trunk@1701 d708f5d6-7413-0410-9779-e7cbd77b26cf

libs/surfaces/mackie/bcf_surface.cc
libs/surfaces/mackie/mackie_control_protocol.cc
libs/surfaces/mackie/mackie_control_protocol.h
libs/surfaces/mackie/scripts/bcf-controls.csv
manual/xml/mackie.xml

index 2aaa70fc3e6107fac0168e440e4f7371553f8473..7e58209c36e2172db71a014e52157aaccc900a74 100644 (file)
@@ -621,13 +621,6 @@ void Mackie::BcfSurface::init_controls()
        controls_by_name["option"] = control;
        group->add( *control );
 
-       group = groups["modifiers"];
-       control = new Button ( 72, 1, "control", *group );
-       buttons[0x48] = control;
-       controls.push_back( control );
-       controls_by_name["control"] = control;
-       group->add( *control );
-
        group = groups["modifiers"];
        control = new Button ( 73, 1, "cmd_alt", *group );
        buttons[0x49] = control;
@@ -663,13 +656,6 @@ void Mackie::BcfSurface::init_controls()
        controls_by_name["snapshot"] = control;
        group->add( *control );
 
-       group = groups["automation"];
-       control = new Button ( 78, 1, "touch", *group );
-       buttons[0x4e] = control;
-       controls.push_back( control );
-       controls_by_name["touch"] = control;
-       group->add( *control );
-
        group = groups["functions"];
        control = new Button ( 79, 1, "redo", *group );
        buttons[0x4f] = control;
@@ -706,15 +692,15 @@ void Mackie::BcfSurface::init_controls()
        group->add( *control );
 
        group = groups["transport"];
-       control = new Button ( 84, 1, "frm_left", *group );
-       buttons[0x54] = control;
+       control = new Button ( 91, 1, "frm_left", *group );
+       buttons[0x5b] = control;
        controls.push_back( control );
        controls_by_name["frm_left"] = control;
        group->add( *control );
 
        group = groups["transport"];
-       control = new Button ( 85, 1, "frm_right", *group );
-       buttons[0x55] = control;
+       control = new Button ( 92, 1, "frm_right", *group );
+       buttons[0x5c] = control;
        controls.push_back( control );
        controls_by_name["frm_right"] = control;
        group->add( *control );
@@ -727,15 +713,15 @@ void Mackie::BcfSurface::init_controls()
        group->add( *control );
 
        group = groups["transport"];
-       control = new Button ( 44, 1, "punch_in", *group );
-       buttons[0x2c] = control;
+       control = new Button ( 72, 1, "punch_in", *group );
+       buttons[0x48] = control;
        controls.push_back( control );
        controls_by_name["punch_in"] = control;
        group->add( *control );
 
        group = groups["transport"];
-       control = new Button ( 43, 1, "punch_out", *group );
-       buttons[0x2b] = control;
+       control = new Button ( 78, 1, "punch_out", *group );
+       buttons[0x4e] = control;
        controls.push_back( control );
        controls_by_name["punch_out"] = control;
        group->add( *control );
@@ -755,15 +741,15 @@ void Mackie::BcfSurface::init_controls()
        group->add( *control );
 
        group = groups["transport"];
-       control = new Button ( 91, 1, "rewind", *group );
-       buttons[0x5b] = control;
+       control = new Button ( 44, 1, "rewind", *group );
+       buttons[0x2c] = control;
        controls.push_back( control );
        controls_by_name["rewind"] = control;
        group->add( *control );
 
        group = groups["transport"];
-       control = new Button ( 92, 1, "ffwd", *group );
-       buttons[0x5c] = control;
+       control = new Button ( 43, 1, "ffwd", *group );
+       buttons[0x2b] = control;
        controls.push_back( control );
        controls_by_name["ffwd"] = control;
        group->add( *control );
@@ -1204,14 +1190,6 @@ void Mackie::BcfSurface::handle_button( MackieButtonHandler & mbh, ButtonState b
                        }
                        break;
 
-               case 0x48: // control
-                       switch ( bs ) {
-                               case press: ls = mbh.control_press( button ); break;
-                               case release: ls = mbh.control_release( button ); break;
-                               case neither: break;
-                       }
-                       break;
-
                case 0x49: // cmd_alt
                        switch ( bs ) {
                                case press: ls = mbh.cmd_alt_press( button ); break;
@@ -1252,14 +1230,6 @@ void Mackie::BcfSurface::handle_button( MackieButtonHandler & mbh, ButtonState b
                        }
                        break;
 
-               case 0x4e: // touch
-                       switch ( bs ) {
-                               case press: ls = mbh.touch_press( button ); break;
-                               case release: ls = mbh.touch_release( button ); break;
-                               case neither: break;
-                       }
-                       break;
-
                case 0x4f: // redo
                        switch ( bs ) {
                                case press: ls = mbh.redo_press( button ); break;
@@ -1300,7 +1270,7 @@ void Mackie::BcfSurface::handle_button( MackieButtonHandler & mbh, ButtonState b
                        }
                        break;
 
-               case 0x54: // frm_left
+               case 0x5b: // frm_left
                        switch ( bs ) {
                                case press: ls = mbh.frm_left_press( button ); break;
                                case release: ls = mbh.frm_left_release( button ); break;
@@ -1308,7 +1278,7 @@ void Mackie::BcfSurface::handle_button( MackieButtonHandler & mbh, ButtonState b
                        }
                        break;
 
-               case 0x55: // frm_right
+               case 0x5c: // frm_right
                        switch ( bs ) {
                                case press: ls = mbh.frm_right_press( button ); break;
                                case release: ls = mbh.frm_right_release( button ); break;
@@ -1324,7 +1294,7 @@ void Mackie::BcfSurface::handle_button( MackieButtonHandler & mbh, ButtonState b
                        }
                        break;
 
-               case 0x2c: // punch_in
+               case 0x48: // punch_in
                        switch ( bs ) {
                                case press: ls = mbh.punch_in_press( button ); break;
                                case release: ls = mbh.punch_in_release( button ); break;
@@ -1332,7 +1302,7 @@ void Mackie::BcfSurface::handle_button( MackieButtonHandler & mbh, ButtonState b
                        }
                        break;
 
-               case 0x2b: // punch_out
+               case 0x4e: // punch_out
                        switch ( bs ) {
                                case press: ls = mbh.punch_out_press( button ); break;
                                case release: ls = mbh.punch_out_release( button ); break;
@@ -1356,7 +1326,7 @@ void Mackie::BcfSurface::handle_button( MackieButtonHandler & mbh, ButtonState b
                        }
                        break;
 
-               case 0x5b: // rewind
+               case 0x2c: // rewind
                        switch ( bs ) {
                                case press: ls = mbh.rewind_press( button ); break;
                                case release: ls = mbh.rewind_release( button ); break;
@@ -1364,7 +1334,7 @@ void Mackie::BcfSurface::handle_button( MackieButtonHandler & mbh, ButtonState b
                        }
                        break;
 
-               case 0x5c: // ffwd
+               case 0x2b: // ffwd
                        switch ( bs ) {
                                case press: ls = mbh.ffwd_press( button ); break;
                                case release: ls = mbh.ffwd_release( button ); break;
index 81d249588e9e0c81431f6fba11a395f5d0295697..aa037ff60e57cc3dcab5e8ea1d541563de7c372b 100644 (file)
@@ -1038,7 +1038,7 @@ void MackieControlProtocol::poll_automation()
 // Transport Buttons
 /////////////////////////////////////
 
-LedState MackieControlProtocol::rewind_press( Button & button )
+LedState MackieControlProtocol::frm_left_press( Button & button )
 {
        // can use first_mark_before/after as well
        Location * loc = session->locations()->first_location_before (
@@ -1048,12 +1048,12 @@ LedState MackieControlProtocol::rewind_press( Button & button )
        return on;
 }
 
-LedState MackieControlProtocol::rewind_release( Button & button )
+LedState MackieControlProtocol::frm_left_release( Button & button )
 {
        return off;
 }
 
-LedState MackieControlProtocol::ffwd_press( Button & button )
+LedState MackieControlProtocol::frm_right_press( Button & button )
 {
        // can use first_mark_before/after as well
        Location * loc = session->locations()->first_location_after (
@@ -1063,7 +1063,7 @@ LedState MackieControlProtocol::ffwd_press( Button & button )
        return on;
 }
 
-LedState MackieControlProtocol::ffwd_release( Button & button )
+LedState MackieControlProtocol::frm_right_release( Button & button )
 {
        return off;
 }
@@ -1112,6 +1112,36 @@ LedState MackieControlProtocol::record_release( Button & button )
                return off;
 }
 
+LedState MackieControlProtocol::rewind_press( Button & button )
+{
+       session->request_transport_speed( -2.0 );
+       return on;
+}
+
+LedState MackieControlProtocol::rewind_release( Button & button )
+{
+       if ( _transport_previously_rolling )
+               session->request_transport_speed( 1.0 );
+       else
+               session->request_stop();
+       return off;
+}
+
+LedState MackieControlProtocol::ffwd_press( Button & button )
+{
+       session->request_transport_speed( 2.0 );
+       return on;
+}
+
+LedState MackieControlProtocol::ffwd_release( Button & button )
+{
+       if ( _transport_previously_rolling )
+               session->request_transport_speed( 1.0 );
+       else
+               session->request_stop();
+       return off;
+}
+
 ///////////////////////////////////////////
 // Session signals
 ///////////////////////////////////////////
@@ -1198,6 +1228,8 @@ void MackieControlProtocol::notify_transport_state_changed()
        update_global_button( "stop", !session->transport_rolling() );
        update_global_button( "loop", session->get_play_loop() );
        
+       _transport_previously_rolling = session->transport_rolling();
+       
        // rec is special because it's tristate
        Button * rec = reinterpret_cast<Button*>( surface().controls_by_name["record"] );
        mcu_port().write( builder.build_led( *rec, record_release( *rec ) ) );
index d71979b46371975e7562ca911234b6dde6784502..f204ae426913cc87b3f28d3c5e0a9057abcef662 100644 (file)
@@ -124,11 +124,11 @@ class MackieControlProtocol
        void update_global_button( const std::string & name, Mackie::LedState );
   
    // transport button handler methods from MackieButtonHandler
-       virtual Mackie::LedState rewind_press( Mackie::Button & );
-       virtual Mackie::LedState rewind_release( Mackie::Button & );
+       virtual Mackie::LedState frm_left_press( Mackie::Button & );
+       virtual Mackie::LedState frm_left_release( Mackie::Button & );
 
-       virtual Mackie::LedState ffwd_press( Mackie::Button & );
-       virtual Mackie::LedState ffwd_release( Mackie::Button & );
+       virtual Mackie::LedState frm_right_press( Mackie::Button & );
+       virtual Mackie::LedState frm_right_release( Mackie::Button & );
 
        virtual Mackie::LedState stop_press( Mackie::Button & );
        virtual Mackie::LedState stop_release( Mackie::Button & );
@@ -154,7 +154,13 @@ class MackieControlProtocol
        virtual Mackie::LedState end_press( Mackie::Button & );
        virtual Mackie::LedState end_release( Mackie::Button & );
        
-   // bank switching button handler methods from MackieButtonHandler
+       virtual Mackie::LedState rewind_press( Mackie::Button & button );
+       virtual Mackie::LedState rewind_release( Mackie::Button & button );
+
+       virtual Mackie::LedState ffwd_press( Mackie::Button & button );
+       virtual Mackie::LedState ffwd_release( Mackie::Button & button );
+
+       // bank switching button handler methods from MackieButtonHandler
        virtual Mackie::LedState left_press( Mackie::Button & );
        virtual Mackie::LedState left_release( Mackie::Button & );
 
@@ -302,6 +308,8 @@ class MackieControlProtocol
        bool _polling;
        struct pollfd * pfd;
        int nfds;
+       
+       bool _transport_previously_rolling;
 };
 
 #endif // ardour_mackie_control_protocol_h
index 6a6d66f6ac819bd2ba74fe52b2e8893960e2aa6a..8949e1486ba8e77c85f78204566294d5a14f908c 100644 (file)
@@ -50,29 +50,27 @@ button,1,,F16,1,0,0x45
 # turn on/off all solos
 button,1,,global_solo,1,0,0x27
 button,1,modifiers,option,1,0,0x47
-button,1,modifiers,control,1,0,0x48
 button,1,modifiers,cmd_alt,1,0,0x49
 button,1,automation,on,1,1,0x4a
 button,1,automation,rec_ready,1,1,0x4b
 button,1,functions,undo,1,1,0x4c
 button,1,automation,snapshot,1,1,0x4d
-button,1,automation,touch,1,1,0x4e
 button,1,functions,redo,1,1,0x4f
 button,1,functions,marker,1,1,0x50
 button,1,functions,enter,1,1,0x51
 button,1,functions,cancel,1,0,0x52
 button,1,functions,mixer,1,0,0x53
-button,1,transport,frm_left,1,1,0x54
-button,1,transport,frm_right,1,1,0x55
+
+# transport buttons
+button,1,transport,frm_left,1,1,0x5b
+button,1,transport,frm_right,1,1,0x5c
 button,1,transport,loop,1,1,0x46
-button,1,transport,punch_in,1,1,0x2c
-button,1,transport,punch_out,1,1,0x2b
+button,1,transport,punch_in,1,1,0x48
+button,1,transport,punch_out,1,1,0x4e
 button,1,transport,home,1,1,0x2a
 button,1,transport,end,1,1,0x29
-
-# transport buttons
-button,1,transport,"rewind",1,1,0x5b
-button,1,transport,"ffwd",1,1,0x5c
+button,1,transport,"rewind",1,1,0x2c
+button,1,transport,"ffwd",1,1,0x2b
 button,1,transport,"stop",1,1,0x5d
 button,1,transport,"play",1,1,0x5e
 button,1,transport,"record",1,1,0x1f
index da9b6aafeb465850b63099e5ce05d8f212ce1aa0..a8a3ca012c48882a103202cd51ad7adb9d58ab6c 100644 (file)
               </entry>
 
               <entry>
-                loop
+                loop (shift2: punch in)
               </entry>
             </row>
 
               </entry>
 
               <entry>
-                click
+                click (shift2: punch out)
               </entry>
             </row>
 
               </entry>
 
               <entry>
-                punch in
+                rewind
               </entry>
 
               <entry>
-                punch out
+                ffwd
               </entry>
             </row>
 
 
             <row>
               <entry>
-                previous bank (shift 1 is previous route)
+                previous bank (shift 1: previous route)
               </entry>
 
               <entry>
-                next bank (shift 1 is next route)
+                next bank (shift 1: next route)
               </entry>
             </row>