summaryrefslogtreecommitdiff
path: root/libs/ardour/session_timefx.cc
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2007-03-18 06:07:08 +0000
committerDavid Robillard <d@drobilla.net>2007-03-18 06:07:08 +0000
commit99904735e066804358f1d0bd138a84f1e9ecda91 (patch)
tree71a924cf1660b5b00231275bd481bbd27094dd9b /libs/ardour/session_timefx.cc
parenteb270e70a12c410cdd98585ad25bb6d8e384a4f5 (diff)
Merged with trunk R1612.
git-svn-id: svn://localhost/ardour2/branches/midi@1614 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/ardour/session_timefx.cc')
-rw-r--r--libs/ardour/session_timefx.cc46
1 files changed, 43 insertions, 3 deletions
diff --git a/libs/ardour/session_timefx.cc b/libs/ardour/session_timefx.cc
index 69a42ec8b8..4061b2ccd0 100644
--- a/libs/ardour/session_timefx.cc
+++ b/libs/ardour/session_timefx.cc
@@ -15,7 +15,6 @@
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- $Id$
*/
#include <cerrno>
@@ -50,6 +49,9 @@ Session::tempoize_region (TimeStretchRequest& tsr)
float percentage;
nframes_t total_frames;
nframes_t done;
+ int c;
+ char buf[64];
+ string::size_type len;
/* the soundtouch code wants a *tempo* change percentage, which is
of opposite sign to the length change.
@@ -73,8 +75,18 @@ Session::tempoize_region (TimeStretchRequest& tsr)
done = 0;
for (uint32_t i = 0; i < tsr.region->n_channels(); ++i) {
- string path = path_from_region_name (PBD::basename_nosuffix (names[i]), ident);
+ string rstr;
+ string::size_type existing_ident;
+
+ if ((existing_ident = names[i].find (ident)) != string::npos) {
+ rstr = names[i].substr (0, existing_ident);
+ } else {
+ rstr = names[i];
+ }
+
+ string path = path_from_region_name (PBD::basename_nosuffix (rstr), ident);
+
if (path.length() == 0) {
error << string_compose (_("tempoize: error creating name for new audio file based on %1"), tsr.region->name())
<< endmsg;
@@ -88,6 +100,7 @@ Session::tempoize_region (TimeStretchRequest& tsr)
error << string_compose (_("tempoize: error creating new audio file %1 (%2)"), path, strerror (errno)) << endmsg;
goto out;
}
+
}
try {
@@ -164,7 +177,34 @@ Session::tempoize_region (TimeStretchRequest& tsr)
}
}
- region_name = tsr.region->name() + X_(".t");
+ len = tsr.region->name().length();
+
+ while (--len) {
+ if (!isdigit (tsr.region->name()[len])) {
+ break;
+ }
+ }
+
+ if (len == 0) {
+
+ region_name = tsr.region->name() + ".t000";
+
+ } else {
+
+ if (tsr.region->name()[len] == 't') {
+ c = atoi (tsr.region->name().substr(len+1));
+
+ snprintf (buf, sizeof (buf), "t%03d", ++c);
+ region_name = tsr.region->name().substr (0, len) + buf;
+
+ } else {
+
+ /* not sure what this is, just tack the suffix on to it */
+
+ region_name = tsr.region->name() + ".t000";
+ }
+
+ }
r = (boost::dynamic_pointer_cast<AudioRegion> (RegionFactory::create (sources, 0, sources.front()->length(), region_name,
0, AudioRegion::Flag (AudioRegion::DefaultFlags | AudioRegion::WholeFile))));