Details of Renoise groove functionality

I was wondering if anyone knows the details of how the groove module in renoise works internally?

I use sunvox as well as renoise and I am keen to do a project in which I could create a groove in sunvox (as discussed here:, in the traditional tracker way, adding and subtracting ticks from lines. However, I want to render my sunvox work to .wav, load it up in renoise and add renoise sample based stuff to it (breaks and bass) using the same groove settings.

In other words I’m looking for a way to achieve sunvox (or other tracker, milkytracker etc.) + renoise groove setting interoperability. I need to find out exactly how renoise pushes ticks around in the groove module. I could use the standard LPB settings (4 LPB), but I prefer to use 12 LPB just for ease of adding triplets.

Sorry for this kind of annoying question.

Any help with this would be much appreciated.

The groove module unfortunately doesn’t have much love for LPB that isn’t 4/8/16…you’ll get some interesting results, but probably not what you’re looking for.

Other than that, it’s quite simple. I don’t know the exact algorithm, but I can still describe roughly how it works -

A traditional “shuffle”, which you see in most sequencers, works by delaying every 2nd note by the given amount (this is also used in phrases, btw.),

The groove is a slightly expanded version which allows four independant values. But essentially, it’s the same idea - delay every Nth note by some amount.

And the LPB affects how the groove is applied. Generally speaking, a low LPB value such as 4 will treat each line independently, while higher LPB values will group together multiple lines to form a “unit” which is then delayed. This makes sense, as you wouldn’t really want the groove to change for every line when notes are whizzing past in e.g. 32 LPB.

It would be great if we had an additional “beats per bar” setting. This is already present for the metronome, but unfortunately doesn’t affect the groove timing.

  1. I’m not 100% sure what the percentage sliders in Renoise represent, but it should be easy to find out by experimenting.

  2. The general formula descibing the relationship of shuffle BPM:s and total BPM in oldschool trackers is like this (I hope I remember correctly): ((1 / bpm_1) + (1 / bpm_2)) / number_of_bpms = 1 / total_bpm

Number_of_bpms being 2 in this case. If you shuffle between 60 and 120 for example, the resulting BPM will be 80 (and not the avarage, since the various BPM:s aren’t in effect for the same amount of time). Renoise probably uses this formula in some variation and presents it as four percentage sliders. This is just some foundation that might be good to know later on.

Regarding the triplets, it would then require an additional formula to find out what delay values you need to use to place perfect triplets under a global groove. I haven’t seen it done yet, but it would be useful and maybe some math genious can elaborate a bit?

Curiousity: I think it was a bit common to use F50 and FA0 as shuffle values, since they would allow “good enough” triplets without using delay values. At least on every other bpm.

Thanks for your help.

I wonder if the percentage sliders in the groove module work at a higher resolution than ticks, like maybe they affect the 256ths of a line, or as you said by affecting BPM.

A traditional “shuffle”, which you see in most sequencers, works by delaying every 2nd note by the given amount…

This is the technique I will be using to apply a groove/swing/shuffle to my patterns in sunvox.

Maybe I would be better off trying to recreate that kind of groove in renoise by using ZKxx [- Set Ticks Per Line (TPL) (01 - 10)] on every line to get the two grooves to align perfectly, rather than using the groove module. Instead of using 12 LPB setting for easy triplets I’ll use the delay commands, although that may get quite complicated if I’m changing the TPL every second line…

As long as I do groove settings like below in both renoise and sunvox (and maybe milkytracker too) then they should all align properly I think.


(1st of every 2 lines): 14 TPL [ZK0E]

(2nd of every 2 lines): 10TPL [ZK0A]


(1st of every 2 lines): 10 TPL [ZK0A]

(2nd of every 2 lines): 14TPL [ZK0E]


(1st of every 2 lines): 14 TPL [0F0E]

(2nd of every 2 lines): 10 TPL [0F0A]


(1st of every 2 lines): 10 TPL [0F0A]

(2nd of every 2 lines): 14 TPL [0F0E]


(1st of every 2 lines): 14TPL [F0E]

(2nd of every 2 lines): 10TPL [F0A]


(1st of every 2 lines): 10TPL [F0A]

(2nd of every 2 lines): 14TPL [F0E]

I think grooves based on 7/5, 5/7 ticks would also fit with this.

I suppose 10/14tpl, or 5/7tpl grooves would also fit with groove settings that are the other way round (14/10tpl, 7/5tpl)?

Do you think its better to do (1st line: 14ticks, 2nd line 10 ticks) or the other way round (1st line: 10 ticks, 2nd line: 14 ticks) or a mix of both?

Does anyone know how to do accurate triplets using delay commands whilst using these kind of groove settings?

Heres the various TPL commands:


ZKxx - Set Ticks Per Line (TPL) (01 - 10).


0F - Set playing speed. This effect changes the speed (number of ticks per line) of playback. Valid values for speed setting are 1 - 1F (1 - 31 in decimal). Values above 1F (31 in decimal), represent a modified speed based on beats per minute, where 4 lines are 1 beat. A speed value of 2A (42 in decimal), equals 42 beats per minute.


Fxx: Set song speed/BPM Syntax: F xx = speed/BPM value


Parameter x values 011F set song speed i.e. the amount of ticks per row. Values 20FF set the BPM which essentially is the speed of the ticks. F00 stops playback.