connections_back = session->TransportStateChange.connect( ( mem_fun (*this, &MackieControlProtocol::notify_transport_state_changed) ) );
// receive punch-in and punch-out
connections_back = Config->ParameterChanged.connect( ( mem_fun (*this, &MackieControlProtocol::notify_parameter_changed) ) );
+ session->config.ParameterChanged.connect ( ( mem_fun (*this, &MackieControlProtocol::notify_parameter_changed) ) );
// receive rude solo changed
connections_back = session->SoloActive.connect( ( mem_fun (*this, &MackieControlProtocol::notify_solo_active_changed) ) );
cout << "MIDI::Port::ALSA_Sequencer " << MIDI::Port::ALSA_Sequencer << endl;
cout << "MIDI::Port::Unknown " << MIDI::Port::Unknown << endl;
#endif
- if ( string( midi_port.device() ) == string( "ardour" ) )
+ if ( string( midi_port.device() ) == string( "ardour" ) && midi_port.type() == MIDI::Port::ALSA_Sequencer )
{
throw MackieControlException( "The Mackie MCU driver will not use a port with device=ardour" );
}
shared_ptr<Route> MackieControlProtocol::master_route()
{
- boost::shared_ptr<IO> mo = session->master_out ();
- return boost::dynamic_pointer_cast<Route>(mo);
+ return session->master_out ();
}
Strip & MackieControlProtocol::master_strip()
return *node;
}
-int MackieControlProtocol::set_state( const XMLNode & node )
+int MackieControlProtocol::set_state (const XMLNode & node, int version)
{
#ifdef DEBUG
cout << "MackieControlProtocol::set_state: active " << _active << endl;
case Control::type_pot:
if ( control.group().is_strip() )
{
- if ( route != 0 )
+ if ( route != 0 && route->panner() )
{
// pan for mono input routes, or stereo linked panners
- if ( route->panner().npanners() == 1 || ( route->panner().npanners() == 2 && route->panner().linked() ) )
+ if ( route->panner()->npanners() == 1 || ( route->panner()->npanners() == 2 && route->panner()->linked() ) )
{
// assume pan for now
float xpos;
- route->panner().streampanner (0).get_effective_position (xpos);
+ route->panner()->streampanner (0).get_effective_position (xpos);
// calculate new value, and trim
xpos += state.delta * state.sign;
else if ( xpos < 0.0 )
xpos = 0.0;
- route->panner().streampanner (0).set_position( xpos );
+ route->panner()->streampanner (0).set_position( xpos );
}
}
else
}
}
-void MackieControlProtocol::notify_active_changed( RouteSignal * route_signal )
+void MackieControlProtocol::notify_active_changed (RouteSignal *)
{
try
{
try
{
Pot & pot = route_signal->strip().vpot();
- const Panner & panner = route_signal->route()->panner();
- if ( panner.npanners() == 1 || ( panner.npanners() == 2 && panner.linked() ) )
+ boost::shared_ptr<Panner> panner = route_signal->route()->panner();
+ if ( (panner && panner->npanners() == 1) || ( panner->npanners() == 2 && panner->linked() ) )
{
float pos;
- route_signal->route()->panner().streampanner(0).get_effective_position( pos );
+ route_signal->route()->panner()->streampanner(0).get_effective_position( pos );
// cache the MidiByteArray here, because the mackie led control is much lower
// resolution than the panner control. So we save lots of byte
notify_gain_changed( &rs, false );
}
- ARDOUR::AutoState panner_state = rs.route()->panner().automation_state();
- if ( panner_state == Touch || panner_state == Play )
- {
- notify_panner_changed( &rs, false );
+ if ( rs.route()->panner() ) {
+ ARDOUR::AutoState panner_state = rs.route()->panner()->automation_state();
+ if ( panner_state == Touch || panner_state == Play )
+ {
+ notify_panner_changed( &rs, false );
+ }
}
_automation_last.start();
}
// Transport Buttons
/////////////////////////////////////
-LedState MackieControlProtocol::frm_left_press( Button & button )
+LedState MackieControlProtocol::frm_left_press (Button &)
{
// can use first_mark_before/after as well
unsigned long elapsed = _frm_left_last.restart();
return on;
}
-LedState MackieControlProtocol::frm_left_release( Button & button )
+LedState MackieControlProtocol::frm_left_release (Button &)
{
return off;
}
-LedState MackieControlProtocol::frm_right_press( Button & button )
+LedState MackieControlProtocol::frm_right_press (Button &)
{
// can use first_mark_before/after as well
Location * loc = session->locations()->first_location_after (
return on;
}
-LedState MackieControlProtocol::frm_right_release( Button & button )
+LedState MackieControlProtocol::frm_right_release (Button &)
{
return off;
}
-LedState MackieControlProtocol::stop_press( Button & button )
+LedState MackieControlProtocol::stop_press (Button &)
{
session->request_stop();
return on;
}
-LedState MackieControlProtocol::stop_release( Button & button )
+LedState MackieControlProtocol::stop_release (Button &)
{
return session->transport_stopped();
}
-LedState MackieControlProtocol::play_press( Button & button )
+LedState MackieControlProtocol::play_press (Button &)
{
session->request_transport_speed( 1.0 );
return on;
}
-LedState MackieControlProtocol::play_release( Button & button )
+LedState MackieControlProtocol::play_release (Button &)
{
return session->transport_rolling();
}
-LedState MackieControlProtocol::record_press( Button & button )
+LedState MackieControlProtocol::record_press (Button &)
{
if ( session->get_record_enabled() )
session->disable_record( false );
return on;
}
-LedState MackieControlProtocol::record_release( Button & button )
+LedState MackieControlProtocol::record_release (Button &)
{
if ( session->get_record_enabled() )
{
return off;
}
-LedState MackieControlProtocol::rewind_press( Button & button )
+LedState MackieControlProtocol::rewind_press (Button &)
{
_jog_wheel.push( JogWheel::speed );
_jog_wheel.transport_direction( -1 );
return on;
}
-LedState MackieControlProtocol::rewind_release( Button & button )
+LedState MackieControlProtocol::rewind_release (Button &)
{
_jog_wheel.pop();
_jog_wheel.transport_direction( 0 );
return off;
}
-LedState MackieControlProtocol::ffwd_press( Button & button )
+LedState MackieControlProtocol::ffwd_press (Button &)
{
_jog_wheel.push( JogWheel::speed );
_jog_wheel.transport_direction( 1 );
return on;
}
-LedState MackieControlProtocol::ffwd_release( Button & button )
+LedState MackieControlProtocol::ffwd_release (Button &)
{
_jog_wheel.pop();
_jog_wheel.transport_direction( 0 );
return off;
}
-LedState MackieControlProtocol::loop_press( Button & button )
+LedState MackieControlProtocol::loop_press (Button &)
{
session->request_play_loop( !session->get_play_loop() );
return on;
}
-LedState MackieControlProtocol::loop_release( Button & button )
+LedState MackieControlProtocol::loop_release (Button &)
{
return session->get_play_loop();
}
-LedState MackieControlProtocol::punch_in_press( Button & button )
+LedState MackieControlProtocol::punch_in_press (Button &)
{
- bool state = !Config->get_punch_in();
- Config->set_punch_in( state );
+ bool state = !session->config.get_punch_in();
+ session->config.set_punch_in( state );
return state;
}
-LedState MackieControlProtocol::punch_in_release( Button & button )
+LedState MackieControlProtocol::punch_in_release (Button &)
{
- return Config->get_punch_in();
+ return session->config.get_punch_in();
}
-LedState MackieControlProtocol::punch_out_press( Button & button )
+LedState MackieControlProtocol::punch_out_press (Button &)
{
- bool state = !Config->get_punch_out();
- Config->set_punch_out( state );
+ bool state = !session->config.get_punch_out();
+ session->config.set_punch_out( state );
return state;
}
-LedState MackieControlProtocol::punch_out_release( Button & button )
+LedState MackieControlProtocol::punch_out_release (Button &)
{
- return Config->get_punch_out();
+ return session->config.get_punch_out();
}
-LedState MackieControlProtocol::home_press( Button & button )
+LedState MackieControlProtocol::home_press (Button &)
{
session->goto_start();
return on;
}
-LedState MackieControlProtocol::home_release( Button & button )
+LedState MackieControlProtocol::home_release (Button &)
{
return off;
}
-LedState MackieControlProtocol::end_press( Button & button )
+LedState MackieControlProtocol::end_press (Button &)
{
session->goto_end();
return on;
}
-LedState MackieControlProtocol::end_release( Button & button )
+LedState MackieControlProtocol::end_release (Button &)
{
return off;
}
-LedState MackieControlProtocol::clicking_press( Button & button )
+LedState MackieControlProtocol::clicking_press (Button &)
{
bool state = !Config->get_clicking();
Config->set_clicking( state );
return state;
}
-LedState MackieControlProtocol::clicking_release( Button & button )
+LedState MackieControlProtocol::clicking_release (Button &)
{
return Config->get_clicking();
}
-LedState MackieControlProtocol::global_solo_press( Button & button )
+LedState MackieControlProtocol::global_solo_press (Button &)
{
bool state = !session->soloing();
session->set_all_solo ( state );
return state;
}
-LedState MackieControlProtocol::global_solo_release( Button & button )
+LedState MackieControlProtocol::global_solo_release (Button &)
{
return session->soloing();
}
// Session signals
///////////////////////////////////////////
-void MackieControlProtocol::notify_parameter_changed( const char * name_str )
+void MackieControlProtocol::notify_parameter_changed (std::string const & p)
{
- string name( name_str );
- if ( name == "punch-in" )
+ if ( p == "punch-in" )
{
- update_global_button( "punch_in", Config->get_punch_in() );
+ update_global_button( "punch_in", session->config.get_punch_in() );
}
- else if ( name == "punch-out" )
+ else if ( p == "punch-out" )
{
- update_global_button( "punch_out", Config->get_punch_out() );
+ update_global_button( "punch_out", session->config.get_punch_out() );
}
- else if ( name == "clicking" )
+ else if ( p == "clicking" )
{
update_global_button( "clicking", Config->get_clicking() );
}
else
{
#ifdef DEBUG
- cout << "parameter changed: " << name << endl;
+ cout << "parameter changed: " << p << endl;
#endif
}
}
/////////////////////////////////////
// Bank Switching
/////////////////////////////////////
-LedState MackieControlProtocol::left_press( Button & button )
+LedState MackieControlProtocol::left_press (Button &)
{
Sorted sorted = get_sorted_routes();
if ( sorted.size() > route_table.size() )
}
}
-LedState MackieControlProtocol::left_release( Button & button )
+LedState MackieControlProtocol::left_release (Button &)
{
return off;
}
-LedState MackieControlProtocol::right_press( Button & button )
+LedState MackieControlProtocol::right_press (Button &)
{
Sorted sorted = get_sorted_routes();
if ( sorted.size() > route_table.size() )
}
}
-LedState MackieControlProtocol::right_release( Button & button )
+LedState MackieControlProtocol::right_release (Button &)
{
return off;
}
-LedState MackieControlProtocol::channel_left_press( Button & button )
+LedState MackieControlProtocol::channel_left_press (Button &)
{
Sorted sorted = get_sorted_routes();
if ( sorted.size() > route_table.size() )
}
}
-LedState MackieControlProtocol::channel_left_release( Button & button )
+LedState MackieControlProtocol::channel_left_release (Button &)
{
return off;
}
-LedState MackieControlProtocol::channel_right_press( Button & button )
+LedState MackieControlProtocol::channel_right_press (Button &)
{
Sorted sorted = get_sorted_routes();
if ( sorted.size() > route_table.size() )
}
}
-LedState MackieControlProtocol::channel_right_release( Button & button )
+LedState MackieControlProtocol::channel_right_release (Button &)
{
return off;
}
/////////////////////////////////////
// Functions
/////////////////////////////////////
-LedState MackieControlProtocol::marker_press( Button & button )
+LedState MackieControlProtocol::marker_press (Button &)
{
// cut'n'paste from LocationUI::add_new_location()
string markername;
return on;
}
-LedState MackieControlProtocol::marker_release( Button & button )
+LedState MackieControlProtocol::marker_release (Button &)
{
return off;
}
;
}
-LedState MackieControlProtocol::drop_press( Button & button )
+LedState MackieControlProtocol::drop_press (Button &)
{
session->remove_last_capture();
return on;
}
-LedState MackieControlProtocol::drop_release( Button & button )
+LedState MackieControlProtocol::drop_release (Button &)
{
return off;
}
-LedState MackieControlProtocol::save_press( Button & button )
+LedState MackieControlProtocol::save_press (Button &)
{
session->save_state( "" );
return on;
}
-LedState MackieControlProtocol::save_release( Button & button )
+LedState MackieControlProtocol::save_release (Button &)
{
return off;
}
-LedState MackieControlProtocol::smpte_beats_press( Button & )
+LedState MackieControlProtocol::smpte_beats_press (Button &)
{
switch ( _timecode_type )
{