13
0

triggerbox: better handling of clip end, and some code cleanup

This commit is contained in:
Paul Davis 2021-08-07 15:42:21 -06:00
parent b0914bbc41
commit b76744d28d

View File

@ -782,14 +782,8 @@ AudioTrigger::unbang (TriggerBox& /*proc*/, Temporal::Beats const &, samplepos_t
Trigger::RunResult Trigger::RunResult
AudioTrigger::run (AudioBuffer& buf, uint32_t channel, pframes_t& nframes, pframes_t dest_offset, bool first) AudioTrigger::run (AudioBuffer& buf, uint32_t channel, pframes_t& nframes, pframes_t dest_offset, bool first)
{ {
if (!_running) { assert (!_running);
return RemoveTrigger; assert (read_index[channel] < data_length);
}
if (read_index[channel] >= data_length) {
_running = false;
return RemoveTrigger;
}
if (_stop_requested) { if (_stop_requested) {
/* XXX need fade out machinery instead of immediate stop */ /* XXX need fade out machinery instead of immediate stop */
@ -811,10 +805,9 @@ AudioTrigger::run (AudioBuffer& buf, uint32_t channel, pframes_t& nframes, pfram
read_index[channel] += nf; read_index[channel] += nf;
nframes -= nf; if ((nframes - nf) != 0) {
if (nframes != 0) {
/* did not get all samples, must have reached the end, figure out what do to */ /* did not get all samples, must have reached the end, figure out what do to */
nframes = nf;
return at_end (); return at_end ();
} }
@ -827,32 +820,14 @@ AudioTrigger::at_end ()
switch (launch_style()) { switch (launch_style()) {
case Trigger::Loop: case Trigger::Loop:
retrigger(); retrigger();
return ReadMore; /* means keep reading */ return ReadMore;
default:
case Trigger::Gate:
case Trigger::Toggle:
case Trigger::Repeat:
break; break;
} }
switch (follow_action()) { if (follow_action() == Stop) {
case Stop:
return RunResult (RemoveTrigger|FillSilence); return RunResult (RemoveTrigger|FillSilence);
case QueuedTrigger:
break;
case NextTrigger:
break;
case PrevTrigger:
break;
case FirstTrigger:
break;
case LastTrigger:
break;
case AnyTrigger:
break;
case OtherTrigger:
break;
} }
return ChangeTriggers; return RunResult (ChangeTriggers|FillSilence);
} }