summaryrefslogtreecommitdiff
path: root/libs/surfaces
diff options
context:
space:
mode:
Diffstat (limited to 'libs/surfaces')
-rw-r--r--libs/surfaces/control_protocol/control_protocol.cc83
-rw-r--r--libs/surfaces/control_protocol/control_protocol/control_protocol.h8
-rw-r--r--libs/surfaces/generic_midi/generic_midi_control_protocol.cc2
-rw-r--r--libs/surfaces/mackie/mackie_control_protocol.cc60
-rw-r--r--libs/surfaces/mackie/mackie_control_protocol.h4
-rw-r--r--libs/surfaces/mackie/strip.cc1
-rw-r--r--libs/surfaces/osc/osc.cc33
-rw-r--r--libs/surfaces/osc/osc_controllable.cc4
-rw-r--r--libs/surfaces/osc/osc_route_observer.cc6
9 files changed, 69 insertions, 132 deletions
diff --git a/libs/surfaces/control_protocol/control_protocol.cc b/libs/surfaces/control_protocol/control_protocol.cc
index f413ad82d6..2562edebcb 100644
--- a/libs/surfaces/control_protocol/control_protocol.cc
+++ b/libs/surfaces/control_protocol/control_protocol.cc
@@ -46,10 +46,10 @@ PBD::Signal0<void> ControlProtocol::VerticalZoomOutAll;
PBD::Signal0<void> ControlProtocol::VerticalZoomInSelected;
PBD::Signal0<void> ControlProtocol::VerticalZoomOutSelected;
PBD::Signal1<void,RouteNotificationListPtr> ControlProtocol::TrackSelectionChanged;
-PBD::Signal1<void,uint32_t> ControlProtocol::AddRouteToSelection;
-PBD::Signal1<void,uint32_t> ControlProtocol::SetRouteSelection;
-PBD::Signal1<void,uint32_t> ControlProtocol::ToggleRouteSelection;
-PBD::Signal1<void,uint32_t> ControlProtocol::RemoveRouteFromSelection;
+PBD::Signal1<void,uint64_t> ControlProtocol::AddRouteToSelection;
+PBD::Signal1<void,uint64_t> ControlProtocol::SetRouteSelection;
+PBD::Signal1<void,uint64_t> ControlProtocol::ToggleRouteSelection;
+PBD::Signal1<void,uint64_t> ControlProtocol::RemoveRouteFromSelection;
PBD::Signal0<void> ControlProtocol::ClearRouteSelection;
PBD::Signal0<void> ControlProtocol::StepTracksDown;
PBD::Signal0<void> ControlProtocol::StepTracksUp;
@@ -77,82 +77,18 @@ ControlProtocol::set_active (bool yn)
void
ControlProtocol::next_track (uint32_t initial_id)
{
- uint32_t limit = session->nroutes();
- boost::shared_ptr<Route> cr = route_table[0];
- uint32_t id;
-
- if (cr) {
- id = cr->remote_control_id ();
- } else {
- id = 0;
- }
-
- if (id == limit) {
- id = 0;
- } else {
- id++;
- }
-
- while (id <= limit) {
- if ((cr = session->route_by_remote_id (id)) != 0) {
- break;
- }
- id++;
- }
-
- if (id >= limit) {
- id = 0;
- while (id != initial_id) {
- if ((cr = session->route_by_remote_id (id)) != 0) {
- break;
- }
- id++;
- }
- }
-
- route_table[0] = cr;
+ // STRIPABLE route_table[0] = _session->get_nth_stripable (++initial_id, RemoteControlID::Route);
}
void
ControlProtocol::prev_track (uint32_t initial_id)
{
- uint32_t limit = session->nroutes();
- boost::shared_ptr<Route> cr = route_table[0];
- int32_t id;
-
- if (cr) {
- id = cr->remote_control_id ();
- } else {
- id = 0;
- }
-
- if (id == 0) {
- id = limit;
- } else {
- id--;
- }
-
- while (id >= 0) {
- if ((cr = session->route_by_remote_id (id)) != 0) {
- break;
- }
- id--;
- }
-
- if (id < 0) {
- uint32_t i = limit;
- while (i > initial_id) {
- if ((cr = session->route_by_remote_id (i)) != 0) {
- break;
- }
- i--;
- }
+ if (!initial_id) {
+ return;
}
-
- route_table[0] = cr;
+ // STRIPABLE route_table[0] = _session->get_nth_stripable (--initial_id, RemoteControlID::Route);
}
-
void
ControlProtocol::set_route_table_size (uint32_t size)
{
@@ -176,6 +112,7 @@ ControlProtocol::set_route_table (uint32_t table_index, boost::shared_ptr<ARDOUR
bool
ControlProtocol::set_route_table (uint32_t table_index, uint32_t remote_control_id)
{
+#if 0 // STRIPABLE
boost::shared_ptr<Route> r = session->route_by_remote_id (remote_control_id);
if (!r) {
@@ -183,7 +120,7 @@ ControlProtocol::set_route_table (uint32_t table_index, uint32_t remote_control_
}
set_route_table (table_index, r);
-
+#endif
return true;
}
diff --git a/libs/surfaces/control_protocol/control_protocol/control_protocol.h b/libs/surfaces/control_protocol/control_protocol/control_protocol.h
index 71e875419a..d0294511f6 100644
--- a/libs/surfaces/control_protocol/control_protocol/control_protocol.h
+++ b/libs/surfaces/control_protocol/control_protocol/control_protocol.h
@@ -78,10 +78,10 @@ class LIBCONTROLCP_API ControlProtocol : public PBD::Stateful, public PBD::Scope
static PBD::Signal0<void> StepTracksDown;
static PBD::Signal0<void> StepTracksUp;
- static PBD::Signal1<void,uint32_t> AddRouteToSelection;
- static PBD::Signal1<void,uint32_t> SetRouteSelection;
- static PBD::Signal1<void,uint32_t> ToggleRouteSelection;
- static PBD::Signal1<void,uint32_t> RemoveRouteFromSelection;
+ static PBD::Signal1<void,uint64_t> AddRouteToSelection;
+ static PBD::Signal1<void,uint64_t> SetRouteSelection;
+ static PBD::Signal1<void,uint64_t> ToggleRouteSelection;
+ static PBD::Signal1<void,uint64_t> RemoveRouteFromSelection;
static PBD::Signal0<void> ClearRouteSelection;
/* signals that one UI (e.g. the GUI) can emit to get all other UI's to
diff --git a/libs/surfaces/generic_midi/generic_midi_control_protocol.cc b/libs/surfaces/generic_midi/generic_midi_control_protocol.cc
index ec6e82222f..6277adc84e 100644
--- a/libs/surfaces/generic_midi/generic_midi_control_protocol.cc
+++ b/libs/surfaces/generic_midi/generic_midi_control_protocol.cc
@@ -95,7 +95,7 @@ GenericMidiControlProtocol::GenericMidiControlProtocol (Session& s)
/* this one is cross-thread */
- Route::RemoteControlIDChange.connect (*this, MISSING_INVALIDATOR, boost::bind (&GenericMidiControlProtocol::reset_controllables, this), midi_ui_context());
+ Stripable::PresentationInfoChange.connect (*this, MISSING_INVALIDATOR, boost::bind (&GenericMidiControlProtocol::reset_controllables, this), midi_ui_context());
/* Catch port connections and disconnections (cross-thread) */
ARDOUR::AudioEngine::instance()->PortConnectedOrDisconnected.connect (port_connection, MISSING_INVALIDATOR,
diff --git a/libs/surfaces/mackie/mackie_control_protocol.cc b/libs/surfaces/mackie/mackie_control_protocol.cc
index df46464334..eaff43121f 100644
--- a/libs/surfaces/mackie/mackie_control_protocol.cc
+++ b/libs/surfaces/mackie/mackie_control_protocol.cc
@@ -242,21 +242,21 @@ MackieControlProtocol::route_is_locked_to_strip (boost::shared_ptr<Route> r) con
}
// predicate for sort call in get_sorted_routes
-struct RouteByRemoteId
+struct RouteByPresentationOrder
{
bool operator () (const boost::shared_ptr<Route> & a, const boost::shared_ptr<Route> & b) const
{
- return a->remote_control_id() < b->remote_control_id();
+ return a->presentation_info() < b->presentation_info();
}
bool operator () (const Route & a, const Route & b) const
{
- return a.remote_control_id() < b.remote_control_id();
+ return a.presentation_info() < b.presentation_info();
}
bool operator () (const Route * a, const Route * b) const
{
- return a->remote_control_id() < b->remote_control_id();
+ return a->presentation_info() < b->presentation_info();
}
};
@@ -267,30 +267,22 @@ MackieControlProtocol::get_sorted_routes()
// fetch all routes
boost::shared_ptr<RouteList> routes = session->get_routes();
- set<uint32_t> remote_ids;
+ set<PresentationInfo> remote_ids;
- // routes with remote_id 0 should never be added
- // TODO verify this with ardour devs
- // remote_ids.insert (0);
-
- // sort in remote_id order, and exclude master, control and hidden routes
+ // sort in presentation order, and exclude master, control and hidden routes
// and any routes that are already set.
for (RouteList::iterator it = routes->begin(); it != routes->end(); ++it) {
boost::shared_ptr<Route> route = *it;
- if (remote_ids.find (route->remote_control_id()) != remote_ids.end()) {
- continue;
- }
-
if (route->is_auditioner() || route->is_master() || route->is_monitor()) {
continue;
}
/* don't include locked routes */
- if (route_is_locked_to_strip(route)) {
+ if (route_is_locked_to_strip (route)) {
continue;
}
@@ -298,13 +290,13 @@ MackieControlProtocol::get_sorted_routes()
case Mixer:
if (! is_hidden(route)) {
sorted.push_back (route);
- remote_ids.insert (route->remote_control_id());
+ remote_ids.insert (route->presentation_info());
}
break;
case AudioTracks:
if (is_audio_track(route) && !is_hidden(route)) {
sorted.push_back (route);
- remote_ids.insert (route->remote_control_id());
+ remote_ids.insert (route->presentation_info());
}
break;
case Busses:
@@ -312,20 +304,20 @@ MackieControlProtocol::get_sorted_routes()
#ifdef MIXBUS
if (route->mixbus()) {
sorted.push_back (route);
- remote_ids.insert (route->remote_control_id());
+ remote_ids.insert (route->presentation_info());
}
#endif
} else {
if (!is_track(route) && !is_hidden(route)) {
sorted.push_back (route);
- remote_ids.insert (route->remote_control_id());
+ remote_ids.insert (route->presentation_info());
}
}
break;
case MidiTracks:
if (is_midi_track(route) && !is_hidden(route)) {
sorted.push_back (route);
- remote_ids.insert (route->remote_control_id());
+ remote_ids.insert (route->presentation_info());
}
break;
case Plugins:
@@ -338,27 +330,27 @@ MackieControlProtocol::get_sorted_routes()
#endif
{
sorted.push_back (route);
- remote_ids.insert (route->remote_control_id());
+ remote_ids.insert (route->presentation_info());
}
break;
case Hidden: // Show all the tracks we have hidden
if (is_hidden(route)) {
// maybe separate groups
sorted.push_back (route);
- remote_ids.insert (route->remote_control_id());
+ remote_ids.insert (route->presentation_info());
}
break;
case Selected: // For example: a group (this is USER)
if (selected(route) && !is_hidden(route)) {
sorted.push_back (route);
- remote_ids.insert (route->remote_control_id());
+ remote_ids.insert (route->presentation_info());
}
break;
}
}
- sort (sorted.begin(), sorted.end(), RouteByRemoteId());
+ sort (sorted.begin(), sorted.end(), RouteByPresentationOrder());
return sorted;
}
@@ -716,7 +708,6 @@ MackieControlProtocol::connect_session_signals()
{
// receive routes added
session->RouteAdded.connect(session_connections, MISSING_INVALIDATOR, boost::bind (&MackieControlProtocol::notify_route_added, this, _1), this);
- session->RouteAddedOrRemoved.connect(session_connections, MISSING_INVALIDATOR, boost::bind (&MackieControlProtocol::notify_route_added_or_removed, this), this);
// receive record state toggled
session->RecordStateChanged.connect(session_connections, MISSING_INVALIDATOR, boost::bind (&MackieControlProtocol::notify_record_state_changed, this), this);
// receive transport state changed
@@ -733,7 +724,7 @@ MackieControlProtocol::connect_session_signals()
Sorted sorted = get_sorted_routes();
for (Sorted::iterator it = sorted.begin(); it != sorted.end(); ++it) {
- (*it)->RemoteControlIDChanged.connect (route_connections, MISSING_INVALIDATOR, boost::bind (&MackieControlProtocol::notify_remote_id_changed, this), this);
+ (*it)->PresentationInfoChanged.connect (route_connections, MISSING_INVALIDATOR, boost::bind (&MackieControlProtocol::notify_presentation_info_changed, this), this);
}
}
@@ -1251,7 +1242,7 @@ void MackieControlProtocol::notify_parameter_changed (std::string const & p)
}
void
-MackieControlProtocol::notify_route_added_or_removed ()
+MackieControlProtocol::notify_route_removed ()
{
Glib::Threads::Mutex::Lock lm (surfaces_lock);
for (Surfaces::iterator s = surfaces.begin(); s != surfaces.end(); ++s) {
@@ -1291,7 +1282,7 @@ MackieControlProtocol::notify_route_added (ARDOUR::RouteList & rl)
typedef ARDOUR::RouteList ARS;
for (ARS::iterator it = rl.begin(); it != rl.end(); ++it) {
- (*it)->RemoteControlIDChanged.connect (route_connections, MISSING_INVALIDATOR, boost::bind (&MackieControlProtocol::notify_remote_id_changed, this), this);
+ (*it)->PresentationInfoChanged.connect (route_connections, MISSING_INVALIDATOR, boost::bind (&MackieControlProtocol::notify_presentation_info_changed, this), this);
}
}
@@ -1320,7 +1311,7 @@ MackieControlProtocol::notify_solo_active_changed (bool active)
}
void
-MackieControlProtocol::notify_remote_id_changed()
+MackieControlProtocol::notify_presentation_info_changed()
{
{
Glib::Threads::Mutex::Lock lm (surfaces_lock);
@@ -2120,12 +2111,15 @@ MackieControlProtocol::select_range ()
for (RouteList::iterator r = routes.begin(); r != routes.end(); ++r) {
if (main_modifier_state() == MODIFIER_SHIFT) {
- ToggleRouteSelection ((*r)->remote_control_id ());
+ /* XXX can only use numeric part of ID at present */
+ ToggleRouteSelection ((*r)->presentation_info ().global_order());
} else {
if (r == routes.begin()) {
- SetRouteSelection ((*r)->remote_control_id());
+ /* XXX can only use numeric part of ID at present */
+ SetRouteSelection ((*r)->presentation_info().global_order());
} else {
- AddRouteToSelection ((*r)->remote_control_id());
+ /* XXX can only use numeric part of ID at present */
+ AddRouteToSelection ((*r)->presentation_info().global_order());
}
}
}
@@ -2441,7 +2435,7 @@ MackieControlProtocol::is_hidden (boost::shared_ptr<Route> r) const
if (!r) {
return false;
}
- return (((r->remote_control_id()) >>31) != 0);
+ return (r->presentation_info().flags() & PresentationInfo::Hidden);
}
bool
diff --git a/libs/surfaces/mackie/mackie_control_protocol.h b/libs/surfaces/mackie/mackie_control_protocol.h
index 667f0c36cf..37d0b69bb3 100644
--- a/libs/surfaces/mackie/mackie_control_protocol.h
+++ b/libs/surfaces/mackie/mackie_control_protocol.h
@@ -206,9 +206,9 @@ class MackieControlProtocol
void handle_button_event (Mackie::Surface&, Mackie::Button& button, Mackie::ButtonState);
void notify_subview_route_deleted ();
- void notify_route_added_or_removed ();
+ void notify_route_removed ();
void notify_route_added (ARDOUR::RouteList &);
- void notify_remote_id_changed();
+ void notify_presentation_info_changed();
void recalibrate_faders ();
void toggle_backlight ();
diff --git a/libs/surfaces/mackie/strip.cc b/libs/surfaces/mackie/strip.cc
index 9c3fc21bda..95371bc212 100644
--- a/libs/surfaces/mackie/strip.cc
+++ b/libs/surfaces/mackie/strip.cc
@@ -321,6 +321,7 @@ Strip::notify_active_changed ()
void
Strip::notify_route_deleted ()
{
+ _surface->mcp().notify_route_removed ();
_surface->mcp().refresh_current_bank();
}
diff --git a/libs/surfaces/osc/osc.cc b/libs/surfaces/osc/osc.cc
index d758e29f03..1d87cdebc5 100644
--- a/libs/surfaces/osc/osc.cc
+++ b/libs/surfaces/osc/osc.cc
@@ -658,7 +658,7 @@ OSC::send_current_value (const char* path, lo_arg** argv, int argc, lo_message m
lo_message_add_string (reply, "bad syntax");
} else {
id = argv[0]->i;
- r = session->route_by_remote_id (id);
+ r = session->get_remote_nth_route (id);
if (!r) {
lo_message_add_string (reply, "not found");
@@ -729,7 +729,7 @@ OSC::catchall (const char *path, const char* types, lo_arg **argv, int argc, lo_
} else {
for (int n = 0; n < argc; ++n) {
- boost::shared_ptr<Route> r = session->route_by_remote_id (argv[n]->i);
+ boost::shared_ptr<Route> r = session->get_remote_nth_route (argv[n]->i);
if (!r) {
lo_message_add_string (reply, "not found");
@@ -752,7 +752,7 @@ OSC::catchall (const char *path, const char* types, lo_arg **argv, int argc, lo_
for (int n = 0; n < argc; ++n) {
- boost::shared_ptr<Route> r = session->route_by_remote_id (argv[n]->i);
+ boost::shared_ptr<Route> r = session->get_remote_nth_route (argv[n]->i);
if (r) {
end_listen (r, lo_message_get_source (msg));
@@ -949,7 +949,7 @@ OSC::routes_list (lo_message msg)
}
for (int n = 0; n < (int) session->nroutes(); ++n) {
- boost::shared_ptr<Route> r = session->route_by_remote_id (n);
+ boost::shared_ptr<Route> r = session->get_remote_nth_route (n);
if (r) {
@@ -968,7 +968,8 @@ OSC::routes_list (lo_message msg)
lo_message_add_int32 (reply, r->n_outputs().n_audio());
lo_message_add_int32 (reply, r->muted());
lo_message_add_int32 (reply, r->soloed());
- lo_message_add_int32 (reply, r->remote_control_id());
+ /* XXX Can only use group ID at this point */
+ lo_message_add_int32 (reply, r->presentation_info().group_order());
if (boost::dynamic_pointer_cast<AudioTrack>(r)
|| boost::dynamic_pointer_cast<MidiTrack>(r)) {
@@ -1051,7 +1052,7 @@ OSC::route_mute (int rid, int yn)
{
if (!session) return -1;
- boost::shared_ptr<Route> r = session->route_by_remote_id (rid);
+ boost::shared_ptr<Route> r = session->get_remote_nth_route (rid);
if (r) {
r->mute_control()->set_value (yn ? 1.0 : 0.0, PBD::Controllable::NoGroup);
@@ -1065,7 +1066,7 @@ OSC::route_solo (int rid, int yn)
{
if (!session) return -1;
- boost::shared_ptr<Route> r = session->route_by_remote_id (rid);
+ boost::shared_ptr<Route> r = session->get_remote_nth_route (rid);
if (r) {
r->solo_control()->set_value (yn ? 1.0 : 0.0, PBD::Controllable::NoGroup);
@@ -1079,7 +1080,7 @@ OSC::route_recenable (int rid, int yn)
{
if (!session) return -1;
- boost::shared_ptr<Route> r = session->route_by_remote_id (rid);
+ boost::shared_ptr<Route> r = session->get_remote_nth_route (rid);
if (r) {
boost::shared_ptr<Track> trk = boost::dynamic_pointer_cast<Track> (r);
@@ -1096,7 +1097,7 @@ OSC::route_set_gain_abs (int rid, float level)
{
if (!session) return -1;
- boost::shared_ptr<Route> r = session->route_by_remote_id (rid);
+ boost::shared_ptr<Route> r = session->get_remote_nth_route (rid);
if (r) {
r->gain_control()->set_value (level, PBD::Controllable::NoGroup);
@@ -1126,7 +1127,7 @@ OSC::route_set_trim_abs (int rid, float level)
{
if (!session) return -1;
- boost::shared_ptr<Route> r = session->route_by_remote_id (rid);
+ boost::shared_ptr<Route> r = session->get_remote_nth_route (rid);
if (r) {
r->set_trim (level, PBD::Controllable::NoGroup);
@@ -1147,7 +1148,7 @@ OSC::route_set_pan_stereo_position (int rid, float pos)
{
if (!session) return -1;
- boost::shared_ptr<Route> r = session->route_by_remote_id (rid);
+ boost::shared_ptr<Route> r = session->get_remote_nth_route (rid);
if (r) {
boost::shared_ptr<Panner> panner = r->panner();
@@ -1165,7 +1166,7 @@ OSC::route_set_pan_stereo_width (int rid, float pos)
{
if (!session) return -1;
- boost::shared_ptr<Route> r = session->route_by_remote_id (rid);
+ boost::shared_ptr<Route> r = session->get_remote_nth_route (rid);
if (r) {
boost::shared_ptr<Panner> panner = r->panner();
@@ -1185,7 +1186,7 @@ OSC::route_set_send_gain_abs (int rid, int sid, float val)
return -1;
}
- boost::shared_ptr<Route> r = session->route_by_remote_id (rid);
+ boost::shared_ptr<Route> r = session->get_remote_nth_route (rid);
if (!r) {
return -1;
@@ -1217,7 +1218,7 @@ OSC::route_set_send_gain_dB (int rid, int sid, float val)
return -1;
}
- boost::shared_ptr<Route> r = session->route_by_remote_id (rid);
+ boost::shared_ptr<Route> r = session->get_remote_nth_route (rid);
if (!r) {
return -1;
@@ -1248,7 +1249,7 @@ OSC::route_plugin_parameter (int rid, int piid, int par, float val)
if (!session)
return -1;
- boost::shared_ptr<Route> r = session->route_by_remote_id (rid);
+ boost::shared_ptr<Route> r = session->get_remote_nth_route (rid);
if (!r) {
PBD::error << "OSC: Invalid Remote Control ID '" << rid << "'" << endmsg;
@@ -1307,7 +1308,7 @@ OSC::route_plugin_parameter_print (int rid, int piid, int par)
return -1;
}
- boost::shared_ptr<Route> r = session->route_by_remote_id (rid);
+ boost::shared_ptr<Route> r = session->get_remote_nth_route (rid);
if (!r) {
return -1;
diff --git a/libs/surfaces/osc/osc_controllable.cc b/libs/surfaces/osc/osc_controllable.cc
index 2cd4c31080..dae6ee6d6d 100644
--- a/libs/surfaces/osc/osc_controllable.cc
+++ b/libs/surfaces/osc/osc_controllable.cc
@@ -90,7 +90,9 @@ OSCRouteControllable::send_change_message ()
{
lo_message msg = lo_message_new ();
- lo_message_add_int32 (msg, _route->remote_control_id());
+ /* Can only send ID part of RID at present */
+
+ lo_message_add_int32 (msg, _route->presentation_info().group_order());
lo_message_add_float (msg, (float) controllable->get_value());
/* XXX thread issues */
diff --git a/libs/surfaces/osc/osc_route_observer.cc b/libs/surfaces/osc/osc_route_observer.cc
index 8bb511b94f..a9e797621c 100644
--- a/libs/surfaces/osc/osc_route_observer.cc
+++ b/libs/surfaces/osc/osc_route_observer.cc
@@ -82,7 +82,8 @@ OSCRouteObserver::name_changed (const PBD::PropertyChange& what_changed)
lo_message msg = lo_message_new ();
- lo_message_add_int32 (msg, _route->remote_control_id());
+ /* XXX can only use group part of ID at present */
+ lo_message_add_int32 (msg, _route->presentation_info().group_order());
lo_message_add_string (msg, _route->name().c_str());
lo_send_message (addr, "/route/name", msg);
@@ -94,7 +95,8 @@ OSCRouteObserver::send_change_message (string path, boost::shared_ptr<Controllab
{
lo_message msg = lo_message_new ();
- lo_message_add_int32 (msg, _route->remote_control_id());
+ /* XXX can only use group part of ID at present */
+ lo_message_add_int32 (msg, _route->presentation_info().group_order());
lo_message_add_float (msg, (float) controllable->get_value());
/* XXX thread issues */