I created a script for Behringer BCR2000.
To use it first you have to select on your BCR2000 “rel1” mode for all knobs (edit-turn knob- turn mode knob) and “toggle off” for each button (including encoder buttons) .
I implemented only 2 set of top encoders, for quick controls and send level.
Bottom side is used for eq and some other basic track controls.
v 1.0 first release
v 1.1 navigate tracks via side button
v 1.2Focused Quick Control lock added
BCR2000_midi_remote Docs and .bcr preset.zip (204.5 KB)
Behringer_BCR2000.midiremote (175.9 KB)
For the BCR2000 it would be even better to record a sysex-dump of the preset. In the API you can then send this dump file via the “midiOutput.sendSysexFile(‘filename’, delayMSec)” function. The sysex-file must be placed inside the script’s folder next to the main script file. As far as I remember, BCR2000 needs at least 3 or even 5 ms delay because its microcontroller throws an error.
I created a dump of BCR preset to be sent via script.
Seems that this method requires a third parameter:
SendSysexFile (activeDevice : ActiveDevice, fileName : string, delayMilliseconds : number)
What shoud I put instead of ActiveDevice?
midiOutput.sendSysexFile(ActiveDevice, ‘preset.bcr’, 5)
sorry, of cause. The first parameter “activeDevice” is mandatory on all “low level” functions. Thank you for correcting!
I have a question, is the midi remote bi-directional, that is, if you operate say a quick control in cubase does it reflect on the BCR2000 encoder?
- pre-filter eq controls added.
- Added push button for Focused Quick Control: if focused parameter is a button now you can push the encoder to switch.
In the attached pdf also a scheme of cc assignement.
Uploading: BCR2000_midi_remote guide and .bcr preset.zip…
Hi @Giampaolo_Gesuale, have you seen the API feature “Control Layer Zone”? It for handling what on the BCR2000 is called “encoder groups”. Here’s an example, I hope the idea is understandable:
var encoderGroups = surface.makeControlLayerZone('Encoder Groups')
var encoderGroup1 = encoderGroups.makeControlLayer('Group 1')
var encoderGroup2 = encoderGroups.makeControlLayer('Group 2')
var knob0101 = surface.makeKnob(0, 0, 1, 1)
var knob0102 = surface.makeKnob(0, 0, 1, 1)
var knob0201 = surface.makeKnob(1, 0, 1, 1)
var knob0202 = surface.makeKnob(1, 0, 1, 1)
The variable naming knob0101 is to indicate that it’s the first knob of the first encoder group.
@Jochen_Trappe Layer Zones… awesome!!!
Thanks for your hint
Look at this!
Layers switch automatically when you turn a knob related to his group.
Behringer_BCR2000.midiremote (2.5 KB)
- Cue level control
- Control Room Main channel level control
- Monitor enable control
- Read and write automation control
Behringer_BCR2000.midiremote (2.8 KB)
this is marvelous work! I have a BCF-2000 which I am going to try and programme when I can work out how this scripting works. I might borrow some of your code if that’s ok to get me started.
Happy to share any info needed!
I have one too, but not a clue how to do the API scripting thing. I think I 'll stick with the surface option for now.
Nice work. Sorry for the off-topic comment
I made this label to be printed (and cut with a lot of patience )
Man! I don’t know what to say!
Will happily try your BCR MID Remote.
Great job, really. Thanks a lot for sharing.
Thank you funkster1! Let me know if you have any suggestions to make it even better!
how come that your v 1.4+1.5 are only 2.5/2.8kib in size while the first version weigh in at around 180kb?
I’m having a little problem with the volume control:
When operating from the BCR no problem, lower row knobs 7+8 work independantly (knob 7 not assigned).
When moving the volume slider in Cubase, both knobs work together in sync?
Just a simple GIF animation to show you, sorry for the bad quality