Duplex Controlmap Ui Wishes

Hi there

While creating my control map. I am struggeling with non-midi buttons on the device as well as buttons layed out in a navigation cross and some “virtual” buttons (the same buttons sending different midi notes depending on the state of some “shift”-button)

It would be nice to be able to layout the buttons in the same way as they are on the device. To be able to do so, there is same spacer element needed in the control map xml. Alternatively (or additionally) it would be useful to set the index of a button in a grid layout. Also the grid layout should really be a grid (like an html table). The current behavious is more of a flow layout.

For the virtual buttons, it would be useful to be able to create labels in the layout, so you can label a row of buttons with the state the “shift” button is in

just some suggestions…

btw. how do you create text or symbols on the buttons?

I see what you mean - pressing this shift button causes different messages to be transmitted, and the problem is that the control-map only specifies a single specific message for each button.
A hackish solution, right here and now, would be to expose the alternate set of buttons as well - kind of like how the Akai MPK49 has all of it’s “pages” exposed. Theoretically, it’s the same challenge - a physical button that change it’s properties. But it’s not a perfect solution - some aspects of Duplex like the parameter index and X/Y coordinate space inside control-map groups would be affected by the extra buttons.

So yeah, it would be great to figure out how to do it. How about if control-map were able to recognize multiple messages? Then we wouldn’t loose the ability to select the control by it’s index, coordinate etc.
It’s an improvement over what we got now, but it’s still not perfect. For example, if something funky happens on the controller when you hit the modifier (buttons light up, etc.), this is not transferred to the virtual version. Here, I am of course assuming that the shift modifier itself doesn’t output anything?

Again, assuming that the shift modifier doesn’t output anything this is simply not possible. How would you detect that it has been pressed & released? .
Because of this, any running Duplex application cannot be affected by the modifier being pressed, only the “alternate” button which is pressed afterwards.

Yes, obviously this is needed. Useful attributes would be @size in combination with @aspect

Sorry, I don’t get this. Once you have established a grid, you can program it like you want to, access elements by their index or X/Y coordinate. Can you provide me with an example of some grid layout that isn’t possible with the flow technique?

Just drop the color-space for the whole device (device class), or specify a color-space attribute only for the parts that shouldn’t have text (control-map)

Yep

Goood enough for me and I already did that (having three rows of buttons, each row representing the virtual state “Solo, Mute and Rec”).

OK, I was unclear here. I simply want some caption GUI element to label my rows of buttons.

The problem here is, that the grid is no grid - in the sense that the rows and columns aren’t aligned: So if you have a row of 0.5 sized buttons and a row of normal sized buttons, the smaller buttons aren’t directly above the larger ones at the same horizontal position.

Either I don’t get you here, or I was unclear before. I was refering to specifying the positon of the buttons in the grid in respect to the button layout, so you have an alternative/complementary solution to spacers. so

  
<group columns="3"><br>
    <param pos="2">
<br>
    <param pos="4">
<br>
    <param pos="6">
<br>
    <param pos="8">
<br>
</group>  
  

would result in a button layout like this:

  
 #   
 # #   
 #   
  

But, why would you ever want the smaller buttons to be part of the same group as the larger ones?
Looking at something like this, I’d say that the smaller buttons serve a different purpose than the big ones:

  
[x][x][x][x][x][x][x][x]  
[x][x][x][x]   
  

Also, some layouts are obviously hard to emulate, but the “spacer” could help us here…

  
 _ _ _  
 / _/ _/ _  
 _/ _/ _/ \  
 / _/ _/ _/  
 _/ _/ _/   
  

But it’s a bit strange to have elements that reference positions that aren’t actually present? It’s quite hard to read such a control-map. IMHO, it’s easier to just do this:

  
<group columns="3"><br>
 <spacer></spacer> <param> <spacer></spacer><br>
 <param> <param> <param>
<br>
 <spacer></spacer> <param> <spacer></spacer><br>
</group>  

OK, it’s just, that I expect a different behaviour when somethings called a “grid”, but with the spacer element, everything should be fine.

No objections here ;)