How to send a bcl file to BCR2000 from command line or via midiOutLongMsg?

4 posts / 0 new
Last post
Pistor
Pistor's picture
How to send a bcl file to BCR2000 from command line or via midiOutLongMsg?

I'm using a script to generate my bcl files (I'm experimenting with different setups, slowly coming closer to my perfect BCR layout), and I'm looking for a way to speed up the workflow of uploading the bcl file to my BCR.

How to send a bcl file to BCR2000 from the command line using BC Manager?

Is the content of the bcl file just embedded in a sysex message for sending? What is the exact format that this sysex message must have?

I'm asking because my program can already send sysex messages (using midiOutLongMsg) and I'd like to extend it to not just generate the bcl file but also send it to the BCR2000 directly.

Thanks :)

Royce
Royce's picture

Hi

It is faily easy to script. Each text line in the BCL text file is wrapped in a sysex message with an added header that includes a counter.

In Mark's "BC MIDI Implimentation.pdf" check out "6 MIDI System Exclusive message" for the header details and "7 BCL Messages" for how to embed the text line. Emply lines are OK to send.

All the best

Royce

Pistor
Pistor's picture

@Royce

Thanks! So it seems that for a BCL Script of N lines, I just have to send N sysex msgs (one for each line), nothing has to be sent before or after that, right?

I can just open the port, send these N sysex msgs and close it again?

Royce
Royce's picture

That will fill the edit buffer.
You can use an extra sysex message to write to memory.

Here is a bcl program for a BCR2000 one button and one encoder to give you an idea.
the .init initializes the preset
The extra line between the button and the encoder is sent as a sysex message just like the other lines.

$rev R1
$preset
.name 'Example'
.snapshot off
.request off
.egroups 4
.fkeys on
.lock off
.init
$button 8
.easypar CC 1 65 127 0 toggleon
.showvalue on
.default 127

$encoder 1
.easypar CC 1 80 0 127 absolute
.showvalue on
.mode 1dot
.resolution 96 96 96 96
.default 1
$end

F0 00 20 32 7F 7F 20 00 00 24 72 65 76 20 52 31 F7 ; counter is 00 00 then text then F7
F0 00 20 32 7F 7F 20 00 00 $rev R1 F7
F0 00 20 32 7F 7F 20 00 01 24 70 72 65 73 65 74 F7 ; counter is 00 01 then text then F7
F0 00 20 32 7F 7F 20 00 01 $preset F7
F0 00 20 32 7F 7F 20 00 02 20 20 2E 6E 61 6D 65 20 27 45 78 61 6D 70 6C 65 27 F7
F0 00 20 32 7F 7F 20 00 02 .name 'Example' F7 ; note the 20 20 two spaces - white space is ignored by the BCR2000
F0 00 20 32 7F 7F 20 00 03 .snapshot off F7
F0 00 20 32 7F 7F 20 00 04 .request off F7
F0 00 20 32 7F 7F 20 00 05 .egroups 4 F7
F0 00 20 32 7F 7F 20 00 06 .fkeys on F7
F0 00 20 32 7F 7F 20 00 07 .lock off F7
F0 00 20 32 7F 7F 20 00 08 .init F7 ; clears the previous settings for the buttons and encoders
F0 00 20 32 7F 7F 20 00 09 $button 8 F7
F0 00 20 32 7F 7F 20 00 0A .easypar CC 1 65 127 0 toggleon F7
etc

When you send each line the BCR will echo back to show you anything it doesn't understand.
I hope this gives you the general idea.
All the best
Royce