mirror of
https://github.com/Ardour/ardour.git
synced 2026-01-08 22:55:44 +01:00
OSC: Add global soloing indicator/cancel
This commit is contained in:
parent
0fdbbac99d
commit
b77b3cbe22
4 changed files with 21 additions and 0 deletions
|
|
@ -443,6 +443,7 @@ OSC::register_callbacks()
|
|||
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);
|
||||
|
|
@ -1176,6 +1177,13 @@ OSC::routes_list (lo_message msg)
|
|||
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)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -245,6 +245,7 @@ class OSC : public ARDOUR::ControlProtocol, public AbstractUI<OSCUIRequest>
|
|||
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);
|
||||
|
|
@ -523,6 +524,7 @@ class OSC : public ARDOUR::ControlProtocol, public AbstractUI<OSCUIRequest>
|
|||
void notify_vca_added (ARDOUR::VCAList &);
|
||||
|
||||
void update_clock ();
|
||||
int cancel_all_solos ();
|
||||
bool periodic (void);
|
||||
sigc::connection periodic_connection;
|
||||
PBD::ScopedConnectionList session_connections;
|
||||
|
|
|
|||
|
|
@ -115,6 +115,8 @@ OSCGlobalObserver::OSCGlobalObserver (Session& s, lo_address a, uint32_t gm, std
|
|||
// 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
|
||||
|
|
@ -372,3 +374,11 @@ OSCGlobalObserver::send_session_saved (std::string name)
|
|||
|
||||
}
|
||||
|
||||
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);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -60,6 +60,7 @@ class OSCGlobalObserver
|
|||
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__ */
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue