Binding arbitrary messages

Hello folks. I was gifted a Roland SI-24 and I have tried ti use it with Ardour using the Roland SI-24 MIDI binding. However, only faders 1 thru 12 work and nothing else…not even the master bus fader. No matter, I made my own binding map. I have read the Ardour manual regarding Generic midi bindings and I have made all the bindings I want except for the ones that need an arbitrary message. The Roland’s jog wheel gives out “1 15 1” for clockwise, and 1 15 127 for counter-clockwise. I made the binding:

Binding msg=“1 15 1” action=“Common/playhead-forward-to-grid”
Binding msg=“1 15 127” action=“Common/playhead-backward-to-grid”

This does not work. Is there I am missing?

PS: I intentionally left out the brackets


This probably hasn’t been tested in years. At least try using hex values for the message bytes instead of decimal.

Thanks for the swift response! I will try tomorrow. One more question, is there a way I can see what is inside the built in Roland SI-24 binding map?


The binding maps live /share/midi_maps and are just text (XML) files that be inspected with any text-oriented tool.

They are also viewable on github: ardour/share/midi_maps at master · Ardour/ardour · GitHub

Hi Paul,
I have tried using hex but it still does not work.

Binding msg=“00 0f 01” action=“Common/playhead-forward-to-grid”
Binding msg=“00 0f 7f” action=“Common/playhead-backward-to-grid”

Unless there’s something I am doing wrong?

Thank you,

Probably a bug. As mentioned, that code hasn’t been tried by anyone that I know of for many, many years. Likely not hard to fix, but the core developers aren’t likely to look at it any time soon.

But the binding format I made is correct?

Hello. I finally had the time to sit down and figure this out. I got the jog wheel to work using arbitrary messages.

There is another question I need to ask. There are buttons on the SI24 that spits out “Polypressure channel” messages. These messages consist only of the channel and cc number and no pressure value. I am trying to make a binding using:
Binding msg=“A0 20” action=“any-action”

However, this does not work. My question is: can I bind arbitrary messages without the pressure value?

On the SI24 midi map that I made, there is a binding for “B0 20 7f” which is basically “control change channel 1, ctl 32, value of 127”. The binding I want to make is also channel 1 and ctl 32 but its “polypressure channel 1” instead of “control change channel 1”. Is this possible?

Thanks in advance.

These are not valid MIDI events. There is no MIDI event that starts with 00. By definition all MIDI events start with the high bit set. so 0x80 is the smallest value that can be used for the first byte of an event. There should be no MIDI controller anywhere that puts out these values. but perhaps you are mistaking the fact that the first byte is used as two nibbles where the MS nibble is the command and the LS nibble is the channel. So you may be thinking that 00 is channel 0 but a note on in channel 0 might be 90 and a CC event in channel 0 would be b0. See MIDI message summary for more

Hi, i am past my first message and I was indeed using the wrong message. I have another question wich is can I bind an arbitrary message consisting of “A0 20” only? The reason i am asking is a few vuttons on my roland si24 are spitting out thise messages, polypressure channel 1, ctl 20 but no pressure value.

That I am not sure about. There are are events that are less than 3 bytes that do work (program change for example). I am surprised that is a0 and not d0 (after touch) But it would be easiest to just try. first try with a note on (or other three byte event) message to get it working and then see if the a0 20 works.

On Ardour’s midi tracer it says “Polypressure channel 1 20” Now, I already tried “d0 20” and “a0 20” and both do not work. Maybe there should be a third byte that Ardour is not showing? I am not sure if I should put a 00 or 7f because there seems to be none on the midi tracer.

I will try to use note on and note off however I will skip control change since there is already a “b0 20 7f” binding that exist.

If the midi tracer says channel 1 20 maybe try a0 14 (ie assume the tracer is speaking in base 10). I actually think there is a setting to use hex or decimal.

It is already in hex 20H, 32 decimal. I am nonable to do any work on it right now however, if you have any ideas let me know. I will try them as soon as i get the time.

Figured it out. Although Ardour doesn’t display the third byte, it is still required. I made the binding “A0 20 7f” and it worked.

I guess that should have been obvious to me… I will remember for next time

1 Like