Create SysEX-Messages with Widget-Captions

Hi There,
I am in the process of developing a custom-made midi controller for my keyboards using an Arduino Teensy. The reason for this is my desire to have a better overview of the assignment of the controls to the various keyboard sounds during a live performance. The main function of the planned controller is therefore to send the widget captions of a Rackspace to the Teensy via SysEx messages, which then displays them on up to 8 small OLED displays. These displays are then arranged above the corresponding hardware controls.
Unfortunately, the explanations and examples for handling SysEx messages in the GPScript instructions are very sparse. So I’m wondering how I can basically create a SysEx object with the caption strings. The function ’ SM_CreateSysexFromString(sm: SysexManager, s: String )’ is marked as ‘Depricated’ because Strings can now be assigned directly to variables of type SysexMessage. Is there any example how to create such a message?

For my understanding:
Do you want to create a sysex message containing the caption of a widget?

Did you look at this article in our blog about controlling the GT Mastermind pedalboard, which has similar support?

Ah Great! I have not found this article before. Thanks a lot. This should help.

yes Paul, that’s what I want to achieve. I think, the article posted by dhj will help me. Thanks for your attention! :kissing_smiling_eyes:

Keep in mind that ASCII ranges from 0x00 to 0xFF (although not always printable), while midi only accepts 0x00 to 0x7F, so you have to do some sanitizing.

Or you encode base64.

1 Like

Nice project, do you already have a first version running? I do what you plan to do on the display unit of my control surface using SysEx. It works pretty well with GP.

Totally depends on how he implements it in his Arduino

Yep, but in c(++) it is not that hard. @tom is using a Teensy. I already implemented myself a variant: base128 for using sysex messages to a Teensy (Dutchies are cheap-skates, so I wanted to make every bit count :grinning:)

I trust @tom will be capable of coding it himself. And I’m willing, of course, to share my implementation if he needs it.

Thanks Frank. I will use ther Arduino IDE and the Midi-Library (y knowledge of CC+ is worse than my knowledge of Dutch :joy:)

Unfortunately, no! I have four gigs with my two bands in the next few weeks, so I don’t have enough time to develop at the moment. However, I already have the components here (Teensy, 0.96’, eight OLED displays and an I2C multiplexer to be able to control them in parallel). In the first step I will build a simple an 8 channel-display unit for the controls of my Arturia keyboard. Later it will be an independent controller board with motorized faders and buttons.

I first implemented my controller-Interface via OSC. But that didn’t work satisfactorily because I use a PC and the necessary WLan implementation in live situations didn’t work reliably. The operation of the controls on the touchscreen also proved to be problematic when sweat formed on the fingers during a gig …

I took a hybrid approach: I have made an in-between program: it translates the midi traffic from the controller to OSC messages for communication to (in this case) GP. All traffic to and from the controller is done with sysex messages coded base128, so one layer up, the messages are ‘normal’ 8 bit bytes and thus messages are completely transparent.

It went a little out of hand, because I structured all messages, so that they have become sort of RPCs with ‘endpoints’ you can address, but having a sort of transparent communication makes things easier: from that point, you don’t have to speak-and-think-midi anymore.

@tom & @Frank1119 your GP controlled hardware projects are of course very interesting, so please don’t forget to start a topic to present them when the time comes to do it. :wink:

6 Likes