Midi Learn with Controller parameters not working

Hi everyone,
I am trying to use the Play, Stop and Record Buttons of my MPK MiniPlus to control the Ardour Transport Controls in Ardour 7.5.0.

I can see that Ardour gets the expected Input at
Controller chn 13 76 7f

Therefore, I created a custom Binding that looks like this:

<Binding channel="13" ctl-toggle="76" function="transport-roll"/>					<!-- PLAY -->

and like this

<Binding channel="13" ctl="76" function="transport-roll"/>					<!-- PLAY -->

sadly both are not doing anything…

when I use the midi learn function with ctrl+mid-click it only works with NoteOn/ NoteOff Buttons, but again not with the Controller Buttons.

I think the issue might be related to this:
https://tracker.ardour.org/view.php?id=7623

However, I thought it’s interesting that this also happens with a custom binding-file and not only midi-learn?
If anyone has further suggestions let me know :slight_smile:

My best suggestion is to check that your MIDI device set to Control Data in Preferences → MIDI → MIDI Port Config and make sure the device is set for “Control Data”

mh I have already done that.
But I think your comment still helped me to better understand what is happening here:

What made this bug even stranger was that the “operate controller now” window reacts on my button press (it closes). Sadly, after that it’s still not working.
If I check the live Midi Input at “Midi Controller In” it also shows the button presses as
Controller chn 13 76 7f

I then connected a virtual keyboard to Midi Controller In and tried to send some controller signals from there.

Turns out I can midi-learn to press the play button with

Controller chn 2 5d 7f

but Ardour does not start when I just send:

Controller chn 2 5d 7f

However, it works when I do something like this:

Controller chn 2 5d 0 // go back to 0
Controller chn 2 5d 7f //send a higher value again

since basically all of the AKAI Controllers by default only send 7f for each controller button press, Ardour does not do anything.

Following the manual the developers also kind of thought of a similar situation:

“ctl-toggle - for CC controls that send a 127 for button press and 0 for button release. The release is ignored and the value is toggled with each press.”

Sooo, I checked the manual of my midi device, and it actually has an option to send Transport OnOff. I activated it, and now I get

Controller chn 13 76 7f
Controller chn 13 76 00

with each button press. I tried to midi-learn this one and also the binding file again, but no luck :confused:

Is there anything I can do to make this work (in future versions) ?

Jesus Christ, I finally found a solution…

Midi-Learn is still not working as expected, but while having a look at other examples (special thanks to AKAI MPD32 by samtuke). I understood that the binding files are using decimal values.

To be fair this is also mentioned in the manual :upside_down_face::
" Please note that channel, controller and note numbers are specified as decimal numbers in the ranges 1-16, 0-127 and 0-127 respectively (the channel range may change at some point). "

Here is the binding file that allows to control the transports with the MPKminiplus in an expected way.

<?xml version="1.0" encoding="UTF-8"?>
<ArdourMIDIBindings version="1.0.0" name="AKAI MPKminiPlus">

<!-- MMC MIDI Mapping for Akai MPKmini -->
<!-- 2024-03-04 Niklas Stein  -->


	<DeviceInfo bank-size="6" motorised="no"/>

  <Binding channel="1" ctl="115" function="transport-start"/>
  <Binding channel="1" ctl="116" function="transport-end"/>
  <Binding channel="1" ctl="117" function="transport-stop"/>
  <Binding channel="1" ctl="118" function="transport-roll"/>
  <Binding channel="1" ctl="119" function="rec-enable"/>
  <Binding channel="1" ctl="116" function="rec-disable"/>

</ArdourMIDIBindings>