Using a BCF2000
This will walk you through the process of configuring and using a
Behringer
BCF2000 MIDI control surface , or BCF, with Ardour. This should
also work with the
BCR2000,
but has not been tested.
Connecting 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 the BCF2000 to your computer with a USB cable, connect the
power, and turn it on. You should see the USB MODE light come on in
the upper right corner of the BCF. If that's not on, you'll need to
figure out how to make your USB
port work under Linux.
If the USB MODE light is on, doublecheck that Linux knows of the
device.
xtc:~% aconnect -o
client 64: 'M Audio Delta 1010 MIDI - Rawmidi 0' [type=kernel]
0 'M Audio Delta 1010 MIDI'
client 72: 'BCF2000 - Rawmidi 1' [type=kernel]
0 'BCF2000 MIDI 1 '
Firmware Updating (v1.07)
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 Behringers
downloads
page. There will be a
zip
file available which should be downloaded. (This example
uses version 1.07 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 files, a
PDF file with release notes and an SYX file, which is the firmware
update.
Find the system device of the BCF
xtc:~% 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 BCF 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 BCF with the command
cat bcf2000_1-07.syx > /dev/snd/midiC2D0
Make sure you use the actual device you determined in the previous
step
The BCF display will show a whirling figure-8 animation and count up
to 18. Once the whirling stops, you should turn off the BCF, 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 BCF starts.
Connecting to Ardour
After starting Ardour, it's important to connect the MIDI device ports
of Ardour and the BCF together so that they will communicate with each
other. There are a few ways to do this.
With qjackctl
If you use the program qjackctl to
control JACK, there's an easy way to connect Ardour to the BCF. Run
qjackctl, and click on the Connect button in
the main qjackctl window. This will bring up the Connection window.
You should see at least 2 items listed, the BCF and Ardour:
Connect the BCF output to the Ardour input, and vice versa:
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.
Make sure you've got both connections as described above, and
click Save... and choose a filename. Once
this is saved, you can close the patchbay.
Next, click on the qjackctl Setup button,
then click on the Options tab.
Click on Activate patchbay persistence and
use the filename you used to save the patchbay above. The patchbay
connections will now be made after qjackctl starts up the clients.
From the command line
The command aconnect, which is the ALSA sequencer
connection manager, can do the job of connecting the BCF to Ardour.
First find the numbers of the MIDI device ports for the two:
xtc:~% aconnect -o
client 64: 'M Audio Delta 1010 MIDI - Rawmidi 0' [type=kernel]
0 'M Audio Delta 1010 MIDI'
client 80: 'BCF2000 - Rawmidi 2' [type=kernel]
0 'BCF2000 MIDI 1 '
client 129: 'ardour' [type=user]
0 'seq '
Here, the BCF is 80, and Ardour is 129. The proper connections can
be made between the two with two commands:
xtc:~% aconnect 80:0 129:0
xtc:~% aconnect 129:0 80:0
Automating the MIDI connection from the command line
It's sometimes handy to start Ardour from the command line. I found
it irritating to have Ardour come up, and then have to manually make
the connections for the BCF. This was quickly solved by the
following script, which starts Ardour, finds the proper MIDI device
ports, and connects them:
#!/bin/ksh
# /usr/local/bin/start_ardour.sh
#
# April 17, 2005 - Joe Hartley (jh@brainiac.com)
# A quick script to start Ardour and then make the MIDI connections between
# the BCF2000 and Ardour.
# start Ardour and give it a little time before setting the MIDI connections
nohup /usr/bin/ardour &
sleep 3
# Set the IDs - note that they'll both end with a colon
BCF_ID=$(aconnect -o | grep BCF2000 | grep client | awk '{print $2}')
ARD_ID=$(aconnect -o | grep ardour | awk '{print $2}')
aconnect "$BCF_ID"0 "$ARD_ID"0
aconnect "$ARD_ID"0 "$BCF_ID"0
As an alternative to the patchbay in qjackctl, you could have it run
this script to start Ardour and make the MIDI connections. Click the
Setup button and choose the
Options tab. Enable the Execute
script after Startup option, and change the line to call
the start_ardour.sh script. In this example, I
change directories to the drive I record to so new sessions will
open there by default before I run the script.
Programming the BCF2000 for effective use
One problem that I ran into with the BCF2000 was that none of the
factory presets really did what I needed to control Ardour. I had a
modest set of things I wanted to use the BCF to control for a track:
Volume
Panning
Mute, solo and rec-enable
Transport (play, stop, ffwd, rewind)
Preset 2 (P2), the Simple Mixer, was almost there, but I could not map
the mute, solo and rec-enable controls in Ardour 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 I
mapped them to send:
Rotary knobs 1 through 8, when pressed: CC33 through CC40
First row of buttons: CC65 through CC72
second row of buttons: CC73 through CC80
Here's a quick walkthrough to program the controls on the BCF. First
we'll do the rotary knobs:
Hold down the EDIT button and press the rotary control. The
display will show b1.
Turn the rotary control labeled "TYPE" until the display reads
"CC".
Turn the rotary control labeled "PAR" until the display reads
"33".
Turn the rotary control labeled "MODE" until the display reads "t
on".
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 at any time by pressing EXIT.
Your BCF2000 is now ready to control Ardour!
Preconfigured Preset File
Here is a saved
preset file, which has the definitions described above. You
can use amidi to load this into the BCF as
.
Mapping Ardour controls to the BCF2000
The final step to control surface Nirvana is to map the controls in
Ardour to the knobs, buttons and faders on the BCF.
Before you can map things properly, you'll need to set the MIDI
options within Ardour. In the Editor window of Ardour, choose
WindowsOptions
Editor. Make sure the seq device is online,
and make sure MTC, MMC
and MIDI Parameter Control is set for the seq
device. Also make sure that the 4 boxes below are checked:
MMC controlMIDI parameter controlSend MMCSend MIDI parameter feedback
Now you're ready to do the actual mapping. This is a pretty simple
process, all controlled with a CtrlButton2 click. This will pop up
a little window which says operate MIDI controller
now. Simply press the BCF button (or move the slider) that
you want to have control the Ardour function.
Example
We want to map the Master fader in Ardour to the first slider on the
BCF. Hold down the Ctrl key on your keyboard, and
click with Button2 on the Master fader in
Ardour. You should see the operate MIDI controller
now. Move the first slider on the BCF up or down a bit.
The window should disappear, and you should see the master fader
move up and down as you move the slider on the BCF. If that works,
move the fader in Ardour with your mouse. You should see the slider
on the BCF move up and down in tandem with the Master fader!
If the "operate MIDI controller now" window does not go away, there
is no connection between Ardour and the BCF. Make sure you've
properly connected the two as outlined in the Connecting to Ardour
section.
Transport Controls
The 4 buttons in the lower right corner are already mapped in Preset
2 to the MMC transport controls Home (or rewind to the beginning of
the session), Fast Forward, Stop and Play, as shown here.
Saving and Loading Presets
After beating my head against a wall trying to get various programs
that handle SysEx messages to do what I wanted, I realized that once
again, the simplest way for me to do this the first time through is
from the command line. ALSA
provides the perfect tool for saving and loading files:
amidi
First, use amidi to list the available ports:
xtc:~% amidi -l
Device Name
hw:0,0 M Audio Delta 1010 MIDI
hw:2,0,0 BCF2000 MIDI 1
There's the BCF, at port hw:2 (we can ignore everything after the
first number after the colon). We'll tell amidi to use this port with
the -p option
Saving a Preset
There's 2 parts to saving a preset: telling the BCF to send the
data, and telling the computer to accept it.
Receiving the Data
Run amidi, using the option
to specify the port, and the option to receive
the date into.
xtc:~% amidi -p hw:2 -r preset1.syx
The system will collect data from the MIDI port now until it's
told to stop with a
CtrlC so
it's time to send some data.
Sending the Data
To send the MIDI data for the current preset to the computer, hold
down the Edit key on the BCF and press the Store button. They
should both stay lit and the display should read
EG
. This is the Global Edit mode.
You can choose whether to send the current preset's data or the
data for all 32 presets by turning the Mode knob, #6, and
selecting either
All
or
SnGl
. When ready to send the data, press knob 6. The display on the
BCF will circle around while it's sending data, and return to
EG
when complete. At this point,
CtrlC out
of amidi. You'll see a report on the amount of data read:
xtc:~% amidi -p hw:2 -r preset1.syx
13169 bytes read
xtc:~% ls -l preset1.syx
-rw-r--r-- 1 jh jh 13169 May 1 22:14 preset1.syx
The data for the preset is now saved in the file
preset1.syx. Press Exit on the BCF to exit
the Global Edit mode.
Loading a Preset
Loading a .syx file, such as the one saved above, is very simple.
First, select the preset on the BCF to choose the preset to
overwrite. Then call amidi using the
option instead of to send a
file.
xtc:~% amidi -p hw:2 -s preset1.syx
There will be a quick left-to-right flash of the encoder LEDs along
the top of the BCF, followed by the display circling around until
the data is loaded. It will then display the preset number again.
The preset is now loaded with the settings from the file. They are
only active as long as the preset is not changed. If you go to
another preset and back to the one you loaded, all the changes will
have disappeared. To save the settings,
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 at any time by pressing EXIT.
Using BCEdit
The tool provided by Behringer to manage presets and other things on
the BCF is the Java program
BCEdit.
This program will start up under Linux provided the correct version of
Java is used. I've found that
JRE 5.0
Update 2 starts up correctly, but earlier versions of 5.0 will
not.
The
Behringer support page says that the "editor software was
originally developed under J2SE-1_4_2_05". I tested it with
J2RE1.4.2_08 and BCEdit started, but was unable to see the BCF when
the "Scan" button was pressed. Running under JRE_1.5.0_02, pressing
the "Scan" button found the BCF, and I was able to load presets from
the BCF to BCEdit, but when I simply renamed the preset and tried to
write it back to the BCF, I got a Timeout Error while sending "$rev
F1" in the application.
At this point, I don't consider BCEdit to
be fully usable under Linux yet.