mirror of
https://github.com/Ardour/ardour.git
synced 2025-12-14 10:36:34 +01:00
add ffwd and rewind, and use frmm_left and frm_right for marker prev/next. Remap punch in and punch out.
git-svn-id: svn://localhost/ardour2/trunk@1701 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
parent
82a664687c
commit
5dbc46cad3
5 changed files with 82 additions and 74 deletions
|
|
@ -621,13 +621,6 @@ void Mackie::BcfSurface::init_controls()
|
||||||
controls_by_name["option"] = control;
|
controls_by_name["option"] = control;
|
||||||
group->add( *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"];
|
group = groups["modifiers"];
|
||||||
control = new Button ( 73, 1, "cmd_alt", *group );
|
control = new Button ( 73, 1, "cmd_alt", *group );
|
||||||
buttons[0x49] = control;
|
buttons[0x49] = control;
|
||||||
|
|
@ -663,13 +656,6 @@ void Mackie::BcfSurface::init_controls()
|
||||||
controls_by_name["snapshot"] = control;
|
controls_by_name["snapshot"] = control;
|
||||||
group->add( *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"];
|
group = groups["functions"];
|
||||||
control = new Button ( 79, 1, "redo", *group );
|
control = new Button ( 79, 1, "redo", *group );
|
||||||
buttons[0x4f] = control;
|
buttons[0x4f] = control;
|
||||||
|
|
@ -706,15 +692,15 @@ void Mackie::BcfSurface::init_controls()
|
||||||
group->add( *control );
|
group->add( *control );
|
||||||
|
|
||||||
group = groups["transport"];
|
group = groups["transport"];
|
||||||
control = new Button ( 84, 1, "frm_left", *group );
|
control = new Button ( 91, 1, "frm_left", *group );
|
||||||
buttons[0x54] = control;
|
buttons[0x5b] = control;
|
||||||
controls.push_back( control );
|
controls.push_back( control );
|
||||||
controls_by_name["frm_left"] = control;
|
controls_by_name["frm_left"] = control;
|
||||||
group->add( *control );
|
group->add( *control );
|
||||||
|
|
||||||
group = groups["transport"];
|
group = groups["transport"];
|
||||||
control = new Button ( 85, 1, "frm_right", *group );
|
control = new Button ( 92, 1, "frm_right", *group );
|
||||||
buttons[0x55] = control;
|
buttons[0x5c] = control;
|
||||||
controls.push_back( control );
|
controls.push_back( control );
|
||||||
controls_by_name["frm_right"] = control;
|
controls_by_name["frm_right"] = control;
|
||||||
group->add( *control );
|
group->add( *control );
|
||||||
|
|
@ -727,15 +713,15 @@ void Mackie::BcfSurface::init_controls()
|
||||||
group->add( *control );
|
group->add( *control );
|
||||||
|
|
||||||
group = groups["transport"];
|
group = groups["transport"];
|
||||||
control = new Button ( 44, 1, "punch_in", *group );
|
control = new Button ( 72, 1, "punch_in", *group );
|
||||||
buttons[0x2c] = control;
|
buttons[0x48] = control;
|
||||||
controls.push_back( control );
|
controls.push_back( control );
|
||||||
controls_by_name["punch_in"] = control;
|
controls_by_name["punch_in"] = control;
|
||||||
group->add( *control );
|
group->add( *control );
|
||||||
|
|
||||||
group = groups["transport"];
|
group = groups["transport"];
|
||||||
control = new Button ( 43, 1, "punch_out", *group );
|
control = new Button ( 78, 1, "punch_out", *group );
|
||||||
buttons[0x2b] = control;
|
buttons[0x4e] = control;
|
||||||
controls.push_back( control );
|
controls.push_back( control );
|
||||||
controls_by_name["punch_out"] = control;
|
controls_by_name["punch_out"] = control;
|
||||||
group->add( *control );
|
group->add( *control );
|
||||||
|
|
@ -755,15 +741,15 @@ void Mackie::BcfSurface::init_controls()
|
||||||
group->add( *control );
|
group->add( *control );
|
||||||
|
|
||||||
group = groups["transport"];
|
group = groups["transport"];
|
||||||
control = new Button ( 91, 1, "rewind", *group );
|
control = new Button ( 44, 1, "rewind", *group );
|
||||||
buttons[0x5b] = control;
|
buttons[0x2c] = control;
|
||||||
controls.push_back( control );
|
controls.push_back( control );
|
||||||
controls_by_name["rewind"] = control;
|
controls_by_name["rewind"] = control;
|
||||||
group->add( *control );
|
group->add( *control );
|
||||||
|
|
||||||
group = groups["transport"];
|
group = groups["transport"];
|
||||||
control = new Button ( 92, 1, "ffwd", *group );
|
control = new Button ( 43, 1, "ffwd", *group );
|
||||||
buttons[0x5c] = control;
|
buttons[0x2b] = control;
|
||||||
controls.push_back( control );
|
controls.push_back( control );
|
||||||
controls_by_name["ffwd"] = control;
|
controls_by_name["ffwd"] = control;
|
||||||
group->add( *control );
|
group->add( *control );
|
||||||
|
|
@ -1204,14 +1190,6 @@ void Mackie::BcfSurface::handle_button( MackieButtonHandler & mbh, ButtonState b
|
||||||
}
|
}
|
||||||
break;
|
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
|
case 0x49: // cmd_alt
|
||||||
switch ( bs ) {
|
switch ( bs ) {
|
||||||
case press: ls = mbh.cmd_alt_press( button ); break;
|
case press: ls = mbh.cmd_alt_press( button ); break;
|
||||||
|
|
@ -1252,14 +1230,6 @@ void Mackie::BcfSurface::handle_button( MackieButtonHandler & mbh, ButtonState b
|
||||||
}
|
}
|
||||||
break;
|
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
|
case 0x4f: // redo
|
||||||
switch ( bs ) {
|
switch ( bs ) {
|
||||||
case press: ls = mbh.redo_press( button ); break;
|
case press: ls = mbh.redo_press( button ); break;
|
||||||
|
|
@ -1300,7 +1270,7 @@ void Mackie::BcfSurface::handle_button( MackieButtonHandler & mbh, ButtonState b
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 0x54: // frm_left
|
case 0x5b: // frm_left
|
||||||
switch ( bs ) {
|
switch ( bs ) {
|
||||||
case press: ls = mbh.frm_left_press( button ); break;
|
case press: ls = mbh.frm_left_press( button ); break;
|
||||||
case release: ls = mbh.frm_left_release( 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;
|
break;
|
||||||
|
|
||||||
case 0x55: // frm_right
|
case 0x5c: // frm_right
|
||||||
switch ( bs ) {
|
switch ( bs ) {
|
||||||
case press: ls = mbh.frm_right_press( button ); break;
|
case press: ls = mbh.frm_right_press( button ); break;
|
||||||
case release: ls = mbh.frm_right_release( 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;
|
break;
|
||||||
|
|
||||||
case 0x2c: // punch_in
|
case 0x48: // punch_in
|
||||||
switch ( bs ) {
|
switch ( bs ) {
|
||||||
case press: ls = mbh.punch_in_press( button ); break;
|
case press: ls = mbh.punch_in_press( button ); break;
|
||||||
case release: ls = mbh.punch_in_release( 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;
|
break;
|
||||||
|
|
||||||
case 0x2b: // punch_out
|
case 0x4e: // punch_out
|
||||||
switch ( bs ) {
|
switch ( bs ) {
|
||||||
case press: ls = mbh.punch_out_press( button ); break;
|
case press: ls = mbh.punch_out_press( button ); break;
|
||||||
case release: ls = mbh.punch_out_release( 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;
|
break;
|
||||||
|
|
||||||
case 0x5b: // rewind
|
case 0x2c: // rewind
|
||||||
switch ( bs ) {
|
switch ( bs ) {
|
||||||
case press: ls = mbh.rewind_press( button ); break;
|
case press: ls = mbh.rewind_press( button ); break;
|
||||||
case release: ls = mbh.rewind_release( button ); break;
|
case release: ls = mbh.rewind_release( button ); break;
|
||||||
|
|
@ -1364,7 +1334,7 @@ void Mackie::BcfSurface::handle_button( MackieButtonHandler & mbh, ButtonState b
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 0x5c: // ffwd
|
case 0x2b: // ffwd
|
||||||
switch ( bs ) {
|
switch ( bs ) {
|
||||||
case press: ls = mbh.ffwd_press( button ); break;
|
case press: ls = mbh.ffwd_press( button ); break;
|
||||||
case release: ls = mbh.ffwd_release( button ); break;
|
case release: ls = mbh.ffwd_release( button ); break;
|
||||||
|
|
|
||||||
|
|
@ -1038,7 +1038,7 @@ void MackieControlProtocol::poll_automation()
|
||||||
// Transport Buttons
|
// Transport Buttons
|
||||||
/////////////////////////////////////
|
/////////////////////////////////////
|
||||||
|
|
||||||
LedState MackieControlProtocol::rewind_press( Button & button )
|
LedState MackieControlProtocol::frm_left_press( Button & button )
|
||||||
{
|
{
|
||||||
// can use first_mark_before/after as well
|
// can use first_mark_before/after as well
|
||||||
Location * loc = session->locations()->first_location_before (
|
Location * loc = session->locations()->first_location_before (
|
||||||
|
|
@ -1048,12 +1048,12 @@ LedState MackieControlProtocol::rewind_press( Button & button )
|
||||||
return on;
|
return on;
|
||||||
}
|
}
|
||||||
|
|
||||||
LedState MackieControlProtocol::rewind_release( Button & button )
|
LedState MackieControlProtocol::frm_left_release( Button & button )
|
||||||
{
|
{
|
||||||
return off;
|
return off;
|
||||||
}
|
}
|
||||||
|
|
||||||
LedState MackieControlProtocol::ffwd_press( Button & button )
|
LedState MackieControlProtocol::frm_right_press( Button & button )
|
||||||
{
|
{
|
||||||
// can use first_mark_before/after as well
|
// can use first_mark_before/after as well
|
||||||
Location * loc = session->locations()->first_location_after (
|
Location * loc = session->locations()->first_location_after (
|
||||||
|
|
@ -1063,7 +1063,7 @@ LedState MackieControlProtocol::ffwd_press( Button & button )
|
||||||
return on;
|
return on;
|
||||||
}
|
}
|
||||||
|
|
||||||
LedState MackieControlProtocol::ffwd_release( Button & button )
|
LedState MackieControlProtocol::frm_right_release( Button & button )
|
||||||
{
|
{
|
||||||
return off;
|
return off;
|
||||||
}
|
}
|
||||||
|
|
@ -1112,6 +1112,36 @@ LedState MackieControlProtocol::record_release( Button & button )
|
||||||
return off;
|
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
|
// Session signals
|
||||||
///////////////////////////////////////////
|
///////////////////////////////////////////
|
||||||
|
|
@ -1198,6 +1228,8 @@ void MackieControlProtocol::notify_transport_state_changed()
|
||||||
update_global_button( "stop", !session->transport_rolling() );
|
update_global_button( "stop", !session->transport_rolling() );
|
||||||
update_global_button( "loop", session->get_play_loop() );
|
update_global_button( "loop", session->get_play_loop() );
|
||||||
|
|
||||||
|
_transport_previously_rolling = session->transport_rolling();
|
||||||
|
|
||||||
// rec is special because it's tristate
|
// rec is special because it's tristate
|
||||||
Button * rec = reinterpret_cast<Button*>( surface().controls_by_name["record"] );
|
Button * rec = reinterpret_cast<Button*>( surface().controls_by_name["record"] );
|
||||||
mcu_port().write( builder.build_led( *rec, record_release( *rec ) ) );
|
mcu_port().write( builder.build_led( *rec, record_release( *rec ) ) );
|
||||||
|
|
|
||||||
|
|
@ -124,11 +124,11 @@ class MackieControlProtocol
|
||||||
void update_global_button( const std::string & name, Mackie::LedState );
|
void update_global_button( const std::string & name, Mackie::LedState );
|
||||||
|
|
||||||
// transport button handler methods from MackieButtonHandler
|
// transport button handler methods from MackieButtonHandler
|
||||||
virtual Mackie::LedState rewind_press( Mackie::Button & );
|
virtual Mackie::LedState frm_left_press( Mackie::Button & );
|
||||||
virtual Mackie::LedState rewind_release( Mackie::Button & );
|
virtual Mackie::LedState frm_left_release( Mackie::Button & );
|
||||||
|
|
||||||
virtual Mackie::LedState ffwd_press( Mackie::Button & );
|
virtual Mackie::LedState frm_right_press( Mackie::Button & );
|
||||||
virtual Mackie::LedState ffwd_release( Mackie::Button & );
|
virtual Mackie::LedState frm_right_release( Mackie::Button & );
|
||||||
|
|
||||||
virtual Mackie::LedState stop_press( Mackie::Button & );
|
virtual Mackie::LedState stop_press( Mackie::Button & );
|
||||||
virtual Mackie::LedState stop_release( 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_press( Mackie::Button & );
|
||||||
virtual Mackie::LedState end_release( 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_press( Mackie::Button & );
|
||||||
virtual Mackie::LedState left_release( Mackie::Button & );
|
virtual Mackie::LedState left_release( Mackie::Button & );
|
||||||
|
|
||||||
|
|
@ -302,6 +308,8 @@ class MackieControlProtocol
|
||||||
bool _polling;
|
bool _polling;
|
||||||
struct pollfd * pfd;
|
struct pollfd * pfd;
|
||||||
int nfds;
|
int nfds;
|
||||||
|
|
||||||
|
bool _transport_previously_rolling;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // ardour_mackie_control_protocol_h
|
#endif // ardour_mackie_control_protocol_h
|
||||||
|
|
|
||||||
|
|
@ -50,29 +50,27 @@ button,1,,F16,1,0,0x45
|
||||||
# turn on/off all solos
|
# turn on/off all solos
|
||||||
button,1,,global_solo,1,0,0x27
|
button,1,,global_solo,1,0,0x27
|
||||||
button,1,modifiers,option,1,0,0x47
|
button,1,modifiers,option,1,0,0x47
|
||||||
button,1,modifiers,control,1,0,0x48
|
|
||||||
button,1,modifiers,cmd_alt,1,0,0x49
|
button,1,modifiers,cmd_alt,1,0,0x49
|
||||||
button,1,automation,on,1,1,0x4a
|
button,1,automation,on,1,1,0x4a
|
||||||
button,1,automation,rec_ready,1,1,0x4b
|
button,1,automation,rec_ready,1,1,0x4b
|
||||||
button,1,functions,undo,1,1,0x4c
|
button,1,functions,undo,1,1,0x4c
|
||||||
button,1,automation,snapshot,1,1,0x4d
|
button,1,automation,snapshot,1,1,0x4d
|
||||||
button,1,automation,touch,1,1,0x4e
|
|
||||||
button,1,functions,redo,1,1,0x4f
|
button,1,functions,redo,1,1,0x4f
|
||||||
button,1,functions,marker,1,1,0x50
|
button,1,functions,marker,1,1,0x50
|
||||||
button,1,functions,enter,1,1,0x51
|
button,1,functions,enter,1,1,0x51
|
||||||
button,1,functions,cancel,1,0,0x52
|
button,1,functions,cancel,1,0,0x52
|
||||||
button,1,functions,mixer,1,0,0x53
|
button,1,functions,mixer,1,0,0x53
|
||||||
button,1,transport,frm_left,1,1,0x54
|
|
||||||
button,1,transport,frm_right,1,1,0x55
|
|
||||||
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,home,1,1,0x2a
|
|
||||||
button,1,transport,end,1,1,0x29
|
|
||||||
|
|
||||||
# transport buttons
|
# transport buttons
|
||||||
button,1,transport,"rewind",1,1,0x5b
|
button,1,transport,frm_left,1,1,0x5b
|
||||||
button,1,transport,"ffwd",1,1,0x5c
|
button,1,transport,frm_right,1,1,0x5c
|
||||||
|
button,1,transport,loop,1,1,0x46
|
||||||
|
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
|
||||||
|
button,1,transport,"rewind",1,1,0x2c
|
||||||
|
button,1,transport,"ffwd",1,1,0x2b
|
||||||
button,1,transport,"stop",1,1,0x5d
|
button,1,transport,"stop",1,1,0x5d
|
||||||
button,1,transport,"play",1,1,0x5e
|
button,1,transport,"play",1,1,0x5e
|
||||||
button,1,transport,"record",1,1,0x1f
|
button,1,transport,"record",1,1,0x1f
|
||||||
|
|
|
||||||
|
Can't render this file because it has a wrong number of fields in line 2.
|
|
|
@ -158,7 +158,7 @@
|
||||||
</entry>
|
</entry>
|
||||||
|
|
||||||
<entry>
|
<entry>
|
||||||
loop
|
loop (shift2: punch in)
|
||||||
</entry>
|
</entry>
|
||||||
</row>
|
</row>
|
||||||
|
|
||||||
|
|
@ -176,7 +176,7 @@
|
||||||
</entry>
|
</entry>
|
||||||
|
|
||||||
<entry>
|
<entry>
|
||||||
click
|
click (shift2: punch out)
|
||||||
</entry>
|
</entry>
|
||||||
</row>
|
</row>
|
||||||
|
|
||||||
|
|
@ -190,11 +190,11 @@
|
||||||
</entry>
|
</entry>
|
||||||
|
|
||||||
<entry>
|
<entry>
|
||||||
punch in
|
rewind
|
||||||
</entry>
|
</entry>
|
||||||
|
|
||||||
<entry>
|
<entry>
|
||||||
punch out
|
ffwd
|
||||||
</entry>
|
</entry>
|
||||||
</row>
|
</row>
|
||||||
|
|
||||||
|
|
@ -210,11 +210,11 @@
|
||||||
|
|
||||||
<row>
|
<row>
|
||||||
<entry>
|
<entry>
|
||||||
previous bank (shift 1 is previous route)
|
previous bank (shift 1: previous route)
|
||||||
</entry>
|
</entry>
|
||||||
|
|
||||||
<entry>
|
<entry>
|
||||||
next bank (shift 1 is next route)
|
next bank (shift 1: next route)
|
||||||
</entry>
|
</entry>
|
||||||
</row>
|
</row>
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue