# Using the Mackie driver for MCU and BCF2000

For Ardour 2, this will walk you through the process of configuring and using Mackie MCU, or a BCF2000 in Logic Control emulation mode.

## Connecting Device

Make sure your surface is connected and you know which `/dev/snd/midi` entry belongs to the device. You can do this by saying `cat /proc/asound/cards` which should result in something like

     0 [EWS88MT        ]: ICE1712 - TerraTec EWS88MT
                          TerraTec EWS88MT at 0x1140, irq 21
     1 [VirMIDI        ]: VirMIDI - VirMIDI
                          Virtual MIDI Card 1
     2 [BCF2000        ]: USB-Audio - BCF2000
                          BEHRINGER BCF2000 at usb-0000:00:1a.1-1, full speed

in this case the BCF2000 is on `/dev/snd/midiC2D0`.

While ardour is not running, edit your `~/.ardour2/ardour.rc` (and for now `etc/ardour2/ardour_system.rc` and `etc/ardour2/ardour.rc`) and add at the top, with the other ports:

    <MIDI-port tag="mcu" device="/dev/snd/midiC2D0" type="alsa/raw" mode="duplex"/>

Optionally, there is a way to get udev to assign an attached BCF2000 a consistent name under /dev/ however, by adding the following line to the udev rules. On some systems, these reside in `/etc/udev/rules.d/`:

    KERNEL=="midiC[0-9]D0", ATTRS{product}=="BCF2000", SYMLINK+="midi-bcf2000"

This will cause udev to create a `/dev/midi-bcf2000` for any BCF attached to the system, regardless of which alsa card number it gets assigned. Obviously you'd use `/dev/midi-bcf2000` instead of `/dev/snd/midiC2D0`.

See also Writing udev rules

## Extenders

The Logic protocol allows the use of extenders or Extender image. Extenders are essentially banks of 8 faders without the jog wheel and buttons. Once the code is fixed, it will be possible to use either the mackie extenders, or BCF2000 units as extenders.

## Mackie Mode

If you have a Mackie MCU make sure that you have the following under the <Config> tag in `~/.ardour2/ardour.rc`:

    <Option name="mackie-emulation" value="mcu"/>

The Mackie must be in Logic Control mode, otherwise the LCD display does not work. To put the unit in Logic Control mode: press and hold channel 1+2 SELECT while turning the unit on and through calibration; and then press the VPOT under whichever mode you wish to use.

In this mode, the button mappings from MCU Overlay are used. Note that many of the buttons have not yet been implemented, mainly because I have no idea what they should do. Suggestions welcome.

## BCF mode

If you have a BCF2000 you must add under the <Config> tag in `~/.ardour2/ardour.rc`:

    <Option name="mackie-emulation" value="bcf"/>

The following are different in BCF mode:

- 7 of the 8 sliders are used as route sliders, the remaining right-hand one is used for the master slider

- certain buttons have been remapped from the default Behringer settings, which required either both hands, or one-handed contortions to do simple things like rec-enable or mute a track.

- The display shows the number of the first switched-in bank or Ar if the first bank is in place.

BCF mode bindings

### BCF mode bindings

Strips 1-7 | Master Strip | Buttons
--- | --- | ---
vpot: pan button: solo | vpot: jog wheel button: all solo | LCD display
mute | mute | shift 1 | loop shift 1: marker shift 2: punch in
rec | session rec | shift 2 | click shift 1: jog wheel scrub/shuttle/scroll shift 2: punch out
slider | slider | rewind | ffwd shift 1: jog wheel zoom
home | end shift 2: save
previous bank shift 1: previous route | next bank shift 1: next route
frm_prev (previous marker) | frm_next (next marker)
stop shift 1: remove last capture | play

## Connecting to Ardour

Currently (in 2.0.x and 2.0-ongoing), support for the mackie using alsa/sequencer ports is not working properly. That is, some MIDI messages get through, but some don't. So it's not reliable enough for use. Until that's fixed, you're better off using alsa/raw as documented above.

Start up ardour. Go to Options/Control Surfaces. You should see "Mackie" as one of the menu items. Turn it on. The faders on the surface should jump to the correct positions. The mackie should work as normal, except that any buttons not on the BCF won't work.

## Usage

Strips (faders,pots,rec-enable,mute,solo) etc are fairly obvious.

The Jog wheel has various modes:

- Scroll mode. Part of the Scrub button cycle. The default. Scrolls the playhead. Displays "SC" in the 2 character LED.

- Scrub mode. Part of the Scrub button cycle. Rate of rotation of the Jog wheel controls the direction and speed of the transport. Displays "Sb" in the 2 character LED.

- Shuttle mode. Part of the Scrub button cycle. Jog wheel controls speed and direction of transport. Displays "Sh" in the 2 character LED.

- Zoom mode. Toggled by the Zoom button. Mutually exclusive with the Scrub cycle. Jog wheel controls zoom level. Displays "Zm" in the 2 character LED.

When holding ffwd or rew, the Jog wheel will adjust the speed.

frm_next and frm_prev will jump to next or previous markers. Markers can be set at the current playhead position with the marker button.

The pot will pan single panners, and linked stereo panners. It won't pan unlinked stereo panners, or 3 or more channel panners.

## Thanks

Thomas Vecchione for help debugging the mackie LCD display, and functionality suggestions.

Giso Grimm for help debugging various BCF issues, and functionality suggestions.

Josh Parsons for the udev configuration and links.

Various other people who provided good bug reports and suggestions and feedback.