diff options
Diffstat (limited to 'libs/surfaces')
-rw-r--r-- | libs/surfaces/control_protocol/control_protocol.cc | 83 | ||||
-rw-r--r-- | libs/surfaces/control_protocol/control_protocol/control_protocol.h | 8 | ||||
-rw-r--r-- | libs/surfaces/generic_midi/generic_midi_control_protocol.cc | 2 | ||||
-rw-r--r-- | libs/surfaces/mackie/mackie_control_protocol.cc | 60 | ||||
-rw-r--r-- | libs/surfaces/mackie/mackie_control_protocol.h | 4 | ||||
-rw-r--r-- | libs/surfaces/mackie/strip.cc | 1 | ||||
-rw-r--r-- | libs/surfaces/osc/osc.cc | 33 | ||||
-rw-r--r-- | libs/surfaces/osc/osc_controllable.cc | 4 | ||||
-rw-r--r-- | libs/surfaces/osc/osc_route_observer.cc | 6 |
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 */ |