more efficient linear time stretching shrinking

First of all let me say that I’m new to Ardour, but from what I’ve seen and experienced so far it’s an awesome piece of software and I look forward to using it a lot.
So I’ve been looking for a more efficient workflow to accurately stretch or shrink (speed up or slow down) a piece of music.
The use case is the following:

  1. I have a somewhat longish piece of music, say 20 bars with 4/4 time, loaded as a region on a track. It’s just a wav file, I have no other information.
  2. I can discern particular beats somewhere in the middle of the music that I want to match to particular beats on the track.
  3. I want to choose two points on the region (the beats that I can discern) and two points on the track and have the entire region stretch or shrink (linearly) and shift so that the points on the region match the corresponding points on the track.
    Is it possible to do this now?:
    I’ve tinkered with the software and looked in the manual and forums and my most realistic option to do this appears to be:
  4. To split the region at the beats that I can discern,
  5. then shift the resulting “middle” region to the desired starting beat along the track and
  6. then stretch / shrink it to the desired ending beat along the track.
    The problem here is that I have no idea by how much to shrink stretch the new surrounding regions in order to keep the tempo consistent. Is this possible?
    Using Rhythm Ferret is essentially similar to the previous approach but even more problematic because:
    I could end up with dozens of small regions that I now have to:
  7. Inspect manually to see if splits are in the right place, (assuming that I can discern the correct locations)
  8. Merge and re-split as necessary (assuming that the previous step is possible)
  9. Stretch to the desired locations along the track
    Seems like a simple task just grew exponentially and with uncertain results to boot.
    Should this be possible?:
    Ardour’s back end must be getting some kind of numeric information from the front end. I’ll just speculate that when you stretch / shrink a region the front end calculates some kind of conversion factor based on the ratio of the original length versus the new desired length (specified graphically in the tool) and just sends that factor to the back end, which does it’s thing and returns a stretched region.

Apparently these lengths can only refer to the total extent of a region, that seems to be the limitation.

So all that would be necessary would be to allow user defined extents (original to new or region to track or whatever), then the ratio/factor could be calculated and sent to the back end which would continue doing it’s thing as before being non the wiser.

Looking at the forums I’ve seen a few requests for similar functionality (which would add usefulness and precision to the current stretching tools). And while I know the developers must be extremely busy, allow me to suggest that such an improvement would give Ardour a lot of bang for the buck.

@Andrew_Peru: if your track is a performance, live or not the resulting sound can be poor, i tried this before when i was asked to make a metronome track and structure of 6 live recorded thrash metal songs heh…

so i tried to some how “fix” the tempo of the tracks, it was helpful to make the metronome track but in terms of resulting sound it was a disaster i had like 100 regions streched or shrinked and the stereo sound gets all weird when you shrink or stretch full music regions.

now thats not your case, but if your track is tempo-stable you could do some math that takes you to “how much shrink or stretch the region”, you would have to:

  1. know how many beats are there between the start and end points you can discerne (this may be a pain to do)
  2. know how much “time” there is between the TARGET start and end points

with this you can calculate the tempo of the first track, considering its the same tempo for al the track you can calculate the lenght of the track in terms of beats, so you will know which beat is the first and where it is, as well as the last beat…

now all you have to do is TRIM the region to its exact start and end, take it to the TARGET start and stretch or shrink to the target end.

i’m pretty shure it’ll be a major pain to do… but its “possible” heh… hope that helps, if there is another way please, anyone answer, i’ll want to know it too.

now… i think it is not available in Ardour, i think i remember that in other DAW you can actually “mark” both beats you know and with then just take them to the places they should be and shrink or stretch the whole region with them, i think i did it once on Nuendo, or Logic, and i hope Ardour will eventually evolve enough to not ever name those DAWs again! heh…

i think it is always good to point out the “do-able” improvements Ardour should have in the future since the developers may not always notice them themselves being busy programing and testing.