MIDI encoders with paired events

(ash) #1

Hello!

Recently, I purchased a cheap 25-key keyboard (WORLDEMINI, if this is important), to use it as a control interface for Ardour 5.12 as well.

Unfortunately, to all its other " features", the encoders send pair events for one turn, which, apparently, Ardour cannot correctly interpret.

The first event is always 64, the following:
63 for counterclockwise rotation
65 for clockwise rotation

Maybe someone faced with this behavior? Tell me, how can I get encoders to work in Ardour?

It seems that if you somehow filter the first event (64), then an encoder with the type enc-b will work. Is there any way to do this?

(Len) #2

So a no movement event followed by movement.

It seems that there is a bug in Ardour. Maybe add it to the tracker so we don’t forget. I expect Ardour does not make 64 a no movement, but rather just does a split anything above a value goes up anything below goes down. So turning one way will probably go in double steps and the other way looks to Ardour like one step each way with a net result of 0. I expect that will be fixed in Version 6… but until then in linux you should be able to use an external midi filter like qmidiroute to pass everything but 64.

(Paul Davis) #3

Is that really a bug? There are 128 possible values between 0 and 127 inclusive. 0-63 (64 values) are considered to indicate one direction, 64-127 (64 values) are considered to indicate the other. How else would we break this down? Just change the “split” point to 63 ? If we consider 64 as “no movement”, it will likely break some other encoder … It would need a new encoder type, I think, which explicitly marks 64 as “no movement”.

(Len) #4

Right, so far as I know this is the first use of this kind. In our manual we say: 64+ and 64- which does mean 64 is zero movement. As this is based on the documentation of the BCF2000, I expect that leaving 64 as zero is intentional. All of the other enc-* do have a zero position. The first two have -0 and +0 (like the mackie). Having a zero movement is actually quite important for use as a jogwheel or speed setting. This is why I suspect my math is wrong currently. Here is a snip from documentation:
BCF2000-encoder-modes
This is from documentation of someone who actually looked at what the output was. Documentation has changed each time the company has been bought by someone else or maybe because of firmware upgrades. I have two user manuals (a new one today) that are both different.

(ash) #5

Hi, Len!

Thank you for information, and for mentioning qmidirouter, I will explore its possibilities.

I do not know if this information will be useful, but I have already seen the “relative-1,2,3” from your screenshot in the application that configures my midi controller. I can send the sequences events that the controller generates for each type of “relative” if it comes in handy.

(ash) #6

Actually, only relative #1 (default settings) generate pair of midi events, other two generates one event. Below events for different types of “relative”, counter clockwise first and then clockwise.

relative #1
relative1

relative #2
relative2

relative #3
relative3

(Len) #7

So maybe your quick fix is to use relative 2 or 3… though rel 2 looks like enc-2, rel 3 looks odd I would have expected 01 for one direction and 41 for the other.

(ash) #8

Hi, Len!

Unfortunately, the problem is that 1) the program in which the settings are made, works only under Windows 2) the settings made are not saved when the keyboard is turned off

Thus, only the default settings (relative #1, paired events) enabled under Linux, and encoder type suitable for Ardour (relative # 2) cannot be set.

Acceptable workaround, thank you again - to use qmidiroute (I have already tested it) and skip the first event for relative # 1, then Ardour works fine with encoder type enc-b and checked option Enable Feedback.

(Len) #9

Sigh…

Well I am glad you have a fix anyway. It is too bad the default action is the bad one. (both on the kb and in Ardour it seems)

(ash) #10

Hi!

Just FYI. I tried relative #2 type of encoders, it is works as enc-2 in Ardour, BUT value 127 is not recognized as “-1” and Ardour is not reacts if I turns knob gently counter clockwise. 126 recognized as “-1”, 125 as “-2” and so on.