Yet Another BCF2000 Script

Behringer_BCF2000.midiremote (60.9 KB)

I know there are other BCF2000 scripts out there, but for one reason or another I decided to write a new one from scratch. It uses the LC mode, and all the controls are mapped. Everything works, including the led pan rings (which are not at all obvious to implement!).

The mappings are set up for basic mixing/recording without anything to workflow specific, but the shift keys mean the 16 mute/solo buttons can each have two additional user mappings which I’ve not assigned. I’d like to have done more with the LED display, but couldn’t think of any real use for it… Similarly the footswitch and pedal mappings could be more creative.

Instruction file is included… Feedback welcome.


Thanks for the share. Where is the instruction file that you mentioned?

1 Like

They’re bundled in the midi remote file. IF you load it up from the midi remote manager it’ll give you the option to view the instructions.

I’ve attached a second copy here:

BCF2000.pdf (68.7 KB)


Behringer_BCF2000x2.midiremote (338.7 KB)

I got my hands on a SECOND BCF2000! Unfortunately creating two instances of a single script doesn’t work. I think its due to the way midiOutput is handled in the API (there may be a better way?).

So here’s a script to make TWO BCF2000’s operate as single control surface for 16 channels of fader awesomeness…

Set up is a bit more fiddley as you’ll probably need to create the surface manually, and tell. it the names of your midi ports, but once set up it all should be easy.

There are two pages of mappings where the two banks of transport controls are swapped, as I think it’s really going to depend on your physical preferences.

As always mapping could be improved, but feedback is welcome and I’m happy to make changes.

1 Like

Hi! Can you explain how you did a lcd feedback in this script? Can’t find any information about these functions for BCF2000.

I’d LOVE to know what you mean by “create the surface manually and tell it the name of our midi ports”. Do you mean that we basically have to make one from scratch or something?

This is all new to me, but I did just get 2 BCF 2000, so this could be a HUGE help for me.

1 Like

@SynthKeyWizard You should be able to find the js script in the midi remotes local install folder. Something like Documents/Cubase/Midi Remote/Driver Scripts/Local/Behringer/BCF2000.

@Sekrit_Studios Scripts have midi port names baked in to them, so when the names match cubase makes the surface just magically appear and start working. However due to system differences names of ports can change between machines. To get around this you need to go to the control surface area in cubase and hit the + to add a surface. You then just select the device type and the port names, and you’re done.

1 Like

Thank you. I found it and made my own script based on yours (added buttons, change layout, etc)

But still can`t understand all the parameters regarding functions mapping.
Midi remote api is hard to understand. There only functions names but no description how to use it.

For example, I want to bind buttons b1-b4 to a pages, but can not find how to do this. Also can not find how to make these buttons leds lit when appropriate page activated.

Thank you SO very much!!! I’d LOVE to know if you are on other forums for MIDI based tools, because I am definitely looking for patches and presets for other pieces of software (especially things like Blue Cat Audio’s “Remote Control” & “Patchwork”).

Hello! Can you tell how did you found a midi controller numbers to display “Cb” on BCF2000 display in LC mode?

I’m in process of creating my own custom script for BCF2000, but using MCU mode. I want to display a simplified page names on BCF2000 display, but can’t find a correct CC hex numbers to display custom letters on page avtivation.

I honestly can’t remember where I found it - I’ve got the docs somewhere but can’t find them. The relevant code is:
midiOutput.sendMidi(activeDevice, [0xB0,0x4B,0x03]);
midiOutput.sendMidi(activeDevice, [0xB0,0x4A,0x02]);

The last digit is just the alphabetical digit, so 1 for a, 2 for b etc.
To turn an ascii code into the relevant digit, try something like (val - 48)&0x1f.

1 Like

Thak you!

I got this, but happens something strange: it works when BCF is in LC mode, but nothing happens when BCF in MCU mode.
Looks like there is a difference in 7-segment display controllers between MCU and LC modes (not only a panel buttons note numbers) .

Or maybe I’m doing something wrong…

Woud be great if you can find a documentation regarding this function.

PS. I found a Logic Control midi implementation. Will look into it…

I worked (in part) from the docs for Logic Control (page 117):

If the MCU and/or the MCU emulation is different then I don’t really know.

You could put Cubase or other app that drives the LED’s into MCU mode and snoop on the output to see what’s being sent?

Yes, I already found this document, but thank You!

Need some help with code.

I made indication on page activation, but cant find why it does not work. It was work one time after Cubase restarting, but then stopped work again.

var Mixer = makePageMixer()
var QC = makePageQC()
var AI = makePageAI()
var EQ = makePageEQ()
var Sends = makePageSndFlt()

//Mixer Page

Mixer.makeActionBinding(btn_Learn.mSurfaceValue, QC.mAction.mActivate)
Mixer.makeActionBinding(btn_Edit.mSurfaceValue, EQ.mAction.mActivate)

Mixer.mOnActivate = function (activeDevice) {
midiOutput.sendMidi(activeDevice, [0x90,44,127]);
Mixer.mOnDeactivate = function (activeDevice) {
midiOutput.sendMidi(activeDevice, [0x90,44,0]);

This is awesome - I dug my old BCF2000 from the attic this afternoon and your script gives me pretty much exactly what I wanted. Great Work !