Behringer BCF2000 (Generic) MIDI Controller Sliders to Object Volumes

Tags: #<Tag:0x00007f9794a59528> #<Tag:0x00007f9794a58a10> #<Tag:0x00007f9794a584e8> #<Tag:0x00007f9794a55f18> #<Tag:0x00007f9794a55720>

I just figured this out and thought I’d share my screen shots for anyone else wanting this sort of thing.

I have a generic template with seven items in a song that all feed into the processing rack. I have a Behringer BCF2000 motorized slider box, and wanted the sliders to reflect the mouse-controlled positions of the output gains for each item.

I also wanted to be able to push a single button (the top-left knob in this case - on the BCF2000 each knob acts as a switch if you press it down) to reset all the sliders to Zero Db.

Since I re-use this song, using save-as to make new versions of it and replacing the racks and plugins as needed into the seven positions, I used “Object by Index” for the bindings, so their assignments would not be specific to a particular rack or plugin, but rather would simply reference whatever was in the song at that position (1-7).

I use the eighth slider as a master gain (the second of the two sliders at the top-right of the page).

Here is the page, followed by the bindings I used:

As you can divulge from the bindings:
The first eight send the BCF2000 sliders to the objects.
The second set of eight send the reset command to all by addressing the gain sliders of each object with the same switch.
The third set of eight send the object’s gain position out to the motorized sliders on the BCF2000 so that they reflect the gain position on the screen.

By using objects I can recycle this “song” easily, giving me fades on each instrument as well as a master fader for all of them!

If you have a different fader box that sends generic MIDI, you can adapt this approach to that device. Of course, if you do not have motorized faders, you do not need to use the last eight bindings to send signals to the mixer. But this lays out an example of how this can work. I’m doing a similar approach for the knobs at the top of the BCF2000, which uses lights around the knob as feedback for the position it is at.

Have fun!



Terry, I have an x-touch mini which has similar rotary encoders with LED position indicator.

I have the problem where if I adjust the knob, then the LEDs also adjust using “local control”. Like you, I also have a binding that sends the midi value back to the LED lights for that knob. The problem is that the local control and the received midi fight each other, especially if I have any curves applied in C3. Same race conditions problems with lit buttons.

Does the BCF2000 have the same issue, or can you switch “local control” off?

I get around this, by delaying the MIDI LED value from C3 to the LED by 100ms by sending it through BOME. This is a nuisance!

Do you know what Behringer have to say about this? Is this correct way to adjust the LEDs - by delaying?

I have not attempted working with the knobs yet, so I did not know there might be a “local control” issue with the lights. I will let you know if I run into the same problems – or if I do, whether I find a workaround or not.


Behringer’s response when I asked about local control in May this year was

** I’m afraid this cannot be changed, the scripting for controlling Leds on Buttons has not been added to the X-Touch Midi Editor App. **

I didn’t follow it up at the time.

It is ok with me if the knob lights do not respond to feedback, I guess. I rarely will use them in a situation where I twist the assigned plugin knob with the mouse once I’ve assigned a knob to it, so the fact that it is an absolute reflection of the value sent is convenient enough. Same with the mix and pan knobs in Cantabile - I think I’d never adjust those by mouse once I have a knob assigned.

The sliders were the big thing for me. It has 100 presets, but I’ll likely never use more than 2 or 3 at most (famous last words).


How do you avoid the same problem on the sliders?
eg. You move the slider quickly, BCF starts sending the MIDI values to C3. C3 sends the MIDI value back again to the sldier, but meanwhile the slider has moved a bit, So the motor tries to move it back to the last received value?

It has not presented a problem so far. There might be some compensation buffering going on to avoid that being a problem. (I do notice there is a touch of latency between the physical slider and the Cantabile one, though in the other direction moving the Cantabile slider has a seemingly instantaneous effect on the motorized slider.)


That’s interesting. When you get a minute, could you try the same with the encoders and buttons a try and see if they work ok for you please?

@brad or anyone else do you have any clever ways to deal with race conditions on the X Touch mini so I don’t have to go via BOME? Perhaps the general requirement would be to monitor 2 routes, and suppress a return message (disable a binding?) if it is the same as a received message for a definable time period? It applies to the encoders, and the lit buttons, and possibly any other control surface with 2 way messaging. It also applies to 2 way messaging between C3 and @Torsten’s LivePrompter.

I’m not sure what the correct solution is but I was wondering about just adding the ability for Cantabile to delay the outgoing bindings. ie: built in support for that 100ms delay.

Ideally I’d like to disable the return path (route or binding) for [user defined period 10 to 2000ms]

So a trigger on any note or cc from xtouch with a disable action for a named binding for X ms. Can we name or specify bindings? I’m not in front of c3.

Then a mirror trigger on the opposite route from c3 to xtouch.

That would work for liveprompter 2 way sync as well.

Is that possible?

I’ll have to have a think about it. My brain’s kinda fried after these last few weeks of insanity. Leave it with me (or ping me again if you haven’t heard from me in the next week or so).


Thanks Brad I’ve just tried this again - been a while since I looked at it, and I may have found a way around the problem - I’ll report back after more testing. Buttons have been the main issue, rather than encoders.

Just to update this - I deleted and completely recreated my bindings to the X touch mini and have had no more issues since December with race conditions and no need to put in delays for the midi feedback.

Thinking about it again now, it could well have been user error on my part. I was mapping the MIDI values from the X Touch mini from 0 to 127 to a gain slider with the range -12dB to +6dB. I probably forgot to similarly adjust the mapping for the feedback binding, so they were always fighting. If that was the case, then apologies for the noise on this thread!

The X Touch mini has been a great controller for me to drive C3.

1 Like