triggerbox: add API to clear a cue (row)

This commit is contained in:
Paul Davis 2023-09-05 12:44:20 -06:00
parent da4d2a645f
commit 68678aa957
4 changed files with 28 additions and 0 deletions

View File

@ -1388,6 +1388,7 @@ public:
TriggerPtr trigger_at (int32_t route_index, int32_t row_index) const;
bool bang_trigger_at(int32_t route_index, int32_t row_index);
bool unbang_trigger_at(int32_t route_index, int32_t row_index);
void clear_cue (int row_index);
void start_domain_bounce (Temporal::DomainBounceInfo&);
void finish_domain_bounce (Temporal::DomainBounceInfo&);

View File

@ -774,6 +774,7 @@ class LIBARDOUR_API TriggerBox : public Processor
TriggerPtr trigger_by_id (PBD::ID);
void clear_all_triggers ();
void clear_cue (int cue);
void set_all_follow_action (ARDOUR::FollowAction const &, uint32_t n=0);
void set_all_launch_style (ARDOUR::Trigger::LaunchStyle);
void set_all_quantization (Temporal::BBT_Offset const&);

View File

@ -1806,6 +1806,26 @@ Session::triggerbox_at (int32_t route_index) const
return std::shared_ptr<TriggerBox>();
}
void
Session::clear_cue (int row_index)
{
StripableList sl;
get_stripables (sl);
for (StripableList::iterator s = sl.begin (); s != sl.end (); ++s) {
std::shared_ptr<Route> r = std::dynamic_pointer_cast<Route> (*s);
if (!r || !r->triggerbox ()) {
continue;
}
/* we're only interested in Trigger Tracks */
if (!(r->presentation_info ().trigger_track ())) {
continue;
}
r->triggerbox()->clear_cue (row_index);
}
}
int
Session::num_triggerboxes () const
{

View File

@ -3691,6 +3691,12 @@ TriggerBox::clear_all_triggers ()
}
}
void
TriggerBox::clear_cue (int cue)
{
all_triggers[cue]->set_region (std::shared_ptr<Region>());
}
void
TriggerBox::set_all_launch_style (ARDOUR::Trigger::LaunchStyle ls)
{