A Quick Guide To Generic MIDI Control of Ardour

What is possible?

Ardour 2.X does not record/play/edit MIDI data, but can still be controlled by a wide variety of MIDI devices. It can receive and send MIDI Machine Control (MMC), act as a master or slave for MTC, will respond to MIDI Song Position Pointer (SPP) messages, and can use the full range of MIDI Continuous Controller (including NRPN) and Note On/Off messages in a very flexible manner. This page only discusses the use of MIDI CC and Note messages.


There are no "best" ways to map an arbitrary MIDI controller for controlling Ardour. There may be very legitimate reasons for different users to prefer quite different mappings. So, Ardour does not come with any pre-defined mapping - we believe that users know what is best for them.

On every platform that Ardour runs on, there are excellent free-of-charge tools for making connections between MIDI hardware and "virtual" MIDI ports like the ones that Ardour creates and uses. Rather than waste precious developer time replicating these connection/patch managers, we prefer to leverage their existence by having users rely on them to actually connect Ardour to other MIDI devices and software. On OS X, we recommend Pete Yandell's MIDI Patchbay. On Linux, a wide variety of tools are available including QJackctl, aconnect, Patchage, and more. So, you will not find a MIDI connection dialog in Ardour 2.X.


  1. Enable Generic MIDI control: Options -> Control Surfaces -> Generic MIDI
  2. Connect Ardour's MIDI port named "control" to whatever hardware or software you want (using a MIDI patchbay app)
  3. Ctrl-middleclick on whatever on-screen fader, plugin parameter control, button etc. that you want to control
  4. A small window appears that says "Operate Controller now"
  5. Move the hardware knob or fader, or press the note/key.
  6. The binding is complete. Moving the hardware should control the Ardour fader etc.

Avoiding work in the future

If you want the bindings you set up to be used automatically in every session, the simplest thing to do is to use Session -> Save Template. Then, when creating new sessions, select that template and all the bindings will be automatically set up for you. You can also save a specific track/bus configuration as a template, and use that when adding new tracks or busses. Click on the track name at the top of a mixer strip and select "Save as Template".