1 <?xml version="1.0" standalone="no"?>
3 <!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN" "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd" [
7 <section id="sn-bcf2000">
8 <title>Using a BCF2000</title>
10 This will walk you through the process of configuring and using a
11 <ulink url="http://www.behringer.com/BCF2000/index.cfm">Behringer BCF2000
12 MIDI control surface</ulink> , or BCF, with Ardour. This should also work
14 <ulink url="http://www.behringer.com/BCR2000/index.cfm">BCR2000</ulink>, but
18 <section id="bcf2000-connecting-device">
19 <title>Connecting Device</title>
21 It's assumed that your USB ports are functional under Linux. The easiest
22 way to tell if you've got a functional link is to simply connect the
23 BCF2000 to your computer with a USB cable, connect the power, and turn it
24 on. You should see the USB MODE light come on in the upper right corner of
25 the BCF. If that's not on, you'll need to figure out how to make your
26 <ulink url="http://www.linux-usb.org/">USB port work under Linux.</ulink>
30 If the USB MODE light is on, doublecheck that Linux knows of the device.
34 client 64: 'M Audio Delta 1010 MIDI - Rawmidi 0' [type=kernel]
35 0 'M Audio Delta 1010 MIDI'
36 client 72: 'BCF2000 - Rawmidi 1' [type=kernel]
41 <section id="updating-firmware">
42 <title> Firmware Updating (v1.07) </title>
44 The first thing you're likely to have to do is update the firmware in the
45 unit. This is a relatively painless process.
50 Download the firmware from Behringers
51 <ulink url="http://www.behringer.com/05_support/bc_download/bc_downloads.cfm">downloads
52 page</ulink>. There will be a
53 <ulink url="http://www.behringer.com/BCF2000/bcf2000_107.zip">zip
54 file</ulink> available which should be downloaded. (This example uses
55 version 1.07 of the firmware, the latest available at the time of this
56 writing. There may be a newer version available now.)
61 Unzip the file you downloaded. You'll typically extract 2 files, a PDF
62 file with release notes and an SYX file, which is the firmware update.
67 Find the system device of the BCF
70 xtc:~% cat /proc/asound/cards
71 0 [M1010 ]: ICE1712 - M Audio Delta 1010
72 M Audio Delta 1010 at 0xdf80, irq
73 2 [BCF2000 ]: USB-Audio - BCF2000
74 BEHRINGER BCF2000 at usb-00:1d.1-2, full speed
79 In this case there are 2 devices. The number at the left indicates the card
80 number. The BCF is almost certain, then, to use the device
81 <filename>/dev/snd/midiCnD0</filename> where <emphasis>n</emphasis> is the
82 card number, in this case, 2.
86 Write the firmware to the BCF with the command
89 cat bcf2000_1-07.syx > /dev/snd/midiC2D0
93 Make sure you use the actual device you determined in the previous step
98 The BCF display will show a whirling figure-8 animation and count up to 18.
99 Once the whirling stops, you should turn off the BCF, count to 5, then turn
100 it on again. You should then see the version number of the upgraded
101 firmware displayed for a few seconds as the BCF starts.
105 <section id="bcf2000-connecting-to-ardour">
106 <title> Connecting to Ardour </title>
108 After starting Ardour, it's important to connect the MIDI device ports of
109 Ardour and the BCF together so that they will communicate with each other.
110 There are a few ways to do this.
113 <section id="bcf2000-connecting-with-qjackctl">
114 <title> With qjackctl </title>
116 If you use the program <application>qjackctl</application> to control
117 JACK, there's an easy way to connect Ardour to the BCF. Run qjackctl, and
118 click on the <guibutton>Connect</guibutton> button in the main qjackctl
119 window. This will bring up the Connection window. You should see at least
120 2 items listed, the BCF and Ardour:
124 <imagedata fileref="images/con1.jpg"/>
128 Connect the BCF output to the Ardour input, and vice versa:
132 <imagedata fileref="images/con2.jpg"/>
135 <section id="bcf2000-automating-qjackctl-connection">
136 <title> Automating the qjackctl connection </title>
138 You can set qjackctl to automatically make the MIDI connections (and
139 others) by using the Patchbay feature in qjackctl. Start qjackctl and
140 Ardour, and make the MIDI connections as shown above. Click on the
141 <guibutton>Patchbay</guibutton> button, then click on
142 <guibutton>New</guibutton>. Qjackctl will ask if you want to create a
143 patchbay definition as a snapshot of all actual client connections.
144 Clicking on <guibutton>Yes</guibutton> will bring in a set of all ports
149 <imagedata fileref="images/qjpatch.jpg"/>
153 Make sure you've got both connections as described above, and click
154 <guibutton>Save...</guibutton> and choose a filename. Once this is saved,
155 you can close the patchbay.
159 Next, click on the qjackctl <guibutton>Setup</guibutton> button, then
160 click on the <guibutton>Options</guibutton> tab.
164 <imagedata fileref="images/qjopts.jpg"/>
168 Click on <guibutton>Activate patchbay persistence</guibutton> and use the
169 filename you used to save the patchbay above. The patchbay connections
170 will now be made after qjackctl starts up the clients.
175 <section id="bcf2000-connecting-from-command-line">
176 <title> From the command line </title>
178 The command <command>aconnect</command>, which is the ALSA sequencer
179 connection manager, can do the job of connecting the BCF to Ardour. First
180 find the numbers of the MIDI device ports for the two:
184 client 64: 'M Audio Delta 1010 MIDI - Rawmidi 0' [type=kernel]
185 0 'M Audio Delta 1010 MIDI'
186 client 80: 'BCF2000 - Rawmidi 2' [type=kernel]
188 client 129: 'ardour' [type=user]
192 Here, the BCF is 80, and Ardour is 129. The proper connections can be made
193 between the two with two commands:
196 xtc:~% aconnect 80:0 129:0
197 xtc:~% aconnect 129:0 80:0
201 <section id="bcf2000-automatic-midi-connection">
202 <title> Automating the MIDI connection from the command line </title>
204 It's sometimes handy to start Ardour from the command line. I found it
205 irritating to have Ardour come up, and then have to manually make the
206 connections for the BCF. This was quickly solved by the following script,
207 which starts Ardour, finds the proper MIDI device ports, and connects
212 # /usr/local/bin/start_ardour.sh
214 # April 17, 2005 - Joe Hartley (jh@brainiac.com)
215 # A quick script to start Ardour and then make the MIDI connections between
216 # the BCF2000 and Ardour.
218 # start Ardour and give it a little time before setting the MIDI connections
219 nohup /usr/bin/ardour &
222 # Set the IDs - note that they'll both end with a colon
223 BCF_ID=$(aconnect -o | grep BCF2000 | grep client | awk '{print $2}')
224 ARD_ID=$(aconnect -o | grep ardour | awk '{print $2}')
226 aconnect "$BCF_ID"0 "$ARD_ID"0
227 aconnect "$ARD_ID"0 "$BCF_ID"0
230 As an alternative to the patchbay in qjackctl, you could have it run this
231 script to start Ardour and make the MIDI connections. Click the
232 <guibutton>Setup</guibutton> button and choose the
233 <guibutton>Options</guibutton> tab. Enable the <guibutton>Execute script
234 after Startup</guibutton> option, and change the line to call the
235 <filename>start_ardour.sh</filename> script. In this example, I change
236 directories to the drive I record to so new sessions will open there by
237 default before I run the script.
241 <imagedata fileref="qjopt.jpg"/>
247 <section id="bcf2000-programming">
248 <title> Programming the BCF2000 for effective use </title>
250 One problem that I ran into with the BCF2000 was that none of the factory
251 presets really did what I needed to control Ardour. I had a modest set of
252 things I wanted to use the BCF to control for a track:
268 Mute, solo and rec-enable
273 Transport (play, stop, ffwd, rewind)
279 Preset 2 (P2), the Simple Mixer, was almost there, but I could not map the
280 mute, solo and rec-enable controls in Ardour to a pushbutton on the BCF.
281 This was because in P2, the buttons sent a Program Change signal, but
282 Ardour expects a Control Change signal. This required re-programming the
283 BCF a bit. Here's a list of the controls and what I mapped them to send:
289 Rotary knobs 1 through 8, when pressed: CC33 through CC40
294 First row of buttons: CC65 through CC72
299 second row of buttons: CC73 through CC80
305 Here's a quick walkthrough to program the controls on the BCF. First we'll
311 Hold down the EDIT button and press the rotary control. The display will
317 Turn the rotary control labeled "TYPE" until the display reads "CC".
322 Turn the rotary control labeled "PAR" until the display reads "33".
327 Turn the rotary control labeled "MODE" until the display reads "t on".
332 Press the EXIT button.
337 Continue to program the other rotary controls in the same way, incrementing
338 the value set by the "PAR" control by 1 each time. This will set the CC
339 parameter for the second knob to 34, the third knob to 35, and so on.
343 The steps are the same for the two rows of pushbuttons under the rotary
344 knobs. The CC values for the first row of buttons run from 65 to 72, and
345 from 73 to 80 for the second row.
349 Finally, you need to store these changes so that they'll be kept even when
350 the BCF has its power cycled.
354 Press the STORE button. Its LED will start to flash.
359 Select a different preset number if you wish with the left and right
365 Press STORE again to write the settings to an empty preset. If you want
366 to overwrite an existing preset, press STORE twice. You can cancel the
367 store at any time by pressing EXIT.
374 Your BCF2000 is now ready to control Ardour!
377 <section id="bcf2000-preconfigured-preset-file">
378 <title> Preconfigured Preset File </title>
380 Here is a <ulink url="http://zappa.brainiac.com/preset1.syx">saved preset
381 file</ulink>, which has the definitions described above. You can use
382 <command>amidi</command> to load this into the BCF as
383 <xref linkend="bcf2000-loading-a-preset"/>.
388 <section id="bcf2000-mapping-ardour-controls">
389 <title> Mapping Ardour controls to the BCF2000 </title>
391 The final step to control surface Nirvana is to map the controls in Ardour
392 to the knobs, buttons and faders on the BCF.
396 Before you can map things properly, you'll need to set the MIDI options
397 within Ardour. In the Editor window of Ardour, choose <menuchoice>
398 <guimenu>Windows</guimenu> <guisubmenu>Options Editor</guisubmenu>
399 </menuchoice>. Make sure the seq device is online, and make sure
400 <guibutton>MTC</guibutton>, <guibutton>MMC</guibutton> and <guibutton>MIDI
401 Parameter Control</guibutton> is set for the seq device. Also make sure
402 that the 4 boxes below are checked:
408 <guibutton>MMC control</guibutton>
413 <guibutton>MIDI parameter control</guibutton>
418 <guibutton>Send MMC</guibutton>
423 <guibutton>Send MIDI parameter feedback</guibutton>
429 <imagedata fileref="images/midiopts.jpg"/>
433 Now you're ready to do the actual mapping. This is a pretty simple process,
434 all controlled with a <keycombo><keycap>Ctrl</keycap>
435 <mousebutton>Button2</mousebutton> </keycombo> click. This will pop up a
436 little window which says <guilabel>operate MIDI controller now</guilabel>.
437 Simply press the BCF button (or move the slider) that you want to have
438 control the Ardour function.
441 <section id="bcf2000-example">
442 <title>Example</title>
444 We want to map the Master fader in Ardour to the first slider on the BCF.
445 Hold down the <keycap>Ctrl</keycap> key on your keyboard, and click with
446 <mousebutton>Button2</mousebutton> on the Master fader in Ardour. You
447 should see the <guilabel>operate MIDI controller now</guilabel>. Move the
448 first slider on the BCF up or down a bit. The window should disappear, and
449 you should see the master fader move up and down as you move the slider on
450 the BCF. If that works, move the fader in Ardour with your mouse. You
451 should see the slider on the BCF move up and down in tandem with the
456 If the "operate MIDI controller now" window does not go away, there is no
457 connection between Ardour and the BCF. Make sure you've properly connected
458 the two as outlined in the Connecting to Ardour section.
462 <section id="bcf2000-transport-controls">
463 <title> Transport Controls </title>
465 The 4 buttons in the lower right corner are already mapped in Preset 2 to
466 the MMC transport controls Home (or rewind to the beginning of the
467 session), Fast Forward, Stop and Play, as shown here.
471 <imagedata fileref="images/transctls.jpg"/>
477 <section id="bcf2000-saving-and-loading-presets">
478 <title> Saving and Loading Presets </title>
480 After beating my head against a wall trying to get various programs that
481 handle SysEx messages to do what I wanted, I realized that once again, the
482 simplest way for me to do this the first time through is from the command
483 line. <glossterm linkend="gt-alsa">ALSA</glossterm> provides the perfect
484 tool for saving and loading files: <command>amidi</command>
488 First, use <command>amidi</command> to list the available ports:
493 hw:0,0 M Audio Delta 1010 MIDI
494 hw:2,0,0 BCF2000 MIDI 1
497 There's the BCF, at port hw:2 (we can ignore everything after the first
498 number after the colon). We'll tell amidi to use this port with the -p
502 <section id="bcf2000-saving-a-preset">
503 <title> Saving a Preset </title>
505 There's 2 parts to saving a preset: telling the BCF to send the data, and
506 telling the computer to accept it.
509 <section id="bcf2000-recieving-the-data">
510 <title> Receiving the Data </title>
512 Run <command>amidi</command>, using the <option>-p</option> option to
513 specify the port, and the <option>-r</option> option to receive the date
517 xtc:~% amidi -p hw:2 -r preset1.syx
520 The system will collect data from the MIDI port now until it's told to
521 stop with a <keycombo><keycap>Ctrl</keycap><keycap>C</keycap> </keycombo>
522 so it's time to send some data.
526 <section id="bcf2000-sending-the-data">
527 <title> Sending the Data </title>
529 To send the MIDI data for the current preset to the computer, hold down
530 the Edit key on the BCF and press the Store button. They should both stay
531 lit and the display should read
535 . This is the Global Edit mode.
539 You can choose whether to send the current preset's data or the data for
540 all 32 presets by turning the Mode knob, #6, and selecting either
548 . When ready to send the data, press knob 6. The display on the BCF will
549 circle around while it's sending data, and return to
553 when complete. At this point,
554 <keycombo><keycap>Ctrl</keycap><keycap>C</keycap> </keycombo> out of
555 amidi. You'll see a report on the amount of data read:
558 xtc:~% amidi -p hw:2 -r preset1.syx
561 xtc:~% ls -l preset1.syx
562 -rw-r--r-- 1 jh jh 13169 May 1 22:14 preset1.syx
565 The data for the preset is now saved in the file
566 <filename>preset1.syx</filename>. Press Exit on the BCF to exit the
572 <section id="bcf2000-loading-a-preset">
573 <title> Loading a Preset </title>
575 Loading a .syx file, such as the one saved above, is very simple. First,
576 select the preset on the BCF to choose the preset to overwrite. Then call
577 <command>amidi</command> using the <option>-s</option> option instead of
578 <option>-r</option> to send a file.
581 xtc:~% amidi -p hw:2 -s preset1.syx
584 There will be a quick left-to-right flash of the encoder LEDs along the
585 top of the BCF, followed by the display circling around until the data is
586 loaded. It will then display the preset number again.
590 The preset is now loaded with the settings from the file. They are only
591 active as long as the preset is not changed. If you go to another preset
592 and back to the one you loaded, all the changes will have disappeared. To
598 Press the STORE button. Its LED will start to flash.
603 Select a different preset number if you wish with the left and right
609 Press STORE again to write the settings to an empty preset. If you want
610 to overwrite an existing preset, press STORE twice. You can cancel the
611 store at any time by pressing EXIT.
618 <section id="bcf2000-bcedit">
619 <title> Using BCEdit </title>
621 The tool provided by Behringer to manage presets and other things on the
622 BCF is the Java program
623 <ulink url="http://www.behringer.com/05_support/bc_download/bc_downloads.cfm">BCEdit</ulink>.
624 This program will start up under Linux provided the correct version of Java
625 is used. I've found that
626 <ulink url="http://java.sun.com/j2se/1.5.0/download.jsp">JRE 5.0 Update
627 2</ulink> starts up correctly, but earlier versions of 5.0 will not.
628 <ulink url="http://behringer-en.custhelp.com/cgi-bin/behringer_en.cfg/php/enduser/std_alp.php?sm=2">The
629 Behringer support page</ulink> says that the "editor software was
630 originally developed under J2SE-1_4_2_05". I tested it with J2RE1.4.2_08
631 and BCEdit started, but was unable to see the BCF when the "Scan" button
632 was pressed. Running under JRE_1.5.0_02, pressing the "Scan" button found
633 the BCF, and I was able to load presets from the BCF to BCEdit, but when I
634 simply renamed the preset and tried to write it back to the BCF, I got a
635 Timeout Error while sending "$rev F1" in the application.
639 At this point, I don't consider <application>BCEdit</application> to be
640 fully usable under Linux yet.
644 <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
645 href="Some_Subsection.xml" />