Multi-rescale pipe

A pipe that could rescale multiple values would be very useful. To work within the constraints of the menu space, the input could be something like…

Message type
Value 1 ---- 14, 1-19, 37-45, 1st number is message id, 1st pair of numbers are low to high followed by output values.

Value 2

Value 3

etc etc

I think the constraints here, Joey, would be more about the number of bytes needed to specify the pipe rather than the UI:

Keeping all the current properties of Rescale, the most I think one could add would be a cut-down version of (what I call) the Nine-Range-Filter approach (cf Note/Channel Range Filter).
Even two lots of scalings would go beyond the byte-allocation and would thus need a major overhaul.

I’ve not looked at the (rather neat) Nine-Range algorithm for awhile, but my hunch is there might be enough headroom to have say 3-4 ranges†.
This improvement beyond “Any or One” comes at the expense, of course, of not being able to map that property, but I guess –given your suggestion– that’s not the highest priority for you.


Property Example buttons
Bypass False Map Edit
Kind: Control Change Map Edit
Scale CC#: In Ranges Map Edit
Ranges: 0-14, 26, 35-36
In Low: 0 Map Edit
In High: 127 Map Edit
Out Low: 127 Map Edit
Out High: 0 Map Edit

(so Outside Ranges → [15-25, 27-34, 37-127] for the above)

btw, with your suggestion what happens if the same id is specified twice?

1 Like

I figured being able to do multiple in one pipe would have a constraint. Even 2 or 3 would be a big boost though. If you have a patch that needs to do a lot of rescaling being able to do 2 in one pipe is a 50 percent savings on rescale pipes.
Being able to rescale the same id at different values ranges would be very interesting.I suppose though any duplicated value though would have to be nulled in the editor I guess.

I reckon two’s your max, Joey, with caveats

  • there are 4 bytes spare in current structure
  • “any id” & “id” uses a byte
  • each In|Out Low|High uses a byte(-1bit)

So (academically speaking) if you were to settle for the same In-Range and Type for both you could fit in another Out-Range & id

Sorry, mate, you need to treat yourself to another Midihub!

1 Like