My Big MIDI Question - Can MTP do it?

Greetings! This is my first post. My biggest MIDI question ever is... How can I program my controller to have different "pages" or "templates"?

I understand how to set up conditions, but that is not the same. What I'm after will recall+retain certain values, not just alter controls based on input. Two examples below demonstrate what I'm after:

1. First example: 8 buttons, CC 100-107. Only one at a time can be selected, so if CC 100 is on, and I press CC101, CC100 will no longer be active. In this case, no two CCs within 100-107 can be "on" concurrently.

  • The crude way to do this would be to direct each CC 100-107 also send MIDI messages to "wipe" away all other CCs within the range, and everything would have to be routed through a virtual MIDI port in order to apply uniformity to these MIDI messages such that they can be used as conditions...
  • The problem with going down this route is that this can get pretty complicated pretty fast, and I have never been successful in avoiding issues.

2. Second example: Same as above, except there are now 4 more button controllers, CC10-13, which have lights that show their "on" or "off" statuses. Similar to the above, I want to be able to freely switch between the 8 templates/pages via CC 100-107, but I would like the overall state/lights of CC10-13 to be recalled/retained per CC 100-107 selected.

The two examples above represent my Biggest MIDI Questions. If I am able to recall templates/pages, that would be a huge game changer. Is what I'm after somehow possible with MTP?

Thank you so much for any answers. Please let me know if I can help make this clearer in any way.

I am looking forward to being a part of this community.

Hi yes Bome MIDI Translator can do this. I'm working on something like this right now. In the project I'm building, I have 4 banks each with 16 encoders, 16 faders and 16 buttons. I have it set up to capture and retain all of the values and then recall them and send MIDI LED update status as the banks are changed. It takes a while to set up but I know it can be done as I'm already done with this portion of my project. I'm about read to add another "layer" so that when I'm done with that I will have 2 layers of 16 faders 16 encoders 16 buttons and 4 more banks. This will make a total:

32x8 faders 32x8 encoders, 16x8 buttons that I can send and control LED updates.

128 faders 128 encoders and 128 buttons. In my case they are motorized faders so I can update everything remotely. Of course on non-motorized faders, this will not be possible but you can still track the last "known" state for the purpose of "takeup" mode so your DAW faders don't jump if things get out of sync.

For buttons, the trick is to bit map a set of buttons as a single 32 bit variable and have your input controls just turn on one bit at a timer. Then another translator sets a repeating timer, testing each bit and turning on only the button that you want on back to your controller.

For faders and encoders, the idea is similar, but a bit more complicated. Since a CC has 7 bits I can fit 4 CC's in a single 32 bit global variable (with 4 bits to spare). This way I can control 8 faders with just 2 global variables.

If you search this form for "bit mapping" you will probably see a good example of how I controlled 64 buttons of an AkaiPro APC-MINI with just two global variables (and another one for a counter for iterating through the values)

Search again for AkaiPro MIDIMix and you should fine out how I mapped all of the knobs and faders.

Again what you ask requires some experience, patience or a little of both but again, it can and has been done. Please search to see if you can find the examples first and if you have trouble, come back to me and I'll see if I can find the examples.


Steve Caldwell
Bome Customer Care

Also available for paid consulting services: