no more per-track varispeed
authorPaul Davis <paul@linuxaudiosystems.com>
Mon, 17 Apr 2017 10:12:49 +0000 (11:12 +0100)
committerPaul Davis <paul@linuxaudiosystems.com>
Mon, 18 Sep 2017 15:40:53 +0000 (11:40 -0400)
gtk2_ardour/editor.cc
gtk2_ardour/editor_drag.cc
gtk2_ardour/editor_mouse.cc
gtk2_ardour/editor_ops.cc
gtk2_ardour/region_view.cc
gtk2_ardour/route_time_axis.cc

index 4f4bee48393bfc2a621b1d293ddc807bc4715451..1701c3841178cf2e6d05a1be63cb4308da5ca20a 100644 (file)
@@ -4853,8 +4853,7 @@ Editor::get_regions_at (RegionSelection& rs, framepos_t where, const TrackViewLi
 
                        if ((tr = rtv->track()) && ((pl = tr->playlist()))) {
 
-                               boost::shared_ptr<RegionList> regions = pl->regions_at (
-                                               (framepos_t) floor ( (double) where * tr->speed()));
+                               boost::shared_ptr<RegionList> regions = pl->regions_at (where);
 
                                for (RegionList::iterator i = regions->begin(); i != regions->end(); ++i) {
                                        RegionView* rv = rtv->view()->find_view (*i);
@@ -4886,8 +4885,7 @@ Editor::get_regions_after (RegionSelection& rs, framepos_t where, const TrackVie
 
                        if ((tr = rtv->track()) && ((pl = tr->playlist()))) {
 
-                               boost::shared_ptr<RegionList> regions = pl->regions_touched (
-                                       (framepos_t) floor ( (double)where * tr->speed()), max_framepos);
+                               boost::shared_ptr<RegionList> regions = pl->regions_touched (where, max_framepos);
 
                                for (RegionList::iterator i = regions->begin(); i != regions->end(); ++i) {
 
index 02f827b5792874ffada6eb70dc335899c2aa514e..9b5838aaadfde2998a807cc4ac9fa84025fa463a 100644 (file)
@@ -1967,13 +1967,7 @@ RegionMoveDrag::RegionMoveDrag (Editor* e, ArdourCanvas::Item* i, RegionView* p,
 {
        DEBUG_TRACE (DEBUG::Drags, "New RegionMoveDrag\n");
 
-       double speed = 1;
-       RouteTimeAxisView* rtv = dynamic_cast<RouteTimeAxisView*> (&_primary->get_time_axis_view ());
-       if (rtv && rtv->is_track()) {
-               speed = rtv->track()->speed ();
-       }
-
-       _last_position = MusicFrame (static_cast<framepos_t> (_primary->region()->position() / speed), 0);
+       _last_position = MusicFrame (_primary->region()->position(), 0);
 }
 
 void
@@ -2878,17 +2872,12 @@ TrimDrag::TrimDrag (Editor* e, ArdourCanvas::Item* i, RegionView* p, list<Region
 void
 TrimDrag::start_grab (GdkEvent* event, Gdk::Cursor*)
 {
-       double speed = 1.0;
        TimeAxisView* tvp = &_primary->get_time_axis_view ();
        RouteTimeAxisView* tv = dynamic_cast<RouteTimeAxisView*>(tvp);
 
-       if (tv && tv->is_track()) {
-               speed = tv->track()->speed();
-       }
-
-       framepos_t const region_start = (framepos_t) (_primary->region()->position() / speed);
-       framepos_t const region_end = (framepos_t) (_primary->region()->last_frame() / speed);
-       framecnt_t const region_length = (framecnt_t) (_primary->region()->length() / speed);
+       framepos_t const region_start = _primary->region()->position();
+       framepos_t const region_end = _primary->region()->last_frame();
+       framecnt_t const region_length = _primary->region()->length();
 
        framepos_t const pf = adjusted_current_frame (event);
        setup_snap_delta (MusicFrame(region_start, 0));
@@ -2945,15 +2934,11 @@ TrimDrag::motion (GdkEvent* event, bool first_move)
 {
        RegionView* rv = _primary;
 
-       double speed = 1.0;
        TimeAxisView* tvp = &_primary->get_time_axis_view ();
        RouteTimeAxisView* tv = dynamic_cast<RouteTimeAxisView*>(tvp);
        pair<set<boost::shared_ptr<Playlist> >::iterator,bool> insert_result;
        frameoffset_t frame_delta = 0;
 
-       if (tv && tv->is_track()) {
-               speed = tv->track()->speed();
-       }
        MusicFrame adj_frame = adjusted_frame (_drags->current_pointer_frame () + snap_delta (event->button.state), event, true);
        framecnt_t dt = adj_frame.frame - raw_grab_frame () + _pointer_frame_offset - snap_delta (event->button.state);
 
@@ -3106,10 +3091,10 @@ TrimDrag::motion (GdkEvent* event, bool first_move)
 
        switch (_operation) {
        case StartTrim:
-               show_verbose_cursor_time ((framepos_t) (rv->region()->position() / speed));
+               show_verbose_cursor_time (rv->region()->position());
                break;
        case EndTrim:
-               show_verbose_cursor_duration ((framepos_t)  rv->region()->position() / speed, (framepos_t) rv->region()->last_frame() / speed);
+               show_verbose_cursor_duration (rv->region()->position(), rv->region()->last_frame());
                break;
        case ContentsTrim:
                // show_verbose_cursor_time (frame_delta);
index d268192e5645c0e4200e0ac4dfde0227f0350766..21ace734c2fe71d46fe2a3cd4aee9d724d7d80a5 100644 (file)
@@ -2207,10 +2207,6 @@ Editor::region_view_item_click (AudioRegionView& rv, GdkEventButton* event)
        if (Keyboard::modifier_state_contains (event->state, Keyboard::PrimaryModifier)) {
                TimeAxisView* tv = &rv.get_time_axis_view();
                RouteTimeAxisView* rtv = dynamic_cast<RouteTimeAxisView*>(tv);
-               double speed = 1.0;
-               if (rtv && rtv->is_track()) {
-                       speed = rtv->track()->speed();
-               }
 
                framepos_t where = get_preferred_edit_position();
 
@@ -2218,15 +2214,15 @@ Editor::region_view_item_click (AudioRegionView& rv, GdkEventButton* event)
 
                        if (Keyboard::modifier_state_equals (event->state, Keyboard::ModifierMask (Keyboard::PrimaryModifier|Keyboard::SecondaryModifier))) {
 
-                               align_region (rv.region(), SyncPoint, (framepos_t) (where * speed));
+                               align_region (rv.region(), SyncPoint, where);
 
                        } else if (Keyboard::modifier_state_equals (event->state, Keyboard::ModifierMask (Keyboard::PrimaryModifier|Keyboard::TertiaryModifier))) {
 
-                               align_region (rv.region(), End, (framepos_t) (where * speed));
+                               align_region (rv.region(), End, where);
 
                        } else {
 
-                               align_region (rv.region(), Start, (framepos_t) (where * speed));
+                               align_region (rv.region(), Start, where);
                        }
                }
        }
@@ -2402,11 +2398,10 @@ Editor::mouse_brush_insert_region (RegionView* rv, framepos_t pos)
        }
 
        boost::shared_ptr<Playlist> playlist = rtv->playlist();
-       double speed = rtv->track()->speed();
 
        playlist->clear_changes ();
        boost::shared_ptr<Region> new_region (RegionFactory::create (rv->region(), true));
-       playlist->add_region (new_region, (framepos_t) (pos * speed));
+       playlist->add_region (new_region, pos);
        _session->add_command (new StatefulDiffCommand (playlist));
 
        // playlist is frozen, so we have to update manually XXX this is disgusting
index 41fe50d6ef59b79db0853c9807733588500bc128..f7bd882260d309da105bba37430cb23c818d0745 100644 (file)
@@ -799,17 +799,6 @@ Editor::build_region_boundary_cache ()
                                break;
                        }
 
-                       float speed = 1.0f;
-                       RouteTimeAxisView *rtav;
-
-                       if (ontrack != 0 && (rtav = dynamic_cast<RouteTimeAxisView*>(ontrack)) != 0 ) {
-                               if (rtav->track() != 0) {
-                                       speed = rtav->track()->speed();
-                               }
-                       }
-
-                       rpos = track_frame_to_session_frame (rpos, speed);
-
                        if (rpos < lpos) {
                                lpos = rpos;
                        }
@@ -847,7 +836,6 @@ Editor::find_next_region (framepos_t frame, RegionPoint point, int32_t dir, Trac
        boost::shared_ptr<Region> ret;
        framepos_t rpos = 0;
 
-       float track_speed;
        framepos_t track_frame;
        RouteTimeAxisView *rtav;
 
@@ -856,13 +844,7 @@ Editor::find_next_region (framepos_t frame, RegionPoint point, int32_t dir, Trac
                framecnt_t distance;
                boost::shared_ptr<Region> r;
 
-               track_speed = 1.0f;
-               if ( (rtav = dynamic_cast<RouteTimeAxisView*>(*i)) != 0 ) {
-                       if (rtav->track()!=0)
-                               track_speed = rtav->track()->speed();
-               }
-
-               track_frame = session_frame_to_track_frame(frame, track_speed);
+               track_frame = frame;
 
                if ((r = (*i)->find_next_region (track_frame, point, dir)) == 0) {
                        continue;
@@ -882,9 +864,6 @@ Editor::find_next_region (framepos_t frame, RegionPoint point, int32_t dir, Trac
                        break;
                }
 
-               // rpos is a "track frame", converting it to "_session frame"
-               rpos = track_frame_to_session_frame(rpos, track_speed);
-
                if (rpos > frame) {
                        distance = rpos - frame;
                } else {
@@ -1052,17 +1031,6 @@ Editor::cursor_to_region_point (EditorCursor* cursor, RegionPoint point, int32_t
                break;
        }
 
-       float speed = 1.0f;
-       RouteTimeAxisView *rtav;
-
-       if ( ontrack != 0 && (rtav = dynamic_cast<RouteTimeAxisView*>(ontrack)) != 0 ) {
-               if (rtav->track() != 0) {
-                       speed = rtav->track()->speed();
-               }
-       }
-
-       pos = track_frame_to_session_frame(pos, speed);
-
        if (cursor == playhead_cursor) {
                _session->request_locate (pos);
        } else {
@@ -1243,17 +1211,6 @@ Editor::selected_marker_to_region_point (RegionPoint point, int32_t dir)
                break;
        }
 
-       float speed = 1.0f;
-       RouteTimeAxisView *rtav;
-
-       if (ontrack != 0 && (rtav = dynamic_cast<RouteTimeAxisView*>(ontrack)) != 0) {
-               if (rtav->track() != 0) {
-                       speed = rtav->track()->speed();
-               }
-       }
-
-       pos = track_frame_to_session_frame(pos, speed);
-
        loc->move_to (pos, 0);
 }
 
@@ -3184,8 +3141,6 @@ Editor::separate_regions_between (const TimeSelection& ts)
 
                        /* XXX need to consider musical time selections here at some point */
 
-                       double speed = rtv->track()->speed();
-
                        for (list<AudioRange>::const_iterator t = ts.begin(); t != ts.end(); ++t) {
 
                                sigc::connection c = rtv->view()->RegionViewAdded.connect (
@@ -3193,8 +3148,7 @@ Editor::separate_regions_between (const TimeSelection& ts)
 
                                latest_regionviews.clear ();
 
-                               playlist->partition ((framepos_t)((*t).start * speed),
-                                                    (framepos_t)((*t).end * speed), false);
+                               playlist->partition ((*t).start, (*t).end, false);
 
                                c.disconnect ();
 
@@ -3839,16 +3793,11 @@ Editor::trim_region_to_location (const Location& loc, const char* str)
                        return;
                }
 
-               float speed = 1.0;
                framepos_t start;
                framepos_t end;
 
-               if (tav->track() != 0) {
-                       speed = tav->track()->speed();
-               }
-
-               start = session_frame_to_track_frame (loc.start(), speed);
-               end = session_frame_to_track_frame (loc.end(), speed);
+               start = loc.start();
+               end = loc.end();
 
                rv->region()->clear_changes ();
                rv->region()->trim_to (start, (end - start));
@@ -3899,13 +3848,6 @@ Editor::trim_to_region(bool forward)
                        continue;
                }
 
-               float speed = 1.0;
-
-               if (atav->track() != 0) {
-                       speed = atav->track()->speed();
-               }
-
-
                boost::shared_ptr<Region> region = arv->region();
                boost::shared_ptr<Playlist> playlist (region->playlist());
 
@@ -3919,19 +3861,18 @@ Editor::trim_to_region(bool forward)
                                continue;
                        }
 
-                       region->trim_end((framepos_t) ( (next_region->first_frame() - 1) * speed));
-                       arv->region_changed (PropertyChange (ARDOUR::Properties::length));
+                   region->trim_end (next_region->first_frame() - 1);
+                   arv->region_changed (PropertyChange (ARDOUR::Properties::length));
                }
                else {
 
                        next_region = playlist->find_next_region (region->first_frame(), Start, 0);
 
-                       if(!next_region){
+                       if (!next_region) {
                                continue;
                        }
 
-                       region->trim_front((framepos_t) ((next_region->last_frame() + 1) * speed));
-
+                       region->trim_front (next_region->last_frame() + 1);
                        arv->region_changed (ARDOUR::bounds_change);
                }
 
index 5d0667be7271cc9d5eeeb487e11ec9b7f93d7ec7..d94c1fae64591a2fa30ad6c60f1491e63ade07bf 100644 (file)
@@ -845,18 +845,13 @@ RegionView::trim_front (framepos_t new_bound, bool no_overlap, const int32_t sub
                return false;
        }
 
-       RouteTimeAxisView& rtv = dynamic_cast<RouteTimeAxisView&> (trackview);
-       double const speed = rtv.track()->speed ();
-
        framepos_t const pre_trim_first_frame = _region->first_frame();
 
-       const framepos_t speed_bound = (framepos_t) (new_bound * speed);
-
-       if (_region->position() == speed_bound) {
+       if (_region->position() == new_bound) {
                return false;
        }
 
-       _region->trim_front (speed_bound, sub_num);
+       _region->trim_front (new_bound, sub_num);
 
        if (no_overlap) {
                // Get the next region on the left of this region and shrink/expand it.
@@ -887,12 +882,9 @@ RegionView::trim_end (framepos_t new_bound, bool no_overlap, const int32_t sub_n
                return false;
        }
 
-       RouteTimeAxisView& rtv = dynamic_cast<RouteTimeAxisView&> (trackview);
-       double const speed = rtv.track()->speed ();
-
        framepos_t const pre_trim_last_frame = _region->last_frame();
 
-       _region->trim_end ((framepos_t) (new_bound * speed), sub_num);
+       _region->trim_end (new_bound, sub_num);
 
        if (no_overlap) {
                // Get the next region on the right of this region and shrink/expand it.
index 47f74489e1fae3c28c9c7756a9a48bda7ec99130..a0208da1848ae3e8c87451e42efdcdcc79a96626 100644 (file)
@@ -1022,17 +1022,11 @@ RouteTimeAxisView::route_color_changed ()
 void
 RouteTimeAxisView::set_samples_per_pixel (double fpp)
 {
-       double speed = 1.0;
-
-       if (track()) {
-               speed = track()->speed();
-       }
-
        if (_view) {
-               _view->set_samples_per_pixel (fpp * speed);
+               _view->set_samples_per_pixel (fpp);
        }
 
-       StripableTimeAxisView::set_samples_per_pixel (fpp * speed);
+       StripableTimeAxisView::set_samples_per_pixel (fpp);
 }
 
 void
@@ -1300,21 +1294,16 @@ RouteTimeAxisView::set_selected_regionviews (RegionSelection& regions)
 void
 RouteTimeAxisView::get_selectables (framepos_t start, framepos_t end, double top, double bot, list<Selectable*>& results, bool within)
 {
-       double speed = 1.0;
-
-       if (track() != 0) {
-               speed = track()->speed();
-       }
-
-       framepos_t const start_adjusted = session_frame_to_track_frame(start, speed);
-       framepos_t const end_adjusted   = session_frame_to_track_frame(end, speed);
-
        if ((_view && ((top < 0.0 && bot < 0.0))) || touched (top, bot)) {
-               _view->get_selectables (start_adjusted, end_adjusted, top, bot, results, within);
+               _view->get_selectables (start, end, top, bot, results, within);
        }
 
        /* pick up visible automation tracks */
-       StripableTimeAxisView::get_selectables (start_adjusted, end_adjusted, top, bot, results, within);
+       for (Children::iterator i = children.begin(); i != children.end(); ++i) {
+               if (!(*i)->hidden()) {
+                       (*i)->get_selectables (start, end, top, bot, results, within);
+               }
+       }
 }
 
 void
@@ -1409,13 +1398,6 @@ RouteTimeAxisView::fade_range (TimeSelection& selection)
        playlist = tr->playlist();
 
        TimeSelection time (selection);
-       float const speed = tr->speed();
-       if (speed != 1.0f) {
-               for (TimeSelection::iterator i = time.begin(); i != time.end(); ++i) {
-                       (*i).start = session_frame_to_track_frame((*i).start, speed);
-                       (*i).end   = session_frame_to_track_frame((*i).end,   speed);
-               }
-       }
 
        playlist->clear_changes ();
        playlist->clear_owned_changes ();
@@ -1444,13 +1426,6 @@ RouteTimeAxisView::cut_copy_clear (Selection& selection, CutCopyOp op)
        playlist = tr->playlist();
 
        TimeSelection time (selection.time);
-       float const speed = tr->speed();
-       if (speed != 1.0f) {
-               for (TimeSelection::iterator i = time.begin(); i != time.end(); ++i) {
-                       (*i).start = session_frame_to_track_frame((*i).start, speed);
-                       (*i).end   = session_frame_to_track_frame((*i).end,   speed);
-               }
-       }
 
        playlist->clear_changes ();
        playlist->clear_owned_changes ();
@@ -1527,11 +1502,6 @@ RouteTimeAxisView::paste (framepos_t pos, const Selection& selection, PasteConte
 
        DEBUG_TRACE (DEBUG::CutNPaste, string_compose ("paste to %1\n", pos));
 
-       if (track()->speed() != 1.0f) {
-               pos = session_frame_to_track_frame (pos, track()->speed());
-               DEBUG_TRACE (DEBUG::CutNPaste, string_compose ("modified paste to %1\n", pos));
-       }
-
        /* add multi-paste offset if applicable */
        std::pair<framepos_t, framepos_t> extent   = (*p)->get_extent();
        const framecnt_t                  duration = extent.second - extent.first;