X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fardour%2Fstrip_silence.cc;h=62b08cbb0a3114b1b4997e5d344e07cf3bf950f3;hb=f66b919e298c1c4e5f780942a1ed75e262a6ee96;hp=d04612f6044ec1c38a51711fc40ce9d1858fb028;hpb=2d3c640fee5530fdf68c631feccbc22828583e98;p=ardour.git diff --git a/libs/ardour/strip_silence.cc b/libs/ardour/strip_silence.cc index d04612f604..62b08cbb0a 100644 --- a/libs/ardour/strip_silence.cc +++ b/libs/ardour/strip_silence.cc @@ -49,7 +49,7 @@ StripSilence::run (boost::shared_ptr r, Progress* progress) results.clear (); /* we only operate on AudioRegions, for now, though this could be adapted to MIDI - as well I guess + as well I guess */ boost::shared_ptr region = boost::dynamic_pointer_cast (r); InterThreadInfo itt; @@ -102,14 +102,14 @@ StripSilence::run (boost::shared_ptr r, Progress* progress) --last_silence; frameoffset_t const end_of_region = r->start() + r->length(); - + if (last_silence->second != end_of_region - 1) { audible.push_back (std::make_pair (last_silence->second, end_of_region - 1)); } int n = 0; int const N = audible.size (); - + for (AudioIntervalResult::const_iterator i = audible.begin(); i != audible.end(); ++i) { PBD::PropertyList plist; @@ -117,17 +117,20 @@ StripSilence::run (boost::shared_ptr r, Progress* progress) plist.add (Properties::length, i->second - i->first); plist.add (Properties::position, r->position() + (i->first - r->start())); - + copy = boost::dynamic_pointer_cast ( RegionFactory::create (region, (i->first - r->start()), plist) ); - + copy->set_name (RegionFactory::new_region_name (region->name ())); - + + framecnt_t const f = std::min (_fade_length, (i->second - i->first)); + copy->set_fade_in_active (true); - copy->set_fade_in (FadeLinear, _fade_length); + copy->set_fade_in (FadeLinear, f); + copy->set_fade_out (FadeLinear, f); results.push_back (copy); - + if (progress && (n <= N)) { progress->set_progress (float (n) / N); }