text to midisysex

293 viewsCSS QuestionsmidiSysEx text

Hi, i am building a script that will act with touchOSC via midi.

And i would like to send the name of a parameter from ableton when it was changed.

So i add a listener:


and my action would be:


where X should be some kind of transformation from:


that should be a text, like “LFO” into:

into midiSysEX.

Can you suggest a solution for this reaction?

MartinJ Answered question June 17, 2024


I suggest you have to transform the string of the name in a tuple of integers.

Let “pname” be the name-string of the parameter

n_char = len(pname)

text = []

for i in range(n_char): text.append(ord(pname[i]))

text = tuple(text)

may be the text integers tuple must be closed by a Zero, depends on the Sysex command definition of your controller.


HDV Answered question June 16, 2024

Hi, I use this to send parameter labels to Open Stage Control:

SYSEX_START = (240, 126, 3,)
val = self.song().view.selected_track.view.selected_device.parameters[loop_number].value
valStr = tuple([ord(c) for c in self.song().view.selected_track.view.selected_device.parameters[loop_number].str_for_value(val)],)
SYSEX_END = (247,)

sysexMsg = SYSEX_START + tuple([loop_number],) + valStr + SYSEX_END


I use different numbers in SYSEX_START to distinguish between track name, device name, parameter name. In this example “3” for parameter name. In Open Stage Control I then filter by this number where to put the text (parameter name label).

Hellem Posted new comment June 24, 2024

thank you!!
can you please comment – what is
as i suppose there should be smth like
to get parameter name label, right?

according to

will give us Linear-to-GUI value between min and max.

And why do you put val in valStr?
shouldn’t it be like:
valStr = tuple([ord(c) for c in self.song().tracks[0].devices[0].parameters[1].name])

and why you sysex message looks like 240, 126, 3 instaed of F0 52 00 4F 28 20 37 ?

thank you, waiting for your answers)))

Hi, you’re right I confused it with parameter values, sorry. For parameter names I use:

self._send_midi(tuple([240, 126, 2, loop_number] + [ord(c) for c in self.song().view.selected_track.view.selected_device.parameters[loop_number].name] + [247]))

Hexadecimal just didn’t work in my case, that’s why I use decimal for midi sysex. Maybe I’ve done something wrong.
And I use a loop in CSS to get all the parameter names of the selected device at once.

And take it with a grain of salt: I have zero programming experience – just trial and error… 😉 Regards, mj

you are my hero!)

how can tracks[1].color be sent as hex? i can figure out…


I’ve attached my CSS template. It’s work in progress and sure there are a lot of things that can be done way better. Maybe it gives you some ideas. Regards, mj

MartinJ Answered question June 17, 2024
Attached Files: