triggerbox: basic stretch test using assumption that slot holds s 4 bar region
This commit is contained in:
parent
bbbfadb832
commit
0199a4e561
@ -77,7 +77,7 @@ class LIBARDOUR_API Trigger : public PBD::Stateful {
|
|||||||
virtual void set_start (timepos_t const &) = 0;
|
virtual void set_start (timepos_t const &) = 0;
|
||||||
virtual void set_end (timepos_t const &) = 0;
|
virtual void set_end (timepos_t const &) = 0;
|
||||||
/* this accepts timepos_t because the origin is assumed to be the start */
|
/* this accepts timepos_t because the origin is assumed to be the start */
|
||||||
virtual void set_length (timepos_t const &) = 0;
|
virtual void set_length (timecnt_t const &) = 0;
|
||||||
|
|
||||||
virtual double position_as_fraction() const = 0;
|
virtual double position_as_fraction() const = 0;
|
||||||
|
|
||||||
@ -206,7 +206,7 @@ class LIBARDOUR_API AudioTrigger : public Trigger {
|
|||||||
void set_legato_offset (timepos_t const &);
|
void set_legato_offset (timepos_t const &);
|
||||||
timepos_t current_pos() const;
|
timepos_t current_pos() const;
|
||||||
/* this accepts timepos_t because the origin is assumed to be the start */
|
/* this accepts timepos_t because the origin is assumed to be the start */
|
||||||
void set_length (timepos_t const &);
|
void set_length (timecnt_t const &);
|
||||||
timepos_t start_offset () const { return timepos_t (_start_offset); } /* offset from start of data */
|
timepos_t start_offset () const { return timepos_t (_start_offset); } /* offset from start of data */
|
||||||
timepos_t end() const; /* offset from start of data */
|
timepos_t end() const; /* offset from start of data */
|
||||||
timepos_t current_length() const; /* offset from start of data */
|
timepos_t current_length() const; /* offset from start of data */
|
||||||
|
@ -483,7 +483,7 @@ AudioTrigger::set_start (timepos_t const & s)
|
|||||||
void
|
void
|
||||||
AudioTrigger::set_end (timepos_t const & e)
|
AudioTrigger::set_end (timepos_t const & e)
|
||||||
{
|
{
|
||||||
set_length (timepos_t (e.samples() - _start_offset));
|
set_length (timecnt_t (e.samples() - _start_offset, timepos_t (_start_offset)));
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@ -505,7 +505,7 @@ AudioTrigger::end() const
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
AudioTrigger::set_length (timepos_t const & newlen)
|
AudioTrigger::set_length (timecnt_t const & newlen)
|
||||||
{
|
{
|
||||||
using namespace RubberBand;
|
using namespace RubberBand;
|
||||||
using namespace Temporal;
|
using namespace Temporal;
|
||||||
@ -520,7 +520,7 @@ AudioTrigger::set_length (timepos_t const & newlen)
|
|||||||
|
|
||||||
load_data (ar);
|
load_data (ar);
|
||||||
|
|
||||||
if (newlen == timepos_t (_region->length_samples())) {
|
if (newlen == _region->length()) {
|
||||||
/* no stretch required */
|
/* no stretch required */
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -540,6 +540,7 @@ AudioTrigger::set_length (timepos_t const & newlen)
|
|||||||
|
|
||||||
if (newlen.time_domain() == AudioTime) {
|
if (newlen.time_domain() == AudioTime) {
|
||||||
new_ratio = (double) newlen.samples() / data_length;
|
new_ratio = (double) newlen.samples() / data_length;
|
||||||
|
cerr << "gonna stretch, ratio is " << new_ratio << endl;
|
||||||
} else {
|
} else {
|
||||||
/* XXX what to use for position ??? */
|
/* XXX what to use for position ??? */
|
||||||
timecnt_t l (newlen, timepos_t (AudioTime));
|
timecnt_t l (newlen, timepos_t (AudioTime));
|
||||||
@ -547,6 +548,8 @@ AudioTrigger::set_length (timepos_t const & newlen)
|
|||||||
new_ratio = (double) dur.samples() / data_length;
|
new_ratio = (double) dur.samples() / data_length;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
stretcher.setTimeRatio (new_ratio);
|
stretcher.setTimeRatio (new_ratio);
|
||||||
|
|
||||||
const samplecnt_t expected_length = ceil (data_length * new_ratio) + 16; /* extra space for safety */
|
const samplecnt_t expected_length = ceil (data_length * new_ratio) + 16; /* extra space for safety */
|
||||||
@ -685,6 +688,8 @@ AudioTrigger::natural_length() const
|
|||||||
int
|
int
|
||||||
AudioTrigger::set_region (boost::shared_ptr<Region> r)
|
AudioTrigger::set_region (boost::shared_ptr<Region> r)
|
||||||
{
|
{
|
||||||
|
using namespace Temporal;
|
||||||
|
|
||||||
boost::shared_ptr<AudioRegion> ar = boost::dynamic_pointer_cast<AudioRegion> (r);
|
boost::shared_ptr<AudioRegion> ar = boost::dynamic_pointer_cast<AudioRegion> (r);
|
||||||
|
|
||||||
if (!ar) {
|
if (!ar) {
|
||||||
@ -695,7 +700,10 @@ AudioTrigger::set_region (boost::shared_ptr<Region> r)
|
|||||||
|
|
||||||
/* this will load data, but won't stretch it for now */
|
/* this will load data, but won't stretch it for now */
|
||||||
|
|
||||||
set_length (timepos_t::from_superclock (r->length ().magnitude()));
|
TempoMap::SharedPtr tm (TempoMap::use());
|
||||||
|
timecnt_t two_bars = tm->bbt_duration_at (timepos_t (AudioTime), BBT_Offset (4, 0, 0));
|
||||||
|
|
||||||
|
set_length (two_bars);
|
||||||
|
|
||||||
PropertyChanged (ARDOUR::Properties::name);
|
PropertyChanged (ARDOUR::Properties::name);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user