From 94e0a15325278ec26dbeba4990a0e883db859338 Mon Sep 17 00:00:00 2001 From: nick_m Date: Thu, 16 Jun 2016 00:18:27 +1000 Subject: Exact beat - provide audio->music mapping for region split. - for those not in the know, this series provides a way to remove the temporal distortion introduced when using an audio frame-based gui for music-locked objects. In short, the gui uses an audio frame representation to move objects. It displays the object using frame_at_beat(), quantizing the time value to audio frames. This is fine until the user selects that frame but expects it to be interpreted as a beat. Thus beat_at_frame() would not produce the user-expected beat (temporal quantization error of up to 0.5 audio samples). This is one method of mapping audio time to music time accurately. --- gtk2_ardour/region_view.cc | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'gtk2_ardour/region_view.cc') diff --git a/gtk2_ardour/region_view.cc b/gtk2_ardour/region_view.cc index b9648bbbc3..4f904d9f2b 100644 --- a/gtk2_ardour/region_view.cc +++ b/gtk2_ardour/region_view.cc @@ -861,7 +861,7 @@ RegionView::trim_front (framepos_t new_bound, bool no_overlap, const int32_t& su } bool -RegionView::trim_end (framepos_t new_bound, bool no_overlap) +RegionView::trim_end (framepos_t new_bound, bool no_overlap, const int32_t& sub_num) { if (_region->locked()) { return false; @@ -872,7 +872,7 @@ RegionView::trim_end (framepos_t new_bound, bool no_overlap) framepos_t const pre_trim_last_frame = _region->last_frame(); - _region->trim_end ((framepos_t) (new_bound * speed)); + _region->trim_end ((framepos_t) (new_bound * speed), sub_num); if (no_overlap) { // Get the next region on the right of this region and shrink/expand it. @@ -887,7 +887,7 @@ RegionView::trim_end (framepos_t new_bound, bool no_overlap) // Only trim region on the right if the last frame has gone beyond the right region's first frame. if (region_right != 0 && (region_right->first_frame() < _region->last_frame() || regions_touching)) { - region_right->trim_front (_region->last_frame() + 1); + region_right->trim_front (_region->last_frame() + 1, sub_num); } region_changed (ARDOUR::bounds_change); -- cgit v1.2.3