Control change value remap

Hi everyone, i would like to know if it is possible to get the midihub to transform a cc value of 0 to 63. i use pads of akai midi controller to send momentary control changes. the pads are velocity sensitive, sending an output value linked to velocity when pressed. when the pad is released, it sends out a value of zero. i would like to transform that 0 to 63, to match my sampler needs, without affecting values between 1 and 127. i am trying with tranform, with no success. any suggestion accepted. thanks.

Hi, I’m not sure if I understand your question:

  1. the pads transmit cc vals 1-127 when hit, 0 when released? (or is it NoteOn hit, NoteOff release?)
  2. you want to map that to 1-127 when hit, 63 when released?

IF it’s a cc->cc, then try this:
cc0to63.mhp (332 Bytes)
the patch:

  1. takes incoming cc#107 & Transforms to cc#100 but only in range {0,0}
  2. Rescales cc#100 {0,0}->{63,63}
  3. Transforms cc#100 back to cc#107

Now only cc#107value0 is changed to cc#107value63.
Is that what you’re after?
The NoteOn/Off scenario is slightly simpler.

3 Likes

thank you very much for your answer, you cracked it, that is what i need. cc messages, not note off messages. thanks again.

@Qhr33k glad to have got you started!
(Useful for me too to explore the fuller capabilities of Transform CC->CC; not played with “Work in Range…” before)
have fun with your Midihub & hit that heart button!

2 Likes

Hi there !

I’m late to the battle but found this thread with a google search:)
Your project file inspired me to use the “Rescale” module to convert some CC value to another value of same CC.

However, “Rescale” does not seem to work as I expected: the “In” boundries seem to have no effect, meaning it converts all values to the defined values (as opposed to converting 1 single CC value, as defined in “In” range)

For instance:

  • I want to convert CC value 1 to CC value 110
  • But we can see that CC value 0 is also converted to CC value 110, despite the “In Low” and “In High” reduced to value 1 only

image

What am I doing wrong ?

Regards

You’re not doing anything wrong @imacactus, it’s just the way Rescale works:

First incoming values are clipped at the In range, then they get linearly rescaled to the Out range.

Although In|Out Low|High ranges makes the Rescale and the Remap pipes look simialar, they work differently

Any … messages that are outside of input range will get discarded.



This diagram summarises


So say you have [32,63] → [95,64]:

  • then all of [0,32] will be treated as 32 (and so → 95)
  • whilst all of [63,127] will be treated as 63 (so → 64)

So in your case everything gets treated as the value 1.

What do you want to do with [0,0] and [2,127]?

These two Transforms, for example…

Screen Shot 2024-03-16 at 23.04.07

:arrow_up: Drop every CC from every CC# if the value is Outside Range [1,1]

then

:arrow_down: Replace with Arg1 =110 if the value is Inside Range :
Screen Shot 2024-03-16 at 22.54.41
(Or I could have used your Rescale cos now you’ve only got the value 1 remaining!)

1 Like

Ah okay ! That makes sense, thank you for explaining

What I need is transform all CC 94 to CC 7, from channels 1-8 only, and change the initial values - which can only be 0 or 1 - to 0 or 110.

I managed to do that using:

  • “Filter” module: to take only CC messages
  • “Range” filter module: to take only CC 94
  • “CC Remap” module: to convert CC 94 to CC 7
  • “Transform” module: to convert value 1 to value 110 (and keep 0 to be 0)

I configured Transform more with trial/error process rather than clear understanding but I got it working:

image

DTloopback.mhp (1.1 KB)

Do you see any thing that could be optimized in this pipeline? I was under the impression that the “Range” and/or “CC Remap” module could be removed if the CC number conversion happens in “Transform” but I couldn’t get it to work

1 Like

You can leave out the range filter and cc remap. Maybe you can do all that in 1 transform pipe.

Set CC number to 7

Work with CC number 94.

There’s a way to toggle a value with virtual mapping in the same pipeline. I forgot the exactly the setup but I believe you’ll map to the value argument and then it’ll flip from 0 to X value when you trigger the mapping. There’s a thread and a patch that Resonotter or Giedrius did that you may find with a search.

If that doesn’t work exactly how you envision, 2 transform pipes will get it done a bit more economically the remapping and rescaling.

1 Like

Agree with @JoeyButters about CC Range Filter because CC Remap does the discarding (ie filtering) for you.

If you’ve only got [0,1] incoming then you can replace Transform with Rescale:

Screen Shot 2024-03-17 at 08.41.05

(Those 0’s make all the difference!)


PS

Depends what you’re Transforming. You could use an extra Transform to Drop a range of CCs.
I would advise against this as, later on, you’re less likely to scratch your head and ask “what’s this doing that a CC Remap/Filter wouldn’t?”




FYI, the Virtual mapping thing that Joey mentioned was to give a “momentary” button a toggling state.

If your CC94 is a true toggle, the options above are more economical (no need for a Virtual Out).
Let us know if you do need that & I’ll dig it out

Tried it:
image

It does not work as expected, we get:

  • CC 94 1 > CC 7 110
  • CC 94 0 > CC 94 0

Wheras we need:

  • CC 94 1 > CC 7 1
  • CC 94 0 > CC 7 110

Appologies @JoeyButters @resonotter , I release my previous post was misleading, as we need:

  • 1 > 1 /// or /// 1 > 0
  • 0 > 110

Almost expected result, with that we get:

CC 7 1 > CC 7 110
CC 7 0 > CC 7 0

But by inverting “Out Low” from 0 to 110 and “Out High” from 110 to 0 then we get expected result !

Meaning now pipeline is simplified:

  • “Filter” module: to take only CC messages
  • “CC Remap” module: to convert CC 94 to CC 7
  • “Rescale” module: to convert value 0 to value 110 /and/ value 1 to 0

Let me know if tyou see any other optimization possible, current result looks good to me

Thanks a lot for your help both of you !

2 Likes

Good! and you have a toggling button so successive presses do…

  • #94=1 → #7=110
  • #94=0 → #7=0
  • #94=1 → #7=110
  • …etc

…without any need for any self-mapping?

1 Like
  • #94=1 → #7=0
  • #94=0 → #7=110
  • #94=1 → #7=0

Actually :d

But yeah that works perfectly without anything else ! \o/

I love my Midihub more than my grooveboxes now ^^

3 Likes