Thanks to @synthi for adding a ramp out to simpliciter, I have made the crossfading looper I wanted. crossfading looper | Patchstorage
Start by hitting “play” on one of the simpliciters, making sure the bottom constant offset sits in the range (5,7.5). Stop looping by moving that same control outside this range.
The main challenge was finding the right module for the job, since the patch is not possible without an envelope generator that scans (takes a ramp input rather than a gate) and reports which stage it’s on. My first attempts using BZ-Mapper and pdArray were flummoxed by the latter requirement. I tried using HetrickCV Delta to make gates when the envelope started descending, but I found that it was not stable (small floating point differences during the constant portion of the envelope would read as descent). Scannibal did the trick. (Main downside being it’s not poly and takes up a lot of hp, but if you really need the screen real estate you can use teleport.)