Translating absolute MIDI CC into relative -1/+1 values

Ok, let us now pull the last puzzle of this gigantic BT Midi setup. The goal is: No parameter jumping. Ever. Period.


I hope we can solve this irritating issue once for all.


I'm inspired by the following posts:


I've tried the submitted presets/projects.


However, the presented solutions seem to be a bit chaotic, and not quite working as intended.  


The big question: Are we going to use NRPN for this? As in some controllers, there's per default an 'Increment/Decrement' data output option for the encoders.


I hope Steve can assist us with, as always, a simple end elegant solution.


Thank you in advance.

Hi, and that for your question.

There are several ways to approach prevention of parameter jumping however if your DAW supports relative encoders, and you have relative encoders that is probably the most elegant solution.

The most common type of relative encoders are \"2s Compliment\" and \"Relative Offset\" (but different vendors may give them different names).

2s Complement encoders will send values of 1-63 for positive movement of 1-63 clicks right and 127-64 for 1-63 clicks left (Some versions only send 1 and 127 (for 1 and -1)

Relative Offset encoders will send values of 65-127 for postive movement of 1-63 clicks and 63-1 for negative movement of 1-63 clicks. (Some versions only send 65 and 63 ( for 1 and -1)

If you DAW supports this (you didn\'t tell me what DAW you are using) and you have these types of encoders, you are golden and you should setup both your DAW and encoders this way.


Now if your DAW only supports Absolute (0-127) and your encoders are relative as above, you can write translators in MT Pro to emulate this behavior for your DAW. This is probably the second most elegant way. If this is what you want, tell me your encoder type from above and I will guide you further down this path.

The most common (for cheaper controllers) is your DAW and your encoders (or pots) only support 0-127 and somehow you need to keep them in sync to prevent \"jumping\" as you described. Some DAW\'s support this feature through a \"takeover\" mode.

The strategy is that if you move the fader or knob on your DAW and it is differnent than the position of your controller POT. Then later you move your knob, you want to prevent \"jumping\". If the DAW supports this, it will ignore your controller knob movement until it crosses the last known point that you changed it on the DAW.

However if your DAW does not support takeover mode, yet still sends MIDI message out as you move your controller on your computer, we can emulate takeover behavior with translators in MT Pro in a similar fashion. However if you DAW does not send out MIDI message, then I\'m afraid there will be no way for MT Pro to know the last known position and prevent this.

In a nutshell, if you describe the type of encoders/pots you use, and whether your DAW supports relative encoders and/or takeover mode and also sends MIDI messages, I can likely help you further. If you tell me what DAW you are using, I may be able already know what it support.

Here are my questions to move forward

1) Do your knobs on your controller support relative? If so, what type?

2) Does your DAW support relative? If so, what type?

If the above both match, set it up and you are done. If we need to convert one relative type to another, we can do that in MT Pro.

3) Does your DAW and controller support absolute only and support takeover mode? If so, use it and you are done.

4) If your DAW and controller support absolute only, but no takeover mode and DAW sends knob/fader movements then we can emulate takeover in MT Pro. If not, we are out of luck here as the DAW needs to communicate where it is for us to figure out when to send and when not to send movements from the controller.

5) If your DAW only supports relative and you controller only absolute, we can do conversion with MT Pro (if the DAW sends messages out). We just need to know what type of relative the DAW needs.


I hope this helps. Just let me know more information on your situation and we can peel it down from there.

There a few tutorials on relative to absolute and absolute to relative that may also help you.

Steve Caldwell
Bome Q and A Moderator and
Independent Bome Consultant/Specialist



You’re right, this needs to be planed extensively, just to make sure that all, or most of, the scenarios are covered. Let me try a couple of things and get back to you if I stuck.

Reviving this old thread as I think this relates to what I am trying to accomplish as well.
I am also currently trying to accomplish the no jumping issue as well.
I am strictly iOS, and AUM with its AU plugins/instruments is my DAW for performance, which no one implements relative values. It’s all absolute. There is also no takeover feature.

I have created a few DIY controllers over time, but mainly now I have just a box of 32 (soon to be 64) encoders. These encoders:
The push buttons on the encoders have setup to switch banks/CCs, so the 32 controllers control all 127 CCs on a single midi channel.

The way I have been getting around the parameter jumping is to have the controller send the initial values (hard coded in the controller) to the DAW. They save their state on any button push, effectively making then ablsolute encoders, as previous values are remembered between banks.

This works as long as I continue from the original starting point, but if I load a new preset on the iOS device, this is when jumping happens on the next rotation of the encoder.

Will your solution posted here ( work on iOS applications that 1) do not send midi when values are changed and 2) do not support midi read/value requests from controllers?

I have yet to purchase a bomebox, but curious if this is resolvable for me. The lack of relative encoder support on iOS is very frustrating trying incorporate a dedicated control surface for live performance.



I’m not sure if your question relates to BomeBox or Bome MIDI Translator Pro or maybe both. If it is Bome MIDI Translator Pro related. Then your DAW must be on either Mac or Windows since Bome MIDI Translator Pro does not run on iOS. Somewhere in the MIDI chain you would need to run on Mac, Windows or BomBox for a workable solution (as a go between between your controller and the final destination).

If your question is BomeBox related then you would also need to load a Bome MIDI Translator Pro project file on BomeBox and run it from there. You would need to purchase both BomeBox and Bome MIDI Translator Pro.

In either case, there are strategies used to prevent jumping. Most of these involve capturing the current value back from the DAW into global variables (in MT Pro) and comparing the new incoming value to the last known value after a preset change. If the values have not crossed the same (takeup) point, then you MT Pro does not forward the new value to the DAW. Of course you need a MIDI signal from somewhere to tell you when to go into takeup mode and start ignoring signals.

If your DAW can handle relative encoders, then takeup does not come into play as the DAW internally keeps the current value and just gets the delta value from the controller to calculate the new internal value. It would be up to the DAW to determine the new value and whether to recognize it or not.

For MT Pro to assist in takeup mode (whether on Mac, PC or BomeBox) we need:

  1. To be able to capture the last known value of the DAW
  2. To have a signal when to go into takeup MODE (From DAW or PC)
  3. To read the proposed new value from the controller (to compare with the last known value)

For absolute to relative to work, the DAW simply needs to be able to handle relative values and internally be smart enough to apply the right value when you move the knob. Yes, if you need to convert from absolute to relative, MT Pro can do that on Mac, PC or BomeBox.

Steve Caldwell
Bome Customer Care

Also available for paid consulting services: