summaryrefslogtreecommitdiff
path: root/manual/xml/bcf2000.xml
blob: ebd074e78f2380a8132c768d955c082857e8ede6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
<?xml version="1.0" standalone="no"?>

<!DOCTYPE section PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN" "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd" [

]>

<section id="sn-bcf2000">
  <title>Using a BCF2000</title>
  <para>
    This will walk you through the process of configuring and using a
    <ulink url="http://www.behringer.com/BCF2000/index.cfm">Behringer
    BCF2000 MIDI control surface</ulink> , or BCF, with Ardour. This should
    also work with the
    <ulink url="http://www.behringer.com/BCR2000/index.cfm">BCR2000</ulink>,
    but has not been tested.
  </para>

  <section id="bcf2000-connecting-device">
    <title>Connecting Device</title>
    <para>
      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 <ulink url="http://www.linux-usb.org/">USB
      port work under Linux.</ulink>
    </para>

    <para>
      If the USB MODE light is on, doublecheck that Linux knows of the
      device.
    </para>
<screen>
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  '
</screen>
  </section>

  <section id="updating-firmware">
    <title> Firmware Updating (v1.07) </title>
    <para>
      The first thing you're likely to have to do is update the firmware in
      the unit. This is a relatively painless process.
    </para>
    <orderedlist>
      <listitem>
        <para>
          Download the firmware from Behringers
          <ulink url="http://www.behringer.com/05_support/bc_download/bc_downloads.cfm">downloads
          page</ulink>. There will be a
          <ulink url="http://www.behringer.com/BCF2000/bcf2000_107.zip">zip
          file</ulink> 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.)
        </para>
      </listitem>
      <listitem>
        <para>
          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.
        </para>
      </listitem>
      <listitem>
        <para>
          Find the system device of the BCF
        </para>
<screen>
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
</screen>
      </listitem>
    </orderedlist>
    <para>
      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
      <filename>/dev/snd/midiCnD0</filename> where <emphasis>n</emphasis> is
      the card number, in this case, 2.
    </para>

    <para>
      Write the firmware to the BCF with the command
    </para>
<screen>
cat bcf2000_1-07.syx > /dev/snd/midiC2D0	
</screen>
    <important>
      <para>
        Make sure you use the actual device you determined in the previous
        step
      </para>
    </important>

    <para>
      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.
    </para>
  </section>

  <section id="bcf2000-connecting-to-ardour">
    <title> Connecting to Ardour </title>
    <para>
      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.
    </para>

    <section id="bcf2000-connecting-with-qjackctl">
      <title> With qjackctl </title>
      <para>
        If you use the program <application>qjackctl</application> to
        control JACK, there's an easy way to connect Ardour to the BCF. Run
        qjackctl, and click on the <guibutton>Connect</guibutton> 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:
      </para>
      <mediaobject>
        <imageobject>
          <imagedata fileref="images/con1.jpg"/>
        </imageobject>
      </mediaobject>
      <para>
        Connect the BCF output to the Ardour input, and vice versa:
      </para>
      <mediaobject>
        <imageobject>
          <imagedata fileref="images/con2.jpg"/>
        </imageobject>
      </mediaobject>
      <section id="bcf2000-automating-qjackctl-connection">
        <title> Automating the qjackctl connection </title>
        <para>
          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 <guibutton>Patchbay</guibutton> button, then click on
          <guibutton>New</guibutton>. Qjackctl will ask if you want to
          create a patchbay definition as a snapshot of all actual client
          connections. Clicking on <guibutton>Yes</guibutton> will bring in
          a set of all ports available.
        </para>
        <mediaobject>
          <imageobject>
            <imagedata fileref="images/qjpatch.jpg"/>
          </imageobject>
        </mediaobject>
        <para>
          Make sure you've got both connections as described above, and
          click <guibutton>Save...</guibutton> and choose a filename. Once
          this is saved, you can close the patchbay.
        </para>

        <para>
          Next, click on the qjackctl <guibutton>Setup</guibutton> button,
          then click on the <guibutton>Options</guibutton> tab.
        </para>
        <mediaobject>
          <imageobject>
            <imagedata fileref="images/qjopts.jpg"/>
          </imageobject>
        </mediaobject>
        <para>
          Click on <guibutton>Activate patchbay persistence</guibutton> and
          use the filename you used to save the patchbay above. The patchbay
          connections will now be made after qjackctl starts up the clients.
        </para>
      </section>
    </section>

    <section id="bcf2000-connecting-from-command-line">
      <title> From the command line </title>
      <para>
        The command <command>aconnect</command>, 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:
      </para>
<screen>
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             '
</screen>
      <para>
        Here, the BCF is 80, and Ardour is 129. The proper connections can
        be made between the two with two commands:
      </para>
<screen>
xtc:~% aconnect 80:0 129:0
xtc:~% aconnect 129:0 80:0
</screen>
    </section>

    <section id="bcf2000-automatic-midi-connection">
      <title> Automating the MIDI connection from the command line </title>
      <para>
        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:
      </para>
<screen>
#!/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 &amp;
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 
</screen>
      <para>
        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
        <guibutton>Setup</guibutton> button and choose the
        <guibutton>Options</guibutton> tab. Enable the <guibutton>Execute
        script after Startup</guibutton> option, and change the line to call
        the <filename>start_ardour.sh</filename> 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.
      </para>
      <mediaobject>
        <imageobject>
          <imagedata fileref="images/qjopt.jpg"/>
        </imageobject>
      </mediaobject>
    </section>
  </section>

  <section id="bcf2000-programming">
    <title> Programming the BCF2000 for effective use </title>
    <para>
      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:
    </para>

    <itemizedlist>
      <listitem>
        <para>
          Volume
        </para>
      </listitem>

      <listitem>
        <para>
          Panning
        </para>
      </listitem>

      <listitem>
        <para>
          Mute, solo and rec-enable
        </para>
      </listitem>

      <listitem>
        <para>
          Transport (play, stop, ffwd, rewind)
        </para>
      </listitem>
    </itemizedlist>

    <para>
      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:
    </para>

    <itemizedlist>
      <listitem>
        <para>
          Rotary knobs 1 through 8, when pressed: CC33 through CC40
        </para>
      </listitem>

      <listitem>
        <para>
          First row of buttons: CC65 through CC72
        </para>
      </listitem>

      <listitem>
        <para>
          second row of buttons: CC73 through CC80
        </para>
      </listitem>
    </itemizedlist>

    <para>
      Here's a quick walkthrough to program the controls on the BCF. First
      we'll do the rotary knobs:
    </para>
    <orderedlist>
      <listitem>
        <para>
          Hold down the EDIT button and press the rotary control. The
          display will show b1.
        </para>
      </listitem>
      <listitem>
        <para>
          Turn the rotary control labeled "TYPE" until the display reads
          "CC".
        </para>
      </listitem>
      <listitem>
        <para>
          Turn the rotary control labeled "PAR" until the display reads
          "33".
        </para>
      </listitem>
      <listitem>
        <para>
          Turn the rotary control labeled "MODE" until the display reads "t
          on".
        </para>
      </listitem>
      <listitem>
        <para>
          Press the EXIT button.
        </para>
      </listitem>
    </orderedlist>
    <para>
      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.
    </para>

    <para>
      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.
    </para>

    <para>
      Finally, you need to store these changes so that they'll be kept even
      when the BCF has its power cycled.
      <orderedlist>
        <listitem>
          <para>
            Press the STORE button. Its LED will start to flash.
          </para>
        </listitem>
        <listitem>
          <para>
            Select a different preset number if you wish with the left and
            right PRESET buttons.
          </para>
        </listitem>
        <listitem>
          <para>
            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.
          </para>
        </listitem>
      </orderedlist>
    </para>

    <para>
      Your BCF2000 is now ready to control Ardour!
    </para>

    <section id="bcf2000-preconfigured-preset-file">
      <title> Preconfigured Preset File </title>
      <para>
        Here is a <ulink url="http://zappa.brainiac.com/preset1.syx">saved
        preset file</ulink>, which has the definitions described above. You
        can use <command>amidi</command> to load this into the BCF as
        <xref linkend="bcf2000-loading-a-preset"/>.
      </para>
    </section>
  </section>

  <section id="bcf2000-mapping-ardour-controls">
    <title> Mapping Ardour controls to the BCF2000 </title>
    <para>
      The final step to control surface Nirvana is to map the controls in
      Ardour to the knobs, buttons and faders on the BCF.
    </para>

    <para>
      Before you can map things properly, you'll need to set the MIDI
      options within Ardour. In the Editor window of Ardour, choose
      <menuchoice> <guimenu>Windows</guimenu> <guisubmenu>Options
      Editor</guisubmenu> </menuchoice>. Make sure the seq device is online,
      and make sure <guibutton>MTC</guibutton>, <guibutton>MMC</guibutton>
      and <guibutton>MIDI Parameter Control</guibutton> is set for the seq
      device. Also make sure that the 4 boxes below are checked:
    </para>

    <itemizedlist>
      <listitem>
        <para>
          <guibutton>MMC control</guibutton>
        </para>
      </listitem>

      <listitem>
        <para>
          <guibutton>MIDI parameter control</guibutton>
        </para>
      </listitem>

      <listitem>
        <para>
          <guibutton>Send MMC</guibutton>
        </para>
      </listitem>

      <listitem>
        <para>
          <guibutton>Send MIDI parameter feedback</guibutton>
        </para>
      </listitem>
    </itemizedlist>
    <mediaobject>
      <imageobject>
        <imagedata fileref="images/midiopts.jpg"/>
      </imageobject>
    </mediaobject>
    <para>
      Now you're ready to do the actual mapping. This is a pretty simple
      process, all controlled with a <keycombo><keycap>Ctrl</keycap>
      <mousebutton>Button2</mousebutton> </keycombo> click. This will pop up
      a little window which says <guilabel>operate MIDI controller
      now</guilabel>. Simply press the BCF button (or move the slider) that
      you want to have control the Ardour function.
    </para>

    <section id="bcf2000-example">
      <title>Example</title>
      <para>
        We want to map the Master fader in Ardour to the first slider on the
        BCF. Hold down the <keycap>Ctrl</keycap> key on your keyboard, and
        click with <mousebutton>Button2</mousebutton> on the Master fader in
        Ardour. You should see the <guilabel>operate MIDI controller
        now</guilabel>. 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!
      </para>

      <para>
        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.
      </para>
    </section>

    <section id="bcf2000-transport-controls">
      <title> Transport Controls </title>
      <para>
        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.
      </para>
      <mediaobject>
        <imageobject>
          <imagedata fileref="images/transctls.jpg"/>
        </imageobject>
      </mediaobject>
    </section>
  </section>

  <section id="bcf2000-saving-and-loading-presets">
    <title> Saving and Loading Presets </title>
    <para>
      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. <glossterm linkend="gt-alsa">ALSA</glossterm>
      provides the perfect tool for saving and loading files:
      <command>amidi</command>
    </para>

    <para>
      First, use <command>amidi</command> to list the available ports:
    </para>
