Yeah sure, the formula is based upon two things:
-
Renoise supports BPMs from 20 to 999. So that’s
999-20= 979 possible BPMs. -
The LFO device splits whatever parameter you are modulating into 100 percents.
When you modulate the BPM with an LFO device, you need to know how the BPM correlates to the percentages you put to your custom envelope. 979/100 = 9,79 which means that one percent is precisely 9,79 BPM.
On top of this you need to take into account the fact that Renoises possible BPMs don’t start from zero but from 20. So to take into account the positive offset of 20, you need to subtract 20 from the actual BPM you are going from.
If x is the BPM you want to create a point for, you can calculate the exact percentage of the said point with:
( x - 20 ) / 9,79 = the percentage you should put on the point
This assumes 100% amplitude and 50% offset on the LFO device.
Hope this helps. I figured this out when the beatsync function was implemented and I wanted a way to randomly speed up or slow down samples into spesific BPMs that are rythmically relevant to eachother. If you use another LFO and a keytracker, like I showed in the end of my XRNS, this method makes it possible to have a sequenced sample and hold with quantised output values upon any parameter, including the BPM and LPB. Makes metric modulations super easy and you can do some very experimental stuff with it too. Stuff that’s most definitely not possible with all DAWs.
You can also take it a step further by adding another similar layer which controls the rate of the LFO controlling the BPM modulating LFOs rate. This allows you to sequence (or sample and hold) the rate of the sequencing of the BPM. There’s also many other ways to use this technique, I definitely haven’t uncovered all the possible implications. Many experiments yet to be done here.
I should also point out that whether you’re sampling and holding using a key tracker device (using note triggers in pattern) or using a fixed rate random LFO to trigger the BPM change, both ways cause the “sequencer” that’s triggering the BPM change to also change its speed. This means that if you put two points, let’s say for 60 BPM and 120 BPM, the higher tempo will always cause the next BPM change to happen twice as fast. This means that the BPM will stay in 60 about twice as much as in 120 BPM. You can compensate for this using twice as much space in the LFO devices custom envelope for the higher tempo (3 points 1=60BPM 2=120BPM 3=empty/120BPM). I would assume that there’s most likely a possible way to use the hydra device (or at least the formula device) to go around this problem too, but I haven’t bothered looking into it seriously.
Hope this helps! Happy experimenting!
EDIT: updated to reflect the changes in the 3.4.1 update (lowest BPM was changed from 32 to 20)