Here is one method I’ve used in the past. It’s not perfect - no method really is - but maybe it’ll give you a better idea of how to get what you want.
Let’s imagine that we have a perfectly timed drumloop which is 4 beats long (and contains 16th notes in this example). If we were to apply the sample offset command to it, the results would look something like this:
00 C-400 .. 0900
01 C-400 .. 0910
02 C-400 .. 0920
03 C-400 .. 0930
04 C-400 .. 0940
05 C-400 .. 0950
06 C-400 .. 0960
07 C-400 .. 0970
08 C-400 .. 0980
09 C-400 .. 0990
0A C-400 .. 09A0
0B C-400 .. 09B0
0C C-400 .. 09C0
0D C-400 .. 09D0
0E C-400 .. 09E0
0F C-400 .. 09F0
That’s fine for a “straight” loop which has no swing/groove in it, but it’s not very useful for live breaks because the kicks, snares, highhats, etc. probably fall on imprecise sample offset positions.
So let’s take a live break such as funkydrummer, amen, etc., something with a bit of swing to it. By examining the break in Renoise’s sample editor we can find the correct (or as close as possible) sample offset positions of all the hits within the loop. If we reconstruct the loop once more it might look something like this:
00 C-400 .. 0900
01 C-400 .. 0911
02 C-400 .. 0922
03 C-400 .. 0930
04 C-400 .. 0941
05 C-400 .. 0950
06 C-400 .. 0962
07 C-400 .. 0971
08 C-400 .. 0980
09 C-400 .. 0992
0A C-400 .. 09A1
0B C-400 .. 09B0
0C C-400 .. 09C2
0D C-400 .. 09D1
0E C-400 .. 09E2
0F C-400 .. 09F1
So now we’re triggering the correct points in the live break but the original groove of the break has been quantized/lost in the fixed pattern structure.
Now it’s time to put the groove back in there by using the note delay command. Before this I first set my song to speed 12 or 16. Speed 16 will give you “perfect” results since there are 16 divisions inbetween 0900 and 0910, 0910 and 0920, etc., therefore allowing you to delay the note by the exact same value to match the sample offset, but speed 12 is totally fine too and will be simpler to deal with in terms of the overall bpm.
00 C-400 .. 0900
01 C-400 D1 0911
02 C-400 D2 0922
03 C-400 .. 0930
04 C-400 D1 0941
05 C-400 .. 0950
06 C-400 D2 0962
07 C-400 D1 0971
08 C-400 .. 0980
09 C-400 D2 0992
0A C-400 D1 09A1
0B C-400 .. 09B0
0C C-400 D2 09C2
0D C-400 D1 09D1
0E C-400 D2 09E2
0F C-400 D1 09F1
Wherever we had a sample offset value such as 0941, we take that last digit and delay the note by the same amount. This means the drum sounds are being triggered at the correct point AND the correct time to maintain the groove. Now you can easily speed up your song and the drum groove should be maintained.
Like I said, this method is not perfect. It doesn’t work well if you’re trying to slow down the bpm. Also, since we’re using speed 12 (or 16) which forces us to (at least) double our bpm, you lose some flexibility if you plan to automate the bpm using the F0xy command since that can currently only go up to F0FF which is 255bpm.
Anyway, hope this helps a little bit at least. If it doesn’t make sense I will do a demo song when I get home later tonight.
.