'Recording' exact content of SysEx messages sent by BC Manager

6 posts / 0 new
Last post
BvOBart's picture
'Recording' exact content of SysEx messages sent by BC Manager

Hallo Mark,

I'm a student and software developer currently working for a company (in the Netherlands :) ) that has asked me to create some software, so they can use a BCF2000 to adjust different colour settings on some professional cameras. So far, I've been doing so using the factory default preset, which works, but not really that well. Using your application BC Manager, I was able to make a custom preset (the only change being that the push encoders are now in relative (2's complement) mode), which works a lot better. Thanks! But the problem is that the end-users of the program have to set up a load of equipment and don't want to have to go through the hassle of using BC Manager just to quickly flash a premade preset to the BCF2000.

So I wanted to implement a function in my application, allowing for one-click flashing of my custom preset to their BCF2000. I'm using Java and its included library for connecting to MIDI devices also allows me to send SysEx messages. I can populate the message with an array of bytes (including or excluding the System Exclusive status byte 'F0'), but even after reading through your BC MIDI Implementation I don't know what to put into this array, apart from [F0, 00, 20, 32, 00, 14, 20, ... , F7] (all hex).

Is there a way for me to capture the raw SysEx messages sent by BC Manager so I can put those raw bytes in a text file or so? That way I would be able to really simply construct the SysEx messages from this file and send those from my application.

Thanks in advance!

- Bart

w4chl's picture

For single BCF2000 or BCR2000 setup for specific mappings the BC Manager is hard to beat! Especially to setup BCF/BCR2000 to direct attach as a MIDI controller where no host application is running as an interface and available for other apps.  
If you want to do as we did for our church application and be able to map different MIDI controllers so that setup is identical for the system user and the controls are mapped repeatably without knowing how to reflash a BCF/BCR2000, then you might try either:

  1) BOME MIDI Translator http://www.bome.com/products/miditranslator
The BOME MIDI Translator Pro works well for us allowing complete, repeatable setup and mapping of a MIDI controller to different soundboards without customizing the MIDI Controller itself. You can try the MIDI Translator Classic for free or a timelimited version of the MIDI Translator Pro to see if it will work for you. You can also create controls for any app under Windows or OS X and have the specific presets load during system boot or initialization. 

 2) MAX, commercial variant of Pure Data (pd) , https://cycling74.com/products/max
which was a bit pricey for our needs.  We had some success with the free pd distribution from http://puredata.info/downloads however setup always required some understanding of pd. 

Let the list know how you fared on this application! Best, Mark S @ 7tronics

BvOBart's picture

Seeing as the application will probably be commercialised in the future, these are not an option. Thanks for your reply anyways!

w4chl's picture

PS - Bome MIDI Translator (MT) and MAX (or pd) require a host running Windows or OSX. If you are using a host anyway, say to run an application such as X32-edit for the Behringer X32 then using either Bome MT or MAX or pd makes sense. If you are NOT using them such as direct attach of a controller to an X-AIR XR12 or XR16 digital control, then customizing the attached controller makes sense. So if a BCF2000 or BCR2000, then use BC Manager.

Mark van den Berg
Mark van den Berg's picture

Hi Bart,

The following procedure should work:

In BC Manager:

1. Optional but recommended (because it significantly reduces the amount of bytes sent to the end user's BCF2000):
From the main window's Options pull-down menu, run "BCL output".
In the dialog box, uncheck all 7 items under "Save to file".
(You probably want to leave "Device to save to syx file" at "Generic".)
Obviously, press OK when you're done.

2. In the preset list window, select (i.e. highlight) your preset.
(You have to decide whether the "temporary" preset (0) or a memory preset (1-32) is most appropriate.
For a memory preset, BC Manager will append a $store command to the BCL message sequence, so obviously this will overwrite that particular preset on the end user's BCF2000.
So if feasible, it's probably best to go for preset 0, and maybe explain to your end users how they can save that preset to a memory location of their own choice on their BCF2000 itself, if they so desire.)

3. From the File pull-down menu, run "Export selected preset(s)".
In the dialog box, set "Save as type" to "MIDI SysEx file (*.syx)".

4. Optional but recommended: if you've modified the "BCL output" settings under (1) above, set them back for normal use.

The generated syx file consists of nothing else but a straightforward sequence of SysEx messages, so F0 ... F7 F0 ... F7 etc.
So your Java application can simply open this file, put the messages in an array (simply scanning for F7 should work), and send these messages to the end user's BCF2000.
You may have to build in a delay of something like 60 msec between each message (like MIDI-OX does); I doubt Java does that for you. (Also see question 35 in the FAQ section of the BC Manager manual.)

Hope this helps,

BvOBart's picture

Hi Mark,

Thanks a lot! I was able to generate the .syx file as you said and with a bit of extra programming, I was also able to send it to the BCF2000 successfully.

And indeed, Java doesn't build in a delay, it just sends the messages as quickly as possible. For now I've added in the delay, maybe I'll change that to reply based sending later, like BC Manager does, seeing as it is quite a lot faster than what my application currently does.

- Bart