diff --git a/libs/ardour/ardour/session.h b/libs/ardour/ardour/session.h index 41381e7494..bca3970f08 100644 --- a/libs/ardour/ardour/session.h +++ b/libs/ardour/ardour/session.h @@ -1375,6 +1375,7 @@ public: void trigger_cue_row (int32_t); CueEvents const & cue_events() const { return _cue_events; } + int num_triggerboxes () const; boost::shared_ptr triggerbox_at (int32_t route_index) const; TriggerPtr trigger_at (int32_t route_index, int32_t row_index) const; bool bang_trigger_at(int32_t route_index, int32_t row_index); diff --git a/libs/ardour/session_process.cc b/libs/ardour/session_process.cc index 1ab2776b73..3fce1713ea 100644 --- a/libs/ardour/session_process.cc +++ b/libs/ardour/session_process.cc @@ -1806,6 +1806,26 @@ Session::triggerbox_at (int32_t route_index) const return boost::shared_ptr(); } +int +Session::num_triggerboxes () const +{ + int count = 0; + StripableList sl; + get_stripables (sl); + for (StripableList::iterator s = sl.begin (); s != sl.end (); ++s) { + boost::shared_ptr r = boost::dynamic_pointer_cast (*s); + if (!r || !r->triggerbox ()) { + continue; + } + /* we're only interested in Trigger Tracks */ + if (!(r->presentation_info ().trigger_track ())) { + continue; + } + count++; + } + return count; +} + TriggerPtr Session::trigger_at (int32_t route_index, int32_t trigger_index) const {