triggerbox: better handling of clip end, and some code cleanup
This commit is contained in:
parent
b0914bbc41
commit
b76744d28d
@ -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);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user