Support for Midi relative CC?
- KVRAF
- 4141 posts since 11 Aug, 2006 from Texas
I was wondering if the topic of relative Midi CC's has come up before. I'd love to see Urs' plugins support it. I like it because it helps avoid parameter jumping when switching presets.
In case you don't know, relative cc's send all messages as an offset from the middle value of 64. If the value is 0-63, it means decrement. If the value is 64-127 it means increment. A lot of controllers also specify rotational velocity by how large of an offset from the middle the number is.
For example:
CC message sends 63 = decrement mapped value by one step
CC message sends 50 = decrement mapped value by 3-5 steps
CC message sends 120 = increment mapped value by 10-12 steps
I've had some success using Live in this manner (including Live's sending back the value to contollers like my BCR2000) but this only works for the first 128 mapped variables (vst limitation blah blah).
Urs, I know you've been thinking of revamping the midi engine in your plugins and wasn't sure where you stood on relative ccs. Thoughts?
In case you don't know, relative cc's send all messages as an offset from the middle value of 64. If the value is 0-63, it means decrement. If the value is 64-127 it means increment. A lot of controllers also specify rotational velocity by how large of an offset from the middle the number is.
For example:
CC message sends 63 = decrement mapped value by one step
CC message sends 50 = decrement mapped value by 3-5 steps
CC message sends 120 = increment mapped value by 10-12 steps
I've had some success using Live in this manner (including Live's sending back the value to contollers like my BCR2000) but this only works for the first 128 mapped variables (vst limitation blah blah).
Urs, I know you've been thinking of revamping the midi engine in your plugins and wasn't sure where you stood on relative ccs. Thoughts?
- u-he
- 30192 posts since 8 Aug, 2002 from Berlin
Have you tried it? It should be working fine i.e. with the Doepfer Pocket Control.
If the relative steps become to big though (CCs of <56 or >72, which is hardly doable with a Pocket Control), the algorithm switches to absolute...
I admittedly havn't touched this code in 3 years though. Maybe newer controlers send higher ranges. In that case auto detection can not work anymore (which would be sad...) and I'll have to add options...
If the relative steps become to big though (CCs of <56 or >72, which is hardly doable with a Pocket Control), the algorithm switches to absolute...
I admittedly havn't touched this code in 3 years though. Maybe newer controlers send higher ranges. In that case auto detection can not work anymore (which would be sad...) and I'll have to add options...
- KVRAF
- Topic Starter
- 4141 posts since 11 Aug, 2006 from Texas
That would explain why it seemed to mostly work with my Axiom-49 and BCR2000. If i turned it slow it would work (and take forever to adjust a value). If it turned it fast it would "jump" to the middle and stay there when I turned it up or down. Maybe in the pulldown you could have "Midi learn relative" and "midi learn absolute". That way accelerator curves can be taken into consideration.Urs wrote:Have you tried it? It should be working fine i.e. with the Doepfer Pocket Control.
If the relative steps become to big though (CCs of <56 or >72, which is hardly doable with a Pocket Control), the algorithm switches to absolute...
I admittedly havn't touched this code in 3 years though. Maybe newer controlers send higher ranges. In that case auto detection can not work anymore (which would be sad...) and I'll have to add options...
Sucks that your code would have to change for that though
I just checked the output in Midi Monitor. Turning the knobs fairly normal kept me within the ranges. However, if I wanted to do a dramatic sweep of something, I've seen numbers as high as 75 and as low as 50.
- u-he
- 30192 posts since 8 Aug, 2002 from Berlin
50-75? Might be doable with auto detection still...
I guess the Doepfer control just spits out finer grained values? Thus keeping the max inc/dec lower?
Or maybe the knobs are just harder to turn on the Doepfers...
I guess the Doepfer control just spits out finer grained values? Thus keeping the max inc/dec lower?
Or maybe the knobs are just harder to turn on the Doepfers...
- KVRAF
- Topic Starter
- 4141 posts since 11 Aug, 2006 from Texas
I'll pull out the BCR tonight and set the acc curve to max to see what the max and min are. I'll post em here when I get them.Urs wrote:50-75? Might be doable with auto detection still...
I guess the Doepfer control just spits out finer grained values? Thus keeping the max inc/dec lower?
Or maybe the knobs are just harder to turn on the Doepfers...
- KVRAF
- Topic Starter
- 4141 posts since 11 Aug, 2006 from Texas
I ran a quick test on my Axiom 49 controller. The device supports several types of relative encoding, but for this test I only used midi cc type 146 (2's compliment from 64, relative binary offset).Urs wrote:50-75? Might be doable with auto detection still...
The device supports 4 acceleration curves for the rotary encoders: off, 1, 2, 3. The tests below show the min and max I achieved using mild and hard spinning.
Acc Off
-------
Mild spinning: 60 and 68
Hard spinning: 50 and 79
Acc 1
-----
Mild spinning: 56 and 74
Hard spinning: 28 and 88
Acc 2
-----
Mild spinning: 52 and 84
Hard spinning: 1 and 125
Acc 3
-----
Mild spinning: 24 and 104
Hard spinning: 1 and 127
So it looks like detection might not be so effective if someone is using any acceleration curves. I have to admit the hard spinning is more of a limit test than probably would be used musically but I wanted you to have the data points. I'm guessing I can achieve similar results with the BCR and a decent acceleration curve.
Let me know if you want me to run any other tests.
- u-he
- 30192 posts since 8 Aug, 2002 from Berlin
Hmmm. The only conclusion would be
- extend the auto-detected "relative" range to 48-80
- offer a configuration thing that forces either relative or absolute
Latter can be done easily once the preferences stuff (slowly being developed in the background) is finished... d'oh...
Urs
- extend the auto-detected "relative" range to 48-80
- offer a configuration thing that forces either relative or absolute
Latter can be done easily once the preferences stuff (slowly being developed in the background) is finished... d'oh...
- KVRAF
- Topic Starter
- 4141 posts since 11 Aug, 2006 from Texas
If you asked me my opinion, I'd prefer the config option. It was really frustrating and confusing the first time my controller crossed the threshold and all of a sudden the only value I could set was 64. There was no explanation and no way to revert to relative.Urs wrote:Hmmm. The only conclusion would be
- extend the auto-detected "relative" range to 48-80
- offer a configuration thing that forces either relative or absolute
Latter can be done easily once the preferences stuff (slowly being developed in the background) is finished... d'oh...
Urs
I don't mind waiting for the new prefs. I just wanted to see if it was on your radar.
- KVRAF
- 4197 posts since 23 May, 2004 from Bad Vilbel, Germany
I don't want to put a damper on this thread, but I have to say that I HATE ACCELERATING ENCODERS! They ruin live (on-stage) tweakery. Like driving a hovercraft while drunkbmrzycki wrote:The device supports 4 acceleration curves for the rotary encoders
- u-he
- 30192 posts since 8 Aug, 2002 from Berlin
That made my day!amoeba wrote:btw - no one asks about our viruses (virii?) anymore - they want to know what that weird stripped things with the 4 XY dots on our screens are....
