no more per-track varispeed

This commit is contained in:
Paul Davis 2017-04-17 11:12:49 +01:00
parent 2a1dccabc9
commit f9e7ffc601
6 changed files with 31 additions and 150 deletions

View 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) {

View 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);

View 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

View 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);
}

View 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.

View 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;