REGISTER_CALLBACK (serv, "/toggle_all_rec_enables", "f", toggle_all_rec_enables);
REGISTER_CALLBACK (serv, "/all_tracks_rec_in", "f", all_tracks_rec_in);
REGISTER_CALLBACK (serv, "/all_tracks_rec_out", "f", all_tracks_rec_out);
+ REGISTER_CALLBACK (serv, "/cancel_all_solos", "f", cancel_all_solos);
REGISTER_CALLBACK (serv, "/remove_marker", "", remove_marker_at_playhead);
REGISTER_CALLBACK (serv, "/remove_marker", "f", remove_marker_at_playhead);
REGISTER_CALLBACK (serv, "/jump_bars", "f", jump_by_bars);
lo_message_free (reply);
}
+int
+OSC::cancel_all_solos ()
+{
+ session->clear_all_solo_state (session->get_routes());
+ return 0;
+}
+
int
OSC::set_surface (uint32_t b_size, uint32_t strips, uint32_t fb, uint32_t gm, lo_message msg)
{
PATH_CALLBACK(toggle_all_rec_enables);
PATH_CALLBACK(all_tracks_rec_in);
PATH_CALLBACK(all_tracks_rec_out);
+ PATH_CALLBACK(cancel_all_solos);
PATH_CALLBACK(remove_marker_at_playhead);
PATH_CALLBACK(mark_in);
PATH_CALLBACK(mark_out);
void notify_vca_added (ARDOUR::VCAList &);
void update_clock ();
+ int cancel_all_solos ();
bool periodic (void);
sigc::connection periodic_connection;
PBD::ScopedConnectionList session_connections;
// session feedback
session->StateSaved.connect(session_connections, MISSING_INVALIDATOR, boost::bind (&OSCGlobalObserver::send_session_saved, this, _1), OSC::instance());
send_session_saved (session->snap_name());
+ session->SoloActive.connect(session_connections, MISSING_INVALIDATOR, boost::bind (&OSCGlobalObserver::solo_active, this, _1), OSC::instance());
+ solo_active (session->soloing() || session->listening());
/*
* Maybe (many) more
}
+void
+OSCGlobalObserver::solo_active (bool active)
+{
+ lo_message msg = lo_message_new ();
+ lo_message_add_float (msg, (float) active);
+ lo_send_message (addr, "/cancel_all_solos", msg);
+ lo_message_free (msg);
+}
void send_transport_state_changed(void);
void send_record_state_changed (void);
void send_session_saved (std::string name);
+ void solo_active (bool active);
};
#endif /* __osc_oscglobalobserver_h__ */