Where to start learning about controlling Ardour with MIDI?

I have an M-Audio Axiom 49 keyboard and Ubuntu 18.04, and I would like to fool around with recording with MIDI. I would love to be able to use the buttons on my Axiom 49 to actually control the software I’m using, too. I tried Rosegarden initially, but after some frustration got the impression that controlling the software via MIDI wasn’t really supported. I eventually stumbled upon Ardour, and after reading through the documentation on MIDI Control Surfaces discovered that, although there was no preset binding for the Axiom 49, the M-Audio Oxygen 49 bindings allowed me to use the transport buttons (play, record, etc.) on my Axiom 49 to control Ardour.

I was hoping to eventually find a way to control more functionality of Ardour via MIDI, but I feel way in over my head. I can use Generic MIDI Learn to assign some faders, but unless I move the faders very slowly Ardour doesn’t respond to them. I can also use Generic MIDI Learn to assign the drum pads to various buttons (like muting a track), but I can’t assign buttons (like the play button) to do anything. I also had the experience that suddenly the transport buttons stopped working to control Ardour. I tried turning the keyboard on and off again, manually assigning the transport buttons via Generic MIDI Learn, and random other things, but to no avail. It was while trying to recover the transport keys that I successfully assigned the faders to some specific tracks, but then those stopped working for a while too. After fiddling with the faders, they eventually started controlling their assigned tracks again, and miraculously the transport buttons started working as well!

I’m glad my setup is back to its previous working order, but I’m worried that the problem will occur again, and as I have no idea what happened I won’t know how to fix it. I would also still like to control more features of Ardour with my Axiom 49. However, I don’t really know where to start. The MIDI on Linux section of the Ardour manual helped me get set up with JACK and a2jmidid, but doesn’t seem to take me much beyond that. The Ardour Tutorial apparently doesn’t cover MIDI. Does anyone have suggestions for a good place for me to get started trying to understand MIDI control?


I would say the first thing to do is get to know what your controller is putting out. Using learn works well… for what it is. Learned controls do not ever bank, they don’t always save either as they refer directly to a controller pointer and some of those are recreated on startup as a different control pointer and so don’t get restored as a learned control. As you are already able to use a similar map (oxygen 49) I would start by copying that to a new name and extend it to what you need. The original map will be in (assuming you are using the ubuntu download) /usr/share/ardour5/midi_maps/ (have you tried the axiom 25/61 maps) You can copy the file to ~/.config/ardour5/midi_maps/and edit it’s name and the device name inside as a first step.

Then it is a matter of monitoring what events your controller sends for interesting key presses and adding them to the map (or changing them).

Ardour comes with a midi monitor under Window->MIDI Tracer. Just select the input port you want to watch.

Note that the users who created the various oxygen and axiom maps may all have had different priorities and ideas so maybe try them all first. If there are ideas you like in more than one, add those to your own map.

1 Like

Thanks, I’ll check out Ardour’s MIDI monitor, and hopefully that will start to give me a feel for what’s actually happening under the hood.

I tried the Axiom 61 map, but that didn’t work with the transport buttons. I’ll check out the Axiom 25 map as well, though, since I hadn’t taken a look at that yet.

Here’s a link to a video on attaching a MIDI controller keyboard to Ardour.

The Axiom61 midi map was made by me like three years ago, and I started off the Axiom25 one IIRC… I don’t remember well what or how I did it, but I think I set the Axiom to Preset 1 and filled in the hex code for what each button/fader/knob sends, using Ardour’s builtin MIDI tracer, kmidimon or some other MIDI monitor. Actually the xml wants decimal values, not hexcode. The MIDI maps are located in a folder below Ardour’s source code root directory, just copy the file “M-Audio_Axiom61.map” to say “M-Audio_Axiom49.map” and edit. To make your new one available you will have to copy it to the directory where the others got installed, I suppose. (EDIT: or as Len said, to ~/.config/ardour5/midi_maps/)
Once it works as expected make sure to send it back to upstream so others can benefit as well.

So the one important thing to note, for the maps to work you need to be in the preset it was written for. I say that because I just had a look at both Axiom maps and the transport buttons use the same codes, so I assume you’re in some other preset, not Factory/1? Is yours actually a 1st gen. Axiom? I have no idea whether the newer ones differ much…

Also I (and/or others maybe) can try and help creating it if this gets too complicated, provide the needed MIDI codes here… maybe even the manual lists the correct codes.