diff options
-rw-r--r-- | libs/ardour/filter.cc | 1 | ||||
-rw-r--r-- | libs/ardour/rb_effect.cc | 12 |
2 files changed, 12 insertions, 1 deletions
diff --git a/libs/ardour/filter.cc b/libs/ardour/filter.cc index 44e7f11cbd..2bbeecf37e 100644 --- a/libs/ardour/filter.cc +++ b/libs/ardour/filter.cc @@ -138,6 +138,7 @@ Filter::finish (boost::shared_ptr<Region> region, SourceList& nsrcs, string regi audio_r->set_fade_in (audio_region->fade_in ()); audio_r->set_fade_out_active (audio_region->fade_out_active ()); audio_r->set_fade_out (audio_region->fade_out ()); + *(audio_r->envelope()) = *(audio_region->envelope ()); } results.push_back (r); diff --git a/libs/ardour/rb_effect.cc b/libs/ardour/rb_effect.cc index 4cb77d1c58..60764c1220 100644 --- a/libs/ardour/rb_effect.cc +++ b/libs/ardour/rb_effect.cc @@ -80,7 +80,8 @@ RBEffect::run (boost::shared_ptr<Region> r) string::size_type at; nframes_t pos = 0; int avail = 0; - + boost::shared_ptr<AudioRegion> result; + cerr << "RBEffect: source region: position = " << region->position() << ", start = " << region->start() << ", length = " << region->length() @@ -357,6 +358,15 @@ RBEffect::run (boost::shared_ptr<Region> r) (*x)->set_length( (*x)->length() * stretch, this); } + /* stretch region gain envelope */ + /* XXX: assuming we've only processed one input region into one result here */ + + if (tsr.time_fraction != 1) { + result = boost::dynamic_pointer_cast<AudioRegion> (results.front()); + assert (result); + result->envelope()->x_scale (tsr.time_fraction); + } + out: delete [] gain_buffer; |