Sysex "expression/function support" in the message

I am using the Sysex messages to control Vista by ChromaQ. One thing that would greatly improve the experience for creating multiple buttons at a time would be for the Sysex to support “functions” in the message field. Variable support works great but the issue is in setting the message to a Cue or Cuelist that is double digits. The way I have formatted it so that it is more readable rather than having to add the additional 0x30 to make the message double digits is by always keeping two of them for the cuelist and cue section of the message like so:
0xF0 0x7F 0x01 0x02 0x01 0x01 0x30 0x31 0x00 0x30 0x33 0xF7

What I would like to be able to do is to use the substr() function in companion to have these messages adjust based on the text set on the button. So I could either use the $(this:row) or $(this:column) option or simply type the text in the button using XX format (01, 02), etc and then use the function to place the two values where they need to be in the message:

*0xF0 0x7F 0x01 0x02 0x01 0x01 0x3substr($(internal:b_text_39_$(this:row)_$(this:column), 0, 1) 0x3substr($(internal:b_text_39_$(this:row)_$(this:column), 1, 2) 0x00 0x3substr($(internal:b_text_39_$(this:row)_0, 0, 1) 0x3substr($(internal:b_text_39_$(this:row)_0, 0, 1) **0xF7


This would allow me to place text on column zero to correspond to the CUELIST (05, 10, etc) that would fill in the cuelist section of the Sysex font and then the text on the button itself would fill in the cuelist portion. This would allow a less tech-savvy person to change the value of the cuelist and cue just by changing the text on the button rather than having to look at the Sysex message and then if $(this:row) or $(this:column) is utilized it would just mean copy and paste the buttons and it is dynamically changing the cue and/or cuelist button based on where it’s at. I hope this makes sense! Thank you for all you do!**

1 Like

Understood. Certainly all of my modules do need updating to support the new expressions feature in 4.2+, so it’s definitely on the radar. Your note is a good way to remind me to get on it. :slight_smile:

Not sure when I’ll have time, but once I do and I update it I’ll post back here so you can give it a try.

Thank you for your support!

1 Like

Your hard work has drastically improved our work flow. Thank you for all you do!

1 Like

Well, you can give the new v2.0.0 a try. It seems to work with expressions, but building the one you suggested was a challenge. I probably don’t even have it right TBH!
I don’t really know what the button text is supposed to contain, so i just set them to “123”

btnText=parseVariables("$(internal:b_text_2_$(this:row)_$(this:column))")
btn0Text=parseVariables("$(internal:b_text_2_$(this:row)_0)")
`0xF0 0x7F 0x01 0x02 0x01 0x01 0x03 ${substr(btnText, 0, 1)}
0x03 ${substr(btnText, 1, 2)} 0x00
0x03 ${substr(btn0Text, 0, 1)}
0x03 ${substr(btn0Text, 0, 1)} 0xF7`

With the text in button 2/0/0 and current button = “123”
returns:

0xF0 0x7F 0x01 0x02 0x01 0x01 0x03 1 0x03 2 0x00 0x03 1 0x03 1 0xF7

Firing the action sends:
26.06.02 10:34:46 /: Sending: sysex Message, bytes: 240,127,1,2,1,1,3,1,3,2,0,3,1,3,1,247 to "IAC Driver Bus 1"

v2.0.0 was a complete update to API2, so there’s likely to be some bugs and things I missed, so test carefully and report back any issues or weirdness!

Awesome! I will try this out and report back!! Thank you!

1 Like