summaryrefslogtreecommitdiff
path: root/libs/surfaces
diff options
context:
space:
mode:
authorLen Ovens <len@ovenwerks.net>2016-10-28 13:45:30 -0700
committerLen Ovens <len@ovenwerks.net>2016-10-28 13:45:30 -0700
commit4eb2da491f2d7da25e676d5ed640b2d830320fee (patch)
tree9858b1f36554a6b2cd59587f712ae66d21ab44d4 /libs/surfaces
parent8de0788f7b7ac489d24199beeb13029c94a2019e (diff)
OSC: simplify Global feedback (remove repetitive code)
Diffstat (limited to 'libs/surfaces')
-rw-r--r--libs/surfaces/osc/osc_global_observer.cc39
-rw-r--r--libs/surfaces/osc/osc_global_observer.h9
2 files changed, 21 insertions, 27 deletions
diff --git a/libs/surfaces/osc/osc_global_observer.cc b/libs/surfaces/osc/osc_global_observer.cc
index f4f383471d..69ab2b3a1a 100644
--- a/libs/surfaces/osc/osc_global_observer.cc
+++ b/libs/surfaces/osc/osc_global_observer.cc
@@ -115,8 +115,8 @@ OSCGlobalObserver::OSCGlobalObserver (Session& s, lo_address a, uint32_t gm, std
send_record_state_changed ();
// 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->StateSaved.connect(session_connections, MISSING_INVALIDATOR, boost::bind (&OSCGlobalObserver::text_message, this, X_("/session_name"), _1), OSC::instance());
+ text_message (X_("/session_name"), 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());
@@ -154,10 +154,7 @@ OSCGlobalObserver::tick ()
os << ':';
os << setw(2) << setfill('0') << timecode.frames;
- lo_message msg = lo_message_new ();
- lo_message_add_string (msg, os.str().c_str());
- lo_send_message (addr, "/position/smpte", msg);
- lo_message_free (msg);
+ text_message ("/position/smpte", os.str());
}
if (feedback[5]) { // Bar beat enabled
Timecode::BBT_Time bbt_time;
@@ -173,10 +170,7 @@ OSCGlobalObserver::tick ()
os << '|';
os << setw(4) << setfill('0') << bbt_time.ticks;
- lo_message msg = lo_message_new ();
- lo_message_add_string (msg, os.str().c_str());
- lo_send_message (addr, "/position/bbt", msg);
- lo_message_free (msg);
+ text_message ("/position/bbt", os.str());
}
if (feedback[11]) { // minutes/seconds enabled
framepos_t left = now_frame;
@@ -198,18 +192,12 @@ OSCGlobalObserver::tick ()
os << '.';
os << setw(3) << setfill('0') << millisecs;
- lo_message msg = lo_message_new ();
- lo_message_add_string (msg, os.str().c_str());
- lo_send_message (addr, "/position/time", msg);
- lo_message_free (msg);
+ text_message ("/position/time", os.str());
}
if (feedback[10]) { // samples
ostringstream os;
os << now_frame;
- lo_message msg = lo_message_new ();
- lo_message_add_string (msg, os.str().c_str());
- lo_send_message (addr, "/position/samples", msg);
- lo_message_free (msg);
+ text_message ("/position/samples", os.str());
}
_last_frame = now_frame;
}
@@ -363,20 +351,21 @@ OSCGlobalObserver::send_record_state_changed ()
}
void
-OSCGlobalObserver::send_session_saved (std::string name)
+OSCGlobalObserver::solo_active (bool active)
{
lo_message msg = lo_message_new ();
- lo_message_add_string (msg, name.c_str());
- lo_send_message (addr, "/session_name", msg);
+ lo_message_add_float (msg, (float) active);
+ lo_send_message (addr, "/cancel_all_solos", msg);
lo_message_free (msg);
-
}
void
-OSCGlobalObserver::solo_active (bool active)
+OSCGlobalObserver::text_message (string path, std::string text)
{
lo_message msg = lo_message_new ();
- lo_message_add_float (msg, (float) active);
- lo_send_message (addr, "/cancel_all_solos", msg);
+
+ lo_message_add_string (msg, text.c_str());
+
+ lo_send_message (addr, path.c_str(), msg);
lo_message_free (msg);
}
diff --git a/libs/surfaces/osc/osc_global_observer.h b/libs/surfaces/osc/osc_global_observer.h
index 845b9b981e..38613caf0f 100644
--- a/libs/surfaces/osc/osc_global_observer.h
+++ b/libs/surfaces/osc/osc_global_observer.h
@@ -44,6 +44,11 @@ class OSCGlobalObserver
PBD::ScopedConnectionList strip_connections;
PBD::ScopedConnectionList session_connections;
+ enum STRIP {
+ Master,
+ Monitor,
+ };
+
lo_address addr;
std::string path;
@@ -57,10 +62,10 @@ class OSCGlobalObserver
void send_change_message (std::string path, boost::shared_ptr<PBD::Controllable> controllable);
void send_gain_message (std::string path, boost::shared_ptr<PBD::Controllable> controllable);
void send_trim_message (std::string path, boost::shared_ptr<PBD::Controllable> controllable);
- void send_transport_state_changed(void);
+ void send_transport_state_changed (void);
void send_record_state_changed (void);
- void send_session_saved (std::string name);
void solo_active (bool active);
+ void text_message (std::string path, std::string text);
};
#endif /* __osc_oscglobalobserver_h__ */