Changing bank with "prev-bank" and "next-bank" via MIDI

According to the manual its possible to change banks/tracks via a MIDI binding map and a MIDI device. Most other things in my binding map are working well, but this is not:

  <Binding channel="16" ctl="110" function="prev-bank"/>
  <Binding channel="16" ctl="111" function="next-bank"/>

As far as I can tell everything is correct, and it matches the instructions here:

http://manual.ardour.org/using-control-surfaces/midi-binding-maps/

When I use my change track buttons however I can’t detect any changes at all, and all bank-specific bindings (e.g.B1, B2 etc.) affect the same tracks that they did before the attempted bank/track change.

What am I doing wrong?

Difficult to say without seeing the entire map file. Can we assume that it includes something like this?

<DeviceInfo bank-size="8"/>

Are you sure these are the correct values sent by your device? What does the MIDI Tracer show? If your values are correct, you should see something similar to this:

Controller chn 16 6e 7f
Controller chn 16 6e 00

from the “prev-bank” button, and

Controller chn 16 6f 7f
Controller chn 16 6f 00

from the “next-bank” button.

This assumes that the device sends a value of 7f (127) when a button is pressed, and a value of zero when a button is released. You may see different non-zero values, and you may not see any “button release” messages at all, depending upon your device. Most important is that you see “Controller chn 16” and either “6e” for prev-bank, or “6f” for next-bank. If any of these is different, then the map needs to be tweaked.

Thanks for your suggestions dennis!

The map I’m using is here:
https://www.gitorious.org/ardour-midi-maps/ardour-midi-maps/blobs/master/m-audio-oxygen61v3.map

As far as I can see, everything is right, including the values in the MIDI tracer. I’m not sure what to try next.

I believe the trouble is with your fader mapping:

<Binding channel="16" ctl="33" uri="/route/gain 1"/>

Bank-select requires prefixing the fader number with a “B”. Try this instead:

<Binding channel="16" ctl="33" uri="/route/gain B1"/>

Hi Dennis, I changed that (you can see the updated map at the gitorious link above). Changing banks still has no effect though, and I’ve verified that the midi signals are correct.

The only use “next-bank” in an existing keymap that I can find maps it to a sysex command, not a midi cc command (here: https://github.com/davidhalter-archive/ardour/blob/master/midi_maps/Korg_nanoKONTROL.map ).

Maybe next-bank and prev-bank just don’t work with CC commands for some reason? What do you think?

There should be no trouble binding CC to banking functions. I’ve tested your map file with a puredata patch, and there seems to be nothing wrong with the map file.

One thing to note: With a non-motorized surface, the hardware and software faders can get out of sync quite often when switching banks. Adjusting an out-of-sync hardware fader might cause an undesired “jump” in the value of the corresponding software fader, which would be really annoying, at the very least. Ardour handles this by preventing a software fader from being updated until the hardware fader is moved to the corresponding position.

For example, if you adjust the channel 1 fader to -10, switch to bank 2 and use the same hardware fader to adjust channel 9 to -20, then switch back to bank 1, the hardware and software faders will be out of sync, and the channel 1 software fader won’t respond until the hardware fader crosses the -10 position again.

This can make it appear as though the mapping doesn’t work after you switch banks. Once you’ve moved each hardware fader back into sync with its corresponding software fader, then everything should behave as expected.

Could this be what you’re experiencing?