/* reset selection to new regionviews */
selection->set (new_regionviews);
-
+
/* reset drag_info data to reflect the fact that we are dragging the copies */
drag_info.data = new_regionviews.front();
}
if (sync_frame - sync_offset <= sync_frame) {
- pending_region_position = sync_frame + (sync_dir*sync_offset);
+ pending_region_position = sync_frame - (sync_dir*sync_offset);
} else {
pending_region_position = 0;
}
pair<set<boost::shared_ptr<Playlist> >::iterator,bool> insert_result;
const list<RegionView*>& layered_regions = selection->regions.by_layer();
-
+
for (list<RegionView*>::const_iterator i = layered_regions.begin(); i != layered_regions.end(); ++i) {
RegionView* rv = (*i);
sigc::connection c = rtv->view()->RegionViewAdded.connect (mem_fun(*this, &Editor::collect_new_region_view));
to_playlist->add_region (newregion, (nframes_t) (where * rtv->get_diskstream()->speed()));
c.disconnect ();
-
+
if (!latest_regionviews.empty()) {
// XXX why just the first one ? we only expect one
rtv->reveal_dependent_views (*latest_regionviews.front());
}
nframes_t newlen = drag_info.last_pointer_frame - clicked_regionview->region()->position();
-#ifdef USE_RUBBERBAND
- float percentage = (float) ((double) newlen / (double) clicked_regionview->region()->length());
-#else
- float percentage = (float) ((double) newlen - (double) clicked_regionview->region()->length()) / ((double) newlen) * 100.0f;
+
+ float percentage = (double) newlen / (double) clicked_regionview->region()->length();
+
+#ifndef USE_RUBBERBAND
+ // Soundtouch uses percentage / 100 instead of normal (/ 1)
+ if (clicked_regionview->region()->data_type() == DataType::AUDIO) {
+ percentage = (float) ((double) newlen - (double) clicked_regionview->region()->length()) / ((double) newlen) * 100.0f;
#endif
+ }
begin_reversible_command (_("timestretch"));