mirror of
https://github.com/Ardour/ardour.git
synced 2025-12-12 01:26:31 +01:00
triggerbox: add start + usable length fields to address (a) repeat launch style (b) clip "editing"
This commit is contained in:
parent
7be493bc46
commit
e9f0aeae3a
2 changed files with 14 additions and 2 deletions
|
|
@ -182,6 +182,8 @@ class LIBARDOUR_API AudioTrigger : public Trigger {
|
||||||
std::vector<Sample*> data;
|
std::vector<Sample*> data;
|
||||||
samplecnt_t read_index;
|
samplecnt_t read_index;
|
||||||
samplecnt_t data_length;
|
samplecnt_t data_length;
|
||||||
|
samplepos_t start_offset;
|
||||||
|
samplecnt_t usable_length;
|
||||||
|
|
||||||
void drop_data ();
|
void drop_data ();
|
||||||
int load_data (boost::shared_ptr<AudioRegion>);
|
int load_data (boost::shared_ptr<AudioRegion>);
|
||||||
|
|
|
||||||
|
|
@ -273,6 +273,8 @@ AudioTrigger::AudioTrigger (size_t n, TriggerBox& b)
|
||||||
, data (0)
|
, data (0)
|
||||||
, read_index (0)
|
, read_index (0)
|
||||||
, data_length (0)
|
, data_length (0)
|
||||||
|
, start_offset (0)
|
||||||
|
, usable_length (0)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -407,6 +409,9 @@ AudioTrigger::set_length (timecnt_t const & newlen)
|
||||||
drop_data ();
|
drop_data ();
|
||||||
data = stretched;
|
data = stretched;
|
||||||
data_length = processed;
|
data_length = processed;
|
||||||
|
if (!usable_length || usable_length > data_length) {
|
||||||
|
usable_length = data_length;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
timecnt_t
|
timecnt_t
|
||||||
|
|
@ -463,6 +468,11 @@ AudioTrigger::load_data (boost::shared_ptr<AudioRegion> ar)
|
||||||
|
|
||||||
data_length = ar->length_samples();
|
data_length = ar->length_samples();
|
||||||
|
|
||||||
|
/* if usable length was already set, only adjust it if it is too large */
|
||||||
|
if (!usable_length || usable_length > data_length) {
|
||||||
|
usable_length = data_length;
|
||||||
|
}
|
||||||
|
|
||||||
drop_data ();
|
drop_data ();
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
|
@ -495,7 +505,7 @@ AudioTrigger::run (BufferSet& bufs, pframes_t nframes, pframes_t dest_offset, bo
|
||||||
|
|
||||||
while (nframes) {
|
while (nframes) {
|
||||||
|
|
||||||
pframes_t this_read = (pframes_t) std::min ((samplecnt_t) nframes, (data_length - read_index));
|
pframes_t this_read = (pframes_t) std::min ((samplecnt_t) nframes, (usable_length - read_index));
|
||||||
|
|
||||||
DEBUG_TRACE (DEBUG::Triggers, string_compose ("%1 grab %2 @ %3 dest offset %4\n", index(), this_read, read_index, dest_offset));
|
DEBUG_TRACE (DEBUG::Triggers, string_compose ("%1 grab %2 @ %3 dest offset %4\n", index(), this_read, read_index, dest_offset));
|
||||||
|
|
||||||
|
|
@ -515,7 +525,7 @@ AudioTrigger::run (BufferSet& bufs, pframes_t nframes, pframes_t dest_offset, bo
|
||||||
|
|
||||||
read_index += this_read;
|
read_index += this_read;
|
||||||
|
|
||||||
if (read_index >= data_length) {
|
if (read_index >= usable_length) {
|
||||||
|
|
||||||
/* We reached the end */
|
/* We reached the end */
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue