git-moss / DrivenByMoss

Bitwig Studio extensions for many controllers: Ableton Push I/II, Akai APC40mkI/mkII/mini, Fire, Arturia Beatstep, Novation Launchpads / Remote SLs, NI Maschine / Komplete, Open Sound Control (OSC) and many more.
https://www.mossgrabers.de/Software/Bitwig/Bitwig.html
GNU Lesser General Public License v3.0
562 stars 142 forks source link

Function for relative change of 8 remote control knobs #342

Closed poedyatel closed 1 year ago

poedyatel commented 1 year ago

Is it possible to add a function that allows to use relative mode for 8 parameter knobs? This would be much more convenient than absolute, in which you need to regularly synchronize the knobs.

git-moss commented 1 year ago

Could you please give me some context which device you are talking about?

poedyatel commented 1 year ago

I mean Generic Flexi for Bitwig. I'm trying to make friends with M-vave SMK-25, it's a simple midi controller without deep integration features, 25 keys, 8 pads and 8 knobs We are talking about expanding the list of functions that can be seen in this video https://www.youtube.com/watch?v=jfaEY-AMaNk&list=PLqRWeSPiYQ64O9Ulu_aMQ9mdEDJDColcP&t=330s

git-moss commented 1 year ago

Look at "Knob mode" option: grafik

poedyatel commented 1 year ago

Yes, it's half way. Next step, in the Slot Function panel, where we can select the "Device: Set Parameter 1" function. In this list, we need functions that will increment and decrement values by 1 when a value of 0 or 127 comes from the relative knob. Something like this: Device: Inc\Dec Parameter 1 Device: Inc\Dec Parameter 2 Device: Inc\Dec Parameter 3 Device: Inc\Dec Parameter 4 Device: Inc\Dec Parameter 5 Device: Inc\Dec Parameter 6 Device: Inc\Dec Parameter 8

git-moss commented 1 year ago

No, that is automatically handled depending on the "Knob mode" setting. If it does not work make sure that you selected the correct Relative mode (there are 3).

poedyatel commented 1 year ago

I think that the mode is correct, because if I choose the "Transport: Move Play Cursor" it will work well, if I change the modes, then there will just be a little lag and invert. But the "Device: Set Parameter N" function has another "problem". According to the name it tries to set the value of the parameter to either 0 or 127, and this is ignored because any knob in the bitwig must be "hooked" before it changes value when the hard knob is rotated. Even if we manually make such a "hook", for example, by setting the parameter to the min or max with the mouse, it still will not work correctly, and will jump from min to the max when the physical knob is rotated.

These are the messages the controller sends during rotation knob STATUS DATA 1 DATA 2 CHAN EVENT
B0 176 14 20 7F 127 1 CC 20 Undefined (MSB)
B0 176 14 20 7F 127 1 CC 20 Undefined (MSB)
B0 176 14 20 7F 127 1 CC 20 Undefined (MSB)
B0 176 14 20 00 0 1 CC 20 Undefined (MSB)
B0 176 14 20 00 0 1 CC 20 Undefined (MSB)
B0 176 14 20 00 0 1 CC 20 Undefined (MSB)
git-moss commented 1 year ago

I think there is a misunderstanding. "Set Parameter" controls the remote controls of each device. If you want to do specific mappings, use the USER functions ("User: Set Parameter"). I did a video some time ago about remote control parameters here: https://www.youtube.com/watch?v=UeK9cGfNDeo

poedyatel commented 1 year ago

That's right, we're talking about remote controls of each device and function "Set parameter". I'm not explaining well, sorry, I'll try to explain differently. The relative knob always sends two identical messages containing the value 0 or 127. "Set parameter" sets the received value to the corresponding remote control, i.e: if midivalue = 0 parameter = 0 or if midivalue = 127 parameter = 127 We need a function that will not set absolute value, but add or subtract 1, that is: if midivalue = 0 parameter = parameter - 1 or if midivalue = 127 parameter = parameter + 1

poedyatel commented 1 year ago

I think that the solution to my problem lies in expanding this list of functions, and perhaps I'm asking this in the wrong place. Did you develop each of these functions for flexi, or is it provided by Bitwig? function list

git-moss commented 1 year ago

Again, it does all that. The MIDI CCs you showed above use the "Twos complement" relative encoding. If you select this option on the Knob Mode, "Device: Set Parameter X" will handle it correctly. Just to be sure I tested with exact these values. These are the settings:

grafik

poedyatel commented 1 year ago

Damn! I must have made a mistake somewhere, I'm using linux and so many different things had to be molded together ... now I've destroyed everything and built it again and it works correctly! Sorry! Thank you!

git-moss commented 1 year ago

No worries.