[Feature Request] CC Value Scroll Command Send with an Offset

Some midi devices are setup with CC values

  • 0-9 as an action on devices 0-9
  • 10-19 another action on devices 0-9 (offset of 10 from 0)
  • 20-29 another action on devices 0-9 (offset of 20 from 0)

To handle that today would take three counters. A better way to handle that would be for the CC Value Scroll commands that send take an Offset which is added to the scroll value.

Alternately, this could be solved by allowing some type of expression language in the device for simple math. That’s probably overkill…

a counter is a global variable though, so besides the min and max limits, there is the actual value of the counter stored in the… counter. I cant see how an Offset would resolve this, because if you use only one counter and you use it to scroll through to 5, and offset of 10 will make the other preset start sending the values at 15. So you can’t get an independent value between the 3 presets.

I’m not sure if you use case allows, but if you require scrolling through a relatively small list of CC values, you can consider using the Preset message scroll function? https://morningstarengineering.atlassian.net/wiki/spaces/MMS/pages/186187784/Preset+Message+Scroll+scroll+through+messages+within+a+preset

The offset would be used in the CC Value Scroll Message. There would be one counter, but each CC Value Message would first add the offset to the counter before sending

ccValueMessageScrollSendOnly(cc, channel, counter, offset) {
send(cc, counter+offset, channel)

I’d use it with something like this:

Basically I have a single counter that I could change that would choose the track. Each button on the page would have a different action on the selected track via having a different offset in the message

3. [Mute 3] [UnMute 3] [Mute 3 EOM ] [UnMute 3 EOM] …

I don’t need to send cc’s in a in sequence. I choose the track number and choose the action.

Mute Button: ccValueMessageSendOnly(cc, channel, counter, 10)
UnMute Button: ccValueMessageSendOnly(cc, channel, counter, 20)
Mute at EOM Button: ccValueMessageSendOnly(cc, channel, counter, 50)
UnMute at EOM Button: ccValueMessageSendOnly(cc, channel, counter, 60)

I can do this today, but need 5 counters: 1-6 (for display), 11-16, 21-26, 51-56, 61-66