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.

BCF 2000 and BCR 2000

This page presents specific info about BCF 2000 and BCR 2000 control surfaces that should be taken in consideration when following Improved Mackie/Logic Control Support page intructions.

Preparing your device for Ardour

There are a few steps to prepare the BC[F|R]2000 to work with Ardour.

Firmware updating

The first thing you're likely to have to do is update the firmware in the unit. This is a relatively painless process.

Download the firmware from Downloads tab at BCF 2000's page. There will be a zip file available which should be downloaded. (This example uses version 1.10 of the firmware, the latest available at the time of this writing. There may be a newer version available now.)

Unzip the file you downloaded. You'll typically extract 2 SYX files, one for the BCF 2000 and the other for the BCR 2000. Choose the appropriate one.

Find the system device of the BCF:

% cat /proc/asound/cards
0 [M1010          ]: ICE1712 - M Audio Delta 1010
                     M Audio Delta 1010 at 0xdf80, irq 
2 [BCF2000        ]: USB-Audio - BCF2000
                     BEHRINGER BCF2000 at usb-00:1d.1-2, full speed

In this case there are 2 devices. The number at the left indicates the card number. The BC[F|R] is almost certain, then, to use the device /dev/snd/midiCnD0 where n is the card number, in this case, 2.

Write the firmware to the BC[F|R] with the command

cat bcf2000_1-10.syx > /dev/snd/midiC2D0

Important

Make sure you use the actual device you determined in the previous step The BC[F|R] display will show a whirling figure-8 animation and count up to 18. Once the whirling stops, you should turn off the BC[F|R], count to 5, then turn it on again. You should then see the version number of the upgraded firmware displayed for a few seconds as the BC[F|R] starts.

Connecting your device

When you connect your device to your computer you should see the BCF's USB MODE light come on in the upper right corner. If that's not on, you'll need to figure out how to make your USB port work under Linux.

Customizing your control surface

BC[F|R] control surfaces require some customization to be used with Ardour.

BCF 2000 customizations

Let's prepare it for a modest set of things to the BCF to control for a track:

Preset 2 (P2), the Simple Mixer, is almost there, but the mute, solo and rec-enable controls in Ardour can't be mapped to a pushbutton on the BCF. This was because in P2, the buttons sent a Program Change signal, but Ardour expects a Control Change signal. This required re-programming the BCF a bit. Here's a list of the controls and what they should send:

Here's a quick walk through to program the controls on the BCF. First we'll do the rotary knobs:

  1. Hold down the EDIT button and press the rotary control. The display will show b1.
  2. Turn the rotary control labeled TYPE until the display reads CC.
  3. Turn the rotary control labeled PAR until the display reads 33.
  4. Turn the rotary control labeled MODE until the display reads t on.
  5. Press the EXIT button.

Continue to program the other rotary controls in the same way, incrementing the value set by the PAR control by 1 each time. This will set the CC parameter for the second knob to 34, the third knob to 35, and so on.

The steps are the same for the two rows of pushbuttons under the rotary knobs. The CC values for the first row of buttons run from 65 to 72, and from 73 to 80 for the second row.

Finally, you need to store these changes so that they'll be kept even when the BCF has its power cycled.

Press the STORE button. Its LED will start to flash.

Select a different preset number if you wish with the left and right PRESET buttons.

Press STORE again to write the settings to an empty preset. If you want to overwrite an existing preset, press STORE twice. You can cancel the store operation at any time by pressing EXIT.

Your BCF2000 is now ready to control Ardour!

Source: 10.2. Using a BCF2000

Mackie MCU Pro

This page presents specific info about the Mackie MCU Pro control surface that should be taken in consideration when following Improved Mackie/Logic Control Support page intructions.

Preparing your device for Ardour

It's important to set your Mackie MCU Pro to the proper mode to work with Ardour: Mackie Control.

To do it turn off your control surface.

Press and hold channels 1 and 2 Select button while turning on the surface control again.

The display will show the 3 modes of operations supported by Mackie MCU Pro:

  1. Mackie Control - selectable by pressing V-Pot 1
  2. Logic Control - selectable by pressing V-Pot 4
  3. HUI - selectable by pressing V-Pot 8

Press V-Pot 1 to set it to Mackie Control mode.

Connecting your device

As several other control surfaces, Mackie MCU Pro requires the snd_usb_audio driver. Connect your control surface to your conputer through a proper USB cable and turn it on. If your Mackie MCU Pro isn't listed with

aconnect -o

your installation is probably missing the snd_usb_audio driver. Check to see how to enable it in your distribution.