groove quantization, solution ?

Got a great idea for the future of LMMS? Post it here.
Forum rules

Make sure to search to see if your idea has been posted before! Check our issue tracker as well, just to make sure you are not posting a duplicate: https://github.com/LMMS/lmms/issues

This is work in progress if I look at github for LMMS, but I might have found a solution.

https://stochas.org/

There is a Linux, mac and window version.

Stochas Tutorials 6 - Grooves and Humanisation


I still have to test this myself, but it should be possible to use this as a plugin, but there is also a standalone version.
Hi all,

I recently found a simple but perfect solution (for me) to get adjustable global groove quantization in lmms without any extra tools. As far as I know, nobody (even not MusikBear) did this before to make lmms groove/shuffle/swing.

I'm flashed and need to share this with you right now:

Imagine your song tempo is 140 BPM and all your notes are quantized to 1/16. Now add an automation track, CTRL-click on the tempo and drag it into your automation track. In the automation editor choose discrete progression and set quantization to 1/16.
Now, for the first 1/16 of the beat set a tempo of 120 BPM and for the second 1/16 set a tempo of 168 BPM. Repeat 7 times until the whole beat is filled (looks like a square wave). Leave the automation editor and in the song editor copy this beat so it is repeated for the whole length of your song. And you're done.

This works pretty well, even my Venom VB-303 (VSTi) is now grooving! Every echo delay set to 1/16 will also be affected by these tempo changes. Notes that are played on the 1/32 beat will still sound good. I thought this method to be a bit rude but at least in my linux environment (a simple debian old-stable) it seems to work flawlessly. Even the arpeggiator of lmms WOULD work wonderful if it wouldn't restart its sequence on every tempo change. So you have to build your arpeggios by hand in the piano-roll.

To find the amount of groove/shuffle/swing your beat sounds best with, you should play a short loop of your beat while adjusting the two tempos in the automation editor. Listen what sounds best.

If the original tempo of your beat is b0 = 140 BPM
you can set the tempo of the first 1/16 to everything between 140 BPM (0% Groove) and 140/2 = 70 BPM (100% Groove). Let's say b1 = 128 BPM.
The tempo of the second 1/16 needs to be calculated, otherwise you would change your original tempo. The formula is:
b2 = b1 * b0 / (2 * b1 - b0)
so you get: b2 = 128 * 140 / (2 * 128 - 140) = 154.48 BPM = 154 BPM

Because lmms only allows the tempo value to be an integer, in this example the original tempo will slightly be changed a little bit. You can't hear it, but a very long sample (or a sample-track) will slowly move out of the beat.

Most beats sound better when the "unimportant notes" are slightly delayed, but if you want them to be played earlier (aka negative groove value), just switch the tempos of b1 and b2.

For the wishlist: I would like lmms to have this simple method as a "global groove"-knob besides the tempo-meter with values from -99% to +99%. A thing that MusikBear thought to be impossible with the current lmms. :-) Now, only thing you need is to make tempo a float value. I don't care if the tempo-meter is flickering every 1/16 beat. The fact that all VSTs and even the echo delays are globally grooving, would be an outstanding feature.

Greets XP
xperior wrote:
Sun Jan 05, 2025 3:35 pm
Hi all

