stoermelder / vcvrack-packone

Modules for VCV Rack
GNU General Public License v3.0
173 stars 38 forks source link

Midi Cat don't work with Rack modules using Encoders #370

Open nay-seven opened 1 year ago

nay-seven commented 1 year ago

Hello, There are some new modules from Omher dev, and he uses encoders in these, i try to assign midi learn with MidiCat, yellow led is visible, but the knob of course don't react, any chance to add this feature ?

Thanks

Here a link to the FroeZe modules

DomiKamu commented 1 year ago

Hello, I'm Dominique, Ohmer Modules and OhmerPrems plugin developer. I confirm the indications given by nay-seven, just above.

All of mine modules are using continuous encoders (never knobs), like this for FroeZe (from module constructor):

configParam(PARAM_QPCS_DM, -INFINITY, INFINITY, 0.f, ""); configParam(PARAM_QPCS_KIT, -INFINITY, INFINITY, 0.f, ""); configParam(PARAM_LAST_STEP, -INFINITY, INFINITY, 0.f, ""); configParam(PARAM_PATTERN, -INFINITY, INFINITY, 0.f, "");

I need continuous encoders because (except perhaps LAST STEP, have min and max,) but all others are "list-based", with cycling feature while scrolling in lists (for example by turning CW, 1 becomes 2, then 2 becomes 3, 3 becomes 4... but if 4 is last parameter in list, by moving +1 again, this return to first item).

Many modern hardware MIDI controllers and synthesizers now are using continuous encoders, instead of pots. It's the case on my Komplete Kontrol S61 MK2 keyboard and Arturia Beat Step Pro MIDI controller, also true about my old M-Audio Code 61 controller, for rotaries.

As another example, my new sequencer (FroeZe module) hosts 128 patterns, I can't imagine, by using MIN/MAX knobs, if pattern is 128, to browse all previous to return to first. I must be able to access to pattern 128, from 1, by simple CCW turn (this is the actual and natural behavior). And vice versa from 128, simple CW move go to 1.

By this way, by turning CW, it adds +1, by turning CCW, it's -1, aka relative. The encoder uses relative moves (its internal absolute value - via "parameter getValue()' - is totally useless, unlike a knob having MIN MAX limits and angle of rotation).

All settings from MIDI CAT I've tested are unefficient (assuming it's normal).

Please take a look on image below: for patterns change from MIDI controller, a possible way is to use a "manual knob" - as proxy module - who send an unipolar 0V~+10V voltage/value, like Count Modula Poly Manual CV module does.

From FroeZe module, it's important to enable the CV PATTERN option (context menu - by default, this option is disabled).

Patch the Poly Manual CV output to PREV. input port on FroeZe (green patchcord in the screen capture).

In this scenario, the pot acts as absolute pattern # selector (from 1 to 128).

Finally, do a learn/map from a rotary on MIDI controller (MIDI CC), then assign it to... the Poly Manual CV knob! Voila.

This tip is working, but I admit it's not really elegant because it requires a "proxy" module (in this case, the Count Modula's Poly Manual CV module).

The best way is to handle a "+" or "-" informations, and providing a kind of "adjustable sensitivity factor" (integer or float). But I don't know how it's possible to implement, however.

Thanks to consider this possibility (if possible, obviously).

Of course, if required, don't hesitate to ask me (PM on community forum is the best way IMO - my nickname is simply Ohmer) to bring additional informations you'll need & help as necessary (I'll can do) to add this feature to MIDI CAT module.

Thanks in advance.

Regards, Dominique Camus - Ohmer Modules & OhmerPrems

image

stoermelder commented 9 months ago

This is right, MIDI-CAT does not support endless encorders as it would complicate things very much.
I created a module MIDI-STEP some time ago for handling endless encoders: It outputs simple triggers for increments and decrements, supporting different protocols used by MIDI controllers for endless encoders. https://github.com/stoermelder/vcvrack-packone/blob/v2/docs/MidiStep.md The manual also mentions a companion module PILE for converting these triggers into absolute values, if necessary, using an adjustable step size. I suspect MIDI-STEP already does the trick for what is needed?

higaru2 commented 9 months ago

Ben, just so you know (and other ppls): midi fighter twister WORKS with midi-cat in CC mode here! no extra steps needed.

thank you!

On Tue, Oct 3, 2023 at 4:51 PM Ben @.***> wrote:

This is right, MIDI-CAT does not support endless encorders as it would complicate things very much. I created a module MIDI-STEP some time ago for handling endless encoders: It outputs simple triggers for increments and decrements, supporting different protocols used by MIDI controllers for endless encoders. https://github.com/stoermelder/vcvrack-packone/blob/v2/docs/MidiStep.md The manual also mentions a companion module PILE for converting these triggers into absolute values, if necessary, using an adjustable step size. I suspect MIDI-STEP already does the trick for what is needed?

— Reply to this email directly, view it on GitHub https://github.com/stoermelder/vcvrack-packone/issues/370#issuecomment-1745023473, or unsubscribe https://github.com/notifications/unsubscribe-auth/AC3ZRBNNP3CAK6AJHQFTC5DX5QJ5HAVCNFSM6AAAAAAWNDJEZ6VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTONBVGAZDGNBXGM . You are receiving this because you are subscribed to this thread.Message ID: @.***>