Improved Mackie/Logic Control Support

This will walk you through the process of configuring and using a MIDI control surface with Ardour that uses the Mackie Control protocol or the Logic Control protocol. This should work with all surfaces that support some of the mentioned protocols, but has been tested only with the Mackie MCU PRO by now.

At each step there might be specific instructions about your control surface in it's respective page. Please check the pertinent page.

Preparing your device for Ardour

Each interface model probably has some necessary setup so it's in the state Ardour expects to identify it. See your control surface page to see what's necessary. If there is no page about your control surface, create one!

Connecting your device

It's assumed that your USB ports are functional under Linux. The easiest way to tell if you've got a functional link is to simply connect your control surface to your computer with a USB cable, connect the power, and turn it on.

Check that Linux knows of the device (in the example below it's the MCU Pro):

$ aconnect -o
client 16: 'M Audio Delta 1010LT' [type=kernel]
    0 'M Audio Delta 1010LT MIDI'
client 24: 'MCU Pro USB v3.1' [type=kernel]
    0 'MCU Pro USB v3.1 MIDI 1'
    1 'MCU Pro USB v3.1 MIDI 2'
    2 'MCU Pro USB v3.1 MIDI 3'
    3 'MCU Pro USB v3.1 MIDI 4'

Enabling control surface MIDI ports in jack

Start your jack server. With qjackctl first check the MIDI tab in qjackctls Connections window. Your control surface MIDI ports should be listed there. If it is go on to the next step: Enabling Ardour's mackie control ports in qjackctl. If it's not, there are two ways to proceed:

First option: using ALSA MIDI driver (the easiest one)

This is probably the easiest way to enable your control surface MIDI ports in jack as it doesn't need any extra package installed but if you go to Ardour's IRC channel, people will tell you that using a2jmidid is the right thing to do. Having said so, if you stilll want to use this method let's go on.

Enabling ALSA sequencer support in jack

Is there a ALSA tab in qjackctls Connections window? If there is go on with Checking ALSA support for your device.

Otherwise open qjackctl's Setup window and go to the Misc tab. Turn on the Enable ALSA Sequencer support option under the Other section. Restart your jack server and go back to the begining of Enabling control surface MIDI ports in jack.

Checking ALSA support for your device

Check the ALSA tab in qjackctls Connections window to be sure that ALSA recognized your device. If your control surface is listed there go on to Checking ALSA's MIDI ports, otherwise go back to Connecting your device as the ALSA driver haven't recognized your device yet.

Checking ALSA's MIDI ports

Look for your control surface MIDI ports at qjackctl's Connections window under the MIDI tab. If they are there go on to Enabling Ardour's mackie control ports in qjackctl.

Otherwise open qjackctl's Setup window by clicking the Setup button on qjackctl. Under the Settings tab change the MIDI driver drop down on the bottom right to the Seq option. Restart your jack and go back to the beginning of Enabling control surface MIDI ports in jack.

Second option: using a2jmidid (the recommended-by-the-pros way)

This method of enabling your control surface MIDI ports in jack is the one that people recommend in Ardour's IRC channel. It's how Ardour pros do it. It's how you should do it also.

Disabling ALSA sequencer support in jack

First you should be sure that there is no ALSA sequencer support enabled in jack. To do that open qjackctl's Setup window.

In the Settings tab set the MIDI Driver drop down to the none option.

Then go to the Misc tab and uncheck the Enable ALSA Sequencer support option.

Now it's time to restart your jack server before going on.

Checking for a2jmidid availability

First thing is checking if a2jmidid is already installed in your system. To do it first start your jack server and then call

a2jmidid -e

from the command. If a2jmidid is there go on with Checking surface control MIDI ports. Otherwise install the newest a2jmidid available and try again.

Checking surface control MIDI ports

After starting a2jmidid your control surface MIDI ports should appear in qjackctl's Connections window on the MIDI tab under a2j. If it does go on to the next step: Automatically calling a2jmidid when starting jack. If it doesn't you have to troubleshoot why it didn't. (How to troubleshoot a2jmidid?)

Automatically calling a2jmidid when starting jack

It's troublesome to have to manually start a2jmidid by hand each time you start jack. Here is one way to do it automatically. This step isn't mandatory, it's just a convenience. If you are not interested you can go on to the next step Enabling Ardour's mackie control ports in qjackctl.

Create a script that calls jack if you aren't using one yet. In it change the line that calls jack to have an ampersand at it's end like that:

/usr/bin/qjackctl &

In this case I call qjackctl that starts jack so I include the ampersand in qjackctl's call. If you call jack directly, put the ampersand at the end of it's call line.

Now include the following lines after the line that calls jack:

/usr/bin/sleep 5
/bin/bash -c "/usr/bin/a2jmidid -e" &

All you have to do now is use your new script to call jack.

Enabling Ardour's mackie control ports in qjackctl

Now that we already have control surface MIDI ports available at MIDI tab in qjackctl's connections window we will open Ardour 3. With A3 opened, check for mackie control port in and mackie control port out under Ardour in the MIDI tab of qjackctl connections window. If they are already there go on to the next step: Connecting control surface and Ardour MIDI ports.

Otherwise go to Edit >> Preferences >> User interaction tab in A3 and check the Enabled option for Mackie under Control surfaces. Check again for mackie control port in and mackie control port out under Ardour in the MIDI tab of qjackctl connections window. If they are there go on to the next step: Connecting control surface and Ardour MIDI ports.

Otherwise close A3 to manually include them. With A3 closed edit the ardour.rc file that is usually located at ~/.config/ardour3 dir with your favorite text editor. At the beginning of the file there should be several MIDI ports defined. Include the following two at the end of the list of MIDI ports:

<MIDI-port tag="mackie control in" mode="input"/>
<MIDI-port tag="mackie control out" mode="output"/>

Save and close the file and restart A3. Check again for mackie control port in and mackie control port out under Ardour in the MIDI tab of qjackctl connections window. If they are there go on to the next step: Connecting control surface and Ardour MIDI ports. Otherwise... (what to do in this situation?)

Connecting control surface and Ardour MIDI ports

Now that you have both control surface and Ardour MIDI ports available, cross connect the control surface MIDI ports and the two mackie ports.

Automating the qjackctl connection

You can set qjackctl to automatically make the MIDI connections (and others) by using the Patchbay feature in qjackctl. Start qjackctl and Ardour, and make the MIDI connections as shown above. Click on the Patchbay button, then click on New. Qjackctl will ask if you want to create a patchbay definition as a snapshot of all actual client connections. Clicking on Yes will bring in a set of all ports available.

Delete all connections except the MIDI ones and click Save... and choose a filename. Once this is saved, click on the Activate> button. The patchbay connections will now be made after qjackctl starts up the clients. You can close the patchbay.

Customizing your control surface

There are many possible customizations to be done. Please check your control surface page for suggestions.