I’ve purchased a BCF2000 MIDI control surface - it includes motorized faders, and for live performance I’d like to be able to switch between TOEs and have the faders link up to the initialized parameters I have mapped in each TOE.
Is this possible? If so - any pointers appreciated.
The best way to do this is going to be using some sort of python script DAT that sends MIDI messages out via a MIDI Out CHOP whenever you switch between the TOXes. If you try to link CHOP channels that are controlled by the faders directly to the MIDI Out CHOP, you will end up with a feedback loop where the fader movement may cause slight changes in the value incoming which will get sent back out and cause the fader to move again ad infinitum. Separating the incoming MIDI data from the outgoing MIDI data is crucial in this sense.
Which DAT you use specifically is up to you, but if you use a CHOP or DAT Execute, you can have it watch something that indicates which TOX is currently loaded and then grab the values from a standardized Null CHOP in each TOX to send a single MIDI packet to the controller to set it’s faders.
I don’t have a BCF2000, but I do have a Behringer X-Touch, and the MIDI messages you need to send on that one to make the faders move are basically the same ones it sends to you when you move the faders, hence the need to seperate the input MIDI data from the output MIDI data.
Thank you for the reply. I’m looking into using either an Execute or DAT Execute to simply send a MIDI packet to initialize faders to preset values on either a TOX or TOE load. I’ve got the general idea - but am having a hard time finding documentation/resources on how to write such a script.
Have a look at the help file for the MIDI Out CHOP python class:
This has functions for sending MIDI messages to your control surface. You’d of course have to configure the BCF as a device in the MIDI Device Mapper first, and then reference that device in the CHOP.
To use the CHOP, create one in your network - let’s call it ‘midiout1’
In a python script at the same level in your network you’d reference this as op(‘midiout1’)
If you wanted to send a controller message you can use the sendControl() function.
One potentially confusing thing: the MIDI Out CHOP defaults to a normalized controller range of 0-1, which means it expects values in that range for the ‘value’ argument in sendControl(). This is convenient as a way to abstract the inputs (0-1) from the outputs (either 7-bit or 14-bit) that your BCF will actually receive.
Since the BCF supports 14-bit values you probably want to use that level of precision. You’d have to configure the BCF’s faders to do that, and then select 14-bit in the “Controller format” parameter of the MIDI Out CHOP.
did you have any success in controlling the motorized faders of the BCF2000? I am trying to get the MIDIout CHOP to receive a value from a Constant CHOP, but nothing moves whatsoever. Could you let me know if and how you achieved this?