How to Detect Increments of MIDI Value?

I agree, I just tested with my LX25+ and if you turn the knob fast, the controller skips values. This means that you will need to determine if a given value has been skipped over and send keystroke if one of your target values has been passed.

I don’t have any other MIDI controllers to test this with, is the problem exclusive to Nektar products?

This will get you closer but not perfect. It will determine if you have moved more than 7 clicks since last movement and if so, will output character the amount moved divided by 7. Unfortunately it does not test whether you have “passed” an desired click value so if you move 6 then 6 again, nothing happens. Will need to determine logic on when we have crossed over given points moving both up and down to make it completely what you want.

 


Attachments:
1557541645507_Double_Absolute_Knobs-2019-05-10.bmtp

Here is another shot. Unfortunately due to timing issues I have to put a 180 ms delay on output so that we have enough time to evaluate the move of the knob. and then send out up to 18 keystrokes output.

 

This one uses a timerto figure out how many times, the knob has passed a trigger mark (every 7 ticks) when the knob has moved.

It then uses the count to determine how many keystrokes to send (either left or right).

 

Let me know what you think.

 

Steve Caldwell
Bome Q and A Moderator and
Independent Bome Consultant/Specialist
bome@sniz.biz

 


Attachments:
1557548356862_Double_Absolute_Knobs-2019-05-10a.bmtp

This one should be even cleaner. Instead of using a timer to figure out how many clicks to turn, I figured out the proper math thereby reducing the number of timers required.

 


Attachments:
1557551438909_Double_Absolute_Knobs-2019-05-10e.bmtp

When setting the delay to 0 ms this is absolutely perfect. I’m not sure why you made the initial delay 100 ms because it works just the same without a delay. Thank you very much.

This is even better than I realized because I can easily set the amount of keystrokes it outputs by changing
g0=gd/(integer)
g1=ge/(integer).
What an absolutely beautiful solution you have provided, I could not find a single thing on the internet that works even remotely as well as this.

I’m glad I could help. For me, if I did not set a delay, I would get too many keystrokes in a single direction if I set the delay too low. For the calculations, you should never get more than 18 keystrokes in one direction. Without the delay, I was sometimes getting twice that as I don’t think the translator was giving enough time to calculate the number of clicks.

That’s strange, for me it always puts out 18 keystrokes with a 0 ms delay no matter what I do.

Glad to hear it. That should work perfectly for you then. I’m not happy with Nektar for skipping MIDI values though. I guess they were trying to reduce MIDI traffic. Maybe it is a parameter that can be changed. I often deal with idiosyncrancies of various manufacturers’ MIDI implementations.

It looks like this is a switchable feature with shift-null. Look at page 10

https://system.na3.netsuite.com/c.1289520/Downloads/Impact_LX+_User_Guides/Impact_LX25+_User_Guide_ENG_1.0.pdf

I am unsure if the shift-null makes a difference as it seemed to react the same regardless of whether it was turned on or not, however an alternative solution I’ve found is to change the Data 2 value of the knob using the instructions on page 16 to a desired value of keystrokes I would like to output.

Actually nevermind, even when I set it to 9 CC values there is still some skipping when I turn the knob quickly.

Right, reading on with shift null it looks like it is really a different function and is to handle takeover mode locally in case a DAW can’t handle it. I don’t know any DAW that can’t handle it’s own takeover.

I think it’s so the parameter doesn’t jump to the value of the knob or fader when you link it to a control in a DAW.