View Issue Details

IDProjectCategoryView StatusLast Update
0007743ardourfeaturespublic2019-03-21 11:20
Reportercolinf Assigned To 
PrioritynormalSeverityminorReproducibilityhave not tried
Status newResolutionopen 
Product Version5.X git (version in description) 
Summary0007743: 'Enclosed' region equivalence mode (maybe others too) could use region sync points
DescriptionIt's pretty much impossible to devise a region equivalence mode that'll do exactly the right thing all the time for any given workflow. 'Enclosed' is the closest to what I normally want (unsurprisingly, since the idea was mine), but even so, it's still not always exactly what I want.

Adding more tweaks & heuristics, or more region equivalence modes, is one approach, but I think that adding a manual override to region grouping could be less confusing and more versatile.

I propose to make regions with identical sync points equivalent (in Enclosed mode, at least). That way, adding equivalent regions is as simple as selecting all the regions you want to be equivalent and hitting 'v'. I don't think this is likely to conflict with existing use-cases of region sync points, and it seems simpler than adding a new property to each region to signify its equivalence status (though I suppose that's also a possibility).
Additional InformationTrivial patch to make it so for Enclosed mode attached
TagsNo tags attached.



2019-03-21 11:20


region-eqivalence-sync-points.patch (846 bytes)   
From 05d7568499bce39b2726a3fa843b9aa98deaeac6 Mon Sep 17 00:00:00 2001
From: Colin Fletcher <>
Date: Mon, 17 Sep 2018 19:06:21 +0100
Subject: Regions with coincident sync points are equivalent in Enclosed mode

diff --git a/libs/ardour/ b/libs/ardour/
index 13dcdff32..a1e2de630 100644
--- a/libs/ardour/
+++ b/libs/ardour/
@@ -1481,7 +1481,8 @@ bool
 Region::enclosed_equivalent (boost::shared_ptr<const Region> other) const
 	return (first_sample() >= other->first_sample() && last_sample() <= other->last_sample()) ||
-	       (first_sample() <= other->first_sample() && last_sample() >= other->last_sample()) ;
+	       (first_sample() <= other->first_sample() && last_sample() >= other->last_sample()) ||
+	       (sync_position() == other->sync_position());

Issue History

Date Modified Username Field Change
2019-03-21 11:20 colinf New Issue
2019-03-21 11:20 colinf File Added: region-eqivalence-sync-points.patch