<screen>
xtc:~% amidi -l
Device    Name
hw:0,0    M Audio Delta 1010 MIDI
hw:2,0,0  BCF2000 MIDI 1
</screen>
    <para>
      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
    </para>

    <section id="bcf2000-saving-a-preset">
      <title> Saving a Preset </title>
      <para>
        There's 2 parts to saving a preset: telling the BCF to send the
        data, and telling the computer to accept it.
      </para>

      <section id="bcf2000-recieving-the-data">
        <title> Receiving the Data </title>
        <para>
          Run <command>amidi</command>, using the <option>-p</option> option
          to specify the port, and the <option>-r</option> option to receive
          the date into.
        </para>
<screen>
xtc:~% amidi -p hw:2 -r preset1.syx
</screen>
        <para>
          The system will collect data from the MIDI port now until it's
          told to stop with a
          <keycombo><keycap>Ctrl</keycap><keycap>C</keycap> </keycombo> so
          it's time to send some data.
        </para>
      </section>

      <section id="bcf2000-sending-the-data">
        <title> Sending the Data </title>
        <para>
          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
<screen>
	EG
</screen>
          . This is the Global Edit mode.
        </para>

        <para>
          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
<screen>
	All
</screen>
          or
<screen>
	SnGl
</screen>
          . 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
<screen>
	EG
</screen>
          when complete. At this point,
          <keycombo><keycap>Ctrl</keycap><keycap>C</keycap> </keycombo> out
          of amidi. You'll see a report on the amount of data read:
        </para>
<screen>
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
</screen>
        <para>
          The data for the preset is now saved in the file
          <filename>preset1.syx</filename>. Press Exit on the BCF to exit
          the Global Edit mode.
        </para>
      </section>
    </section>

    <section id="bcf2000-loading-a-preset">
      <title> Loading a Preset </title>
      <para>
        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 <command>amidi</command> using the
        <option>-s</option> option instead of <option>-r</option> to send a
        file.
      </para>
<screen>
xtc:~% amidi -p hw:2 -s preset1.syx
</screen>
      <para>
        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.
      </para>

      <para>
        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,
      </para>
      <orderedlist>
        <listitem>
          <para>
            Press the STORE button. Its LED will start to flash.
          </para>
        </listitem>
        <listitem>
          <para>
            Select a different preset number if you wish with the left and
            right PRESET buttons.
          </para>
        </listitem>
        <listitem>
          <para>
            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.
          </para>
        </listitem>
      </orderedlist>
    </section>
  </section>

  <section id="bcf2000-bcedit">
    <title> Using BCEdit </title>
    <para>
      The tool provided by Behringer to manage presets and other things on
      the BCF is the Java program
      <ulink url="http://www.behringer.com/05_support/bc_download/bc_downloads.cfm">BCEdit</ulink>.
      This program will start up under Linux provided the correct version of
      Java is used. I've found that
      <ulink url="http://java.sun.com/j2se/1.5.0/download.jsp">JRE 5.0
      Update 2</ulink> starts up correctly, but earlier versions of 5.0 will
      not.
      <ulink url="http://behringer-en.custhelp.com/cgi-bin/behringer_en.cfg/php/enduser/std_alp.php?sm=2">The
      Behringer support page</ulink> 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.
    </para>

    <para>
      At this point, I don't consider <application>BCEdit</application> to
      be fully usable under Linux yet.
    </para>
  </section>
<!--
	<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" 
		href="Some_Subsection.xml" />
	-->
</section>