helgoboss / helgobox

Helgobox: ReaLearn & Playtime
https://www.helgoboss.org/projects/helgobox
GNU General Public License v3.0
211 stars 20 forks source link

Relative encoder acceleration performance often worse than absolute. #877

Closed NickAllott closed 1 year ago

NickAllott commented 1 year ago

To start off, I am really enjoying ReaLearn, it’s a great plugin. Thank you.

Quite often I cannot get as good acceleration from my encoders in a relative mode (compared to absolute). This is the case the 3 controllers I have which are the XTouch mini, Minilab 3 and Komplete A25. With Reaper’s master volume slider and with Analog Lab’s controls they all work just as well in absolute and relative and I can set both to 1% min and 5% max step size. The absolute could be set either via the midi controller or via Relearn’s “make absolute” option.

However in Vital, Komplete Kontrol and others, even if I set the relative max step size or speed to 100%, it doesn’t reach the acceleration of absolute mode at just 5%. I think both of these plugins might have a high number of increments for their encoder parameters.

In Vital, I have to set the min to 2-3% to get the same max acceleration range, but even then, it doesn’t whip around as well if you do a fast turn. Also, now small movements are 1/2 or 1/3 as accurate. In Komplete Kontrol it is worse (except with the A25 directly). It’s based on speed and has 10,000 increments. For “make absolute” I can set to 100 min and 500 max and get both small steps and the full range in one twist. In relative I must set it to 1,200 min and 10,000 max to get the same max range (so the finest movement is now 12%, creating obvious steps if I twist).

Is there anything that can be done?

I’ve decided to use absolute mode for either the plugins that perform like this or in general (to save switching). It’s a shame, as I can see the benefits of endless encoders when they work well.

NickAllott commented 1 year ago

I've found that if I use a VST3 version of a plugin, the relative acceleration works just as well as absolute. The issue arose when using CLAPi (for Vital) and VSTi (For Komplete Kontrol).

With this in mind, I think its a low priority to address. It would be helpful to mentioned in the documentation so people can work around it.

helgoboss commented 1 year ago

This is a known issue with NI plug-ins. Exactly, the problem is that their parameters are configured to have 10000 steps. You can solve this by manually entering a step size or speed > 100 in the field, i.e. not using the slider (which ends at 100).

I want to solve this in a better way with #702.

NickAllott commented 1 year ago

Good to know, thank you.

NickAllott commented 1 year ago

Hi helgoboss

When I tested it, the problem was not solved. I think there may be a little more to it. If I set Komplete Kontrol VST and VST3 up to the same relative step size, they act quite different. I set the VST to 100 and 500 and the VST3 to 1% and 5%.

Is that what is being address by #702 or is there something I've missed?

Please see the video example below. I do a slow then fast encoder movement for both vsts one after another. https://github.com/helgoboss/realearn/assets/140663411/380397be-8ff6-4db3-8e59-d6f208cf3423

helgoboss commented 1 year ago

I think I know what you mean. The way acceleration works in ReaLearn on discrete parameters (= non-continuous = having a distinct number of values), is that it uses the acceleration value sent by the hardware (some value between 1 and 63) as the number of increments, but at a maximum uses "Speed max". So even if you set it to 500, the highest increment will be 63.

Usually this is not an issue because most plug-ins report parameters that have thousands of values as continuous.

So what you need is either #702 or a new feature to set an acceleration factor. Please vote for #702.

NickAllott commented 1 year ago

Thank you for explaining the issue. I've given #702 's initial comment a 👍.