[
Hi, Welcome to the Forum xperior !
Here are all important links:
http://lmms.io/forum/viewtopic.php?f=1&t=4740
-A few rules and useful forum instructions
If you like to introduce yourself, to the community, go here:
http://lmms.io/forum/viewtopic.php?f=4&t=4480
Now, for the first 1/16 of the beat set a tempo of 120 BPM and for the second 1/16 set a tempo of 168 BPM. Repeat 7 times until the whole beat is filled
This is interesting, but i see some issues. The BMP is changed globally so everything will be influenced by the change.
How would you groove one track but not any other?

What about not using 1/16 notes or rests, but have notes and rests of triplet size and 1/32 and 1/8 in the same instrument.
That cant work?

The last issue is with LMMS. Our BMP is not absolutely reliable to change with discrete automation.
I have told several that the change of BMP during replay is working best is the automation-graph has a tiny incline, and not being discrete, because then an automated change can fail. That is ofcause something that LMMS should no do, but it happens.

If i have misunderstood your idea im sorry, but i see these for mentioned issues.


The way that is possible if percentage grooving should be 'hacked' is the DEL-dial on the general instrument UI. DEL stands for 'DELay' not as the 'echo'-effect but actual delay of the note-ON-event.
So a later ON-event could be for one instrument that then would be the postponed part of the groove
A copy of the instrument in another track but with 0 DELay would then contain the notes of the combined output that should not be grooved. That would be a way to make note-ON-events be postponed pr msek. That would work, but fidly as heck, and really annoying to keep ..track of if there is need for an edit

Humanization could also depend on DELay dial, where a randomized profile would make subtle Note-On-postponed, make early Note-ON-events some real fiddly movement of all track in songeditor would be needed
Hi Musikbear,

thanks. You are right, this method influences all tracks without exception. It does not affect notes on the "important" beats. And it's the only way to make VSTs with internal arpeggiators (like TAL-BassLine, MiniMogueVA or VB-303) "groove" (or "swing").

Most of the time, when I make a drum-pattern with swing, I want all other tracks to have the same swing. Of course, most times it will be notes on the 1/8 or 1/4 or 1/2 ... where no swing is needed. Or it will be non-percussive sounds (like strings), so you can't hear a difference. But if they are percussive and have notes on the "unimportant" 1/16, I want them to swing too.

But that's my personal opinion. And I'm happy enough that it's actually working good in lmms. I did not see or hear any missed tempo changes while listening for many hours now (as long as you only replay the song without touching anything :-) ).

But as I said, this method is kind of a bit "rude" and somehow unusual. So please forget my wish and replace it with this list: :P

- In the piano-roll the options for Quantize should have something like "1/16 (1/96 Swing)", "1/16 (2/96 Swing)", "1/16 (3/96 Swing)"... which are the steps of the TR-909 Shuffle.

- In the song-editor every track should have a Delay-Knob (as you said) and a switch, where you can choose if the delay is in Milliseconds (very helpful when playing sampled drum sounds) or in 1/192 of a beat. Negative delay values should be possible.

- In the song-editor every track should have a "Repeat"-Knob with value xy between 0 and 999. If xy>0, the track will be repeated automatically from the beginning (01:00:00) when its individual end is reached. It would be exactly the same as if I copy the whole track from the start of the song to the end of the track and then paste it to its end for xy times. It would be nice to even display these repeated copies in the song-editor in a grayed-out "readonly" style. The song pointer and the loop-points will still function exactly like now.

- When making a song in lmms (without swing) somehow the beat never feels so "tight" and "makes-me-nodding" like it should. I'm not sure but I think there are very small timing/tempo glitches in lmms. Even a simple 4-to-the-floor bassdrum without any other instruments somehow sucks compared to other recordings. That has nothing to do with swing or humanization. Is lmms miscalculating something very small that could cause that? Or are my feelings wrong? :lol:

Greets XP
xperior wrote:
Mon Jan 06, 2025 4:18 pm
Most of the time, when I make a drum-pattern with swing, I want all other tracks to have the same swing.
But that is not how swing usually is used. The most used component is hats, so your hats creates a groove up against the other percussion elements that does not swing. It is that groove that is sought after, especially in tekno where that 'hat-groove' almost is a must, witch is kind of difficult in LMMS.
I'm not sure but I think there are very small timing/tempo glitches in lmms. Even a simple 4-to-the-floor bassdrum without any other instruments somehow sucks compared to other recordings.
Hope not! What version are you on?
Hi Musikbear,
But that is not how swing usually is used. The most used component is hats, so your hats creates a groove up against the other percussion elements that does not swing. It is that groove that is sought after, especially in tekno where that 'hat-groove' almost is a must, witch is kind of difficult in LMMS.
Didn't know that, thanks. Will check for this feature when I listen to music in the future.
Hope not! What version are you on?
It's version 1.2.2. First I thought that the timing glitches come from playing in loop-mode between the loop-points. But a few days ago I learned that lmms has a bug: if you edit in the song-editor while playing the song (f.e. delete a part with middle mouse button) the edited track gets out of sync with the beat. Then you need to press stop and if you then press play all is well again. Maybe it was this behaviour that has fooled me...

Greets XP
xperior wrote:
Wed Jan 08, 2025 6:41 am
Hi Musikbear,
But that is not how swing usually is used. The most used component is hats, so your hats creates a groove up against the other percussion elements that does not swing. It is that groove that is sought after, especially in tekno where that 'hat-groove' almost is a must, witch is kind of difficult in LMMS.
Didn't know that, thanks. Will check for this feature when I listen to music in the future.
edit in the song-editor while playing the song (f.e. delete a part with middle mouse button) the edited track gets out of sync with the beat.
Oh ya that thing. Yes deleting whole segments while in replay can lead to issues. I think that also can make 1.3 crash