Merge some cases to avoid duplicated logic
[ardour.git] / libs / ardour / rb_effect.cc
index f3adaec22c36269393a889cf09c0faeebb2d7c10..bc127e2d816f025727653ebf4e163dbe881212f7 100644 (file)
@@ -20,8 +20,9 @@
 #include <algorithm>
 #include <cmath>
 
+#include <rubberband/RubberBandStretcher.h>
+
 #include "pbd/error.h"
-#include "rubberband/RubberBandStretcher.h"
 
 #include "ardour/audioregion.h"
 #include "ardour/audiosource.h"
@@ -31,7 +32,7 @@
 #include "ardour/stretch.h"
 #include "ardour/types.h"
 
-#include "i18n.h"
+#include "pbd/i18n.h"
 
 using namespace std;
 using namespace ARDOUR;
@@ -71,7 +72,6 @@ RBEffect::run (boost::shared_ptr<Region> r, Progress* progress)
        }
 
        SourceList nsrcs;
-       framecnt_t done;
        int ret = -1;
        const framecnt_t bufsize = 256;
        gain_t* gain_buffer = 0;
@@ -79,8 +79,6 @@ RBEffect::run (boost::shared_ptr<Region> r, Progress* progress)
        char suffix[32];
        string new_name;
        string::size_type at;
-       framepos_t pos = 0;
-       framecnt_t avail = 0;
        boost::shared_ptr<AudioRegion> result;
 
        cerr << "RBEffect: source region: position = " << region->position()
@@ -183,6 +181,10 @@ RBEffect::run (boost::shared_ptr<Region> r, Progress* progress)
 
        /* create new sources */
 
+       framepos_t pos   = 0;
+       framecnt_t avail = 0;
+       framecnt_t done  = 0;
+
        if (make_new_sources (region, nsrcs, suffix)) {
                goto out;
        }
@@ -200,10 +202,6 @@ RBEffect::run (boost::shared_ptr<Region> r, Progress* progress)
 
        /* study first, process afterwards. */
 
-       pos = 0;
-       avail = 0;
-       done = 0;
-
        try {
                while (pos < read_duration && !tsr.cancel) {
 
@@ -211,8 +209,6 @@ RBEffect::run (boost::shared_ptr<Region> r, Progress* progress)
 
                        for (uint32_t i = 0; i < channels; ++i) {
 
-                               this_read = 0;
-
                                framepos_t this_time;
                                this_time = min(bufsize, read_duration - pos);
 
@@ -253,7 +249,6 @@ RBEffect::run (boost::shared_ptr<Region> r, Progress* progress)
 
                        for (uint32_t i = 0; i < channels; ++i) {
 
-                               this_read = 0;
                                framepos_t this_time;
                                this_time = min(bufsize, read_duration - pos);
 
@@ -329,7 +324,7 @@ RBEffect::run (boost::shared_ptr<Region> r, Progress* progress)
                }
 
        } catch (runtime_error& err) {
-               error << _("timefx code failure. please notify ardour-developers.") << endmsg;
+               error << string_compose (_("programming error: %1"), X_("timefx code failure")) << endmsg;
                error << err.what() << endmsg;
                goto out;
        }
@@ -357,9 +352,9 @@ RBEffect::run (boost::shared_ptr<Region> r, Progress* progress)
                                          shift);
                (*x)->set_master_sources (region->master_sources());
                /* multiply the old (possibly previously stretched) region length by the extra
-                  stretch this time around to get its new length
+                  stretch this time around to get its new length. this is a non-music based edit atm.
                */
-               (*x)->set_length ((*x)->length() * tsr.time_fraction);
+               (*x)->set_length ((*x)->length() * tsr.time_fraction, 0);
        }
 
        /* stretch region gain envelope */