General.rtf

(40 KB) Pobierz
BC -Controls

BCR/BCF - Sysex

 

F0 00 20 32            BCx-2000 Sysex header (numbers in Hex)

F0 00 20 32  00  -   Device ID (00 to 0F)

F0 00 20 32  7F  -   All Devices

F0 00 20 32  00 15 -   BCR-2000 Sysex header

F0 00 20 32  00 14 -   BCF-2000 Sysex header (numbers in Hex)

F0 00 20 32  00 7F -   Both BCF & BCR Sysex header (numbers in Hex)

If you use 7F instead of 15/14 the unit will answer with its type in this ident byte. So a software request F0 00 20 32 00 7F 01 F7 can give you what kind a unit you are dealing with.

Response from a BCR

F0 00 20 32 00 15 02 42 43 52 32 30 30 30 20 31 2E 31 30 F7      BCR2000 1.10.           

You could have used the BCR2000 text but the 15 byte is in any answer from a BCR.

 

F0 00 20 32  7F 7F -   Message to any BCR or BCF

 

Requests (you can use 7F instead of 15)

F0 00 20 32 7F 7F 22 00 F7              Select specific Preset on the BCR

.

F0 00 20 32 7F 7F 22 1F F7              00 to 1F

 

F0 00 20 32 7F 7F 40 00 F7              Get specific Preset

to

F0 00 20 32 7F 7F 40 1F F7              00 to 1F

 

F0 00 20 32 7F 7F 42 00 F7              Get specific Preset name

to

F0 00 20 32 7F 7F 42 1F F7              00 to 1F

 

(40 for patch - 42 for Name)

(00 to 1F for specific preset  - 7E for All - 7F for Current)

 

F0 00 20 32 7F 7F 40 7F F7              Current Preset request

F0 00 20 32 7F 7F 40 7E F7              All Presets request

F0 00 20 32 7F 7F 42 7F F7              Current Preset Name request

F0 00 20 32 7F 7F 42 7E F7              All Preset Names request

F0 00 20 32 7F 7F 01 F7              Software version request

F0 00 20 32 7F 7F 41 F7              Request Global data

F0 00 20 32 7F 7F 43 F7              Send out current values of the encoders/faders/buttons

 

 

Patch Names

Each Patch Name is a single Sysex transmission.

The name is wrapped in the sysex header plus device id (00 to 0F or 7F for all) device type (15 for the BCR 14 for BCF or 7F for any)   and 21 (hex)

F0 00 20 32 7F 7F 21

followed by a 2 byte patch number eg 00 00 then the name in ascii characters,23 characters wide

e.g. 50 61 74 63 68 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 32 33

“Patch                23”           

Patch Script Lines

Each Patch is comprised of a script language. Each line of the script is sent in ASCII  as single Sysex transmission.

Each line of the script is wrapped in the sysex header

Then 00 to 0F or 7F for any device id

Then 15 for the BCR 14 for BCF or 7f for any unit

Then 20 (hex) for script (patch) line

F0 00 20 32 7F 7F 20

followed by a 2 byte line counter starting at 00 00 then the line of script in ascii

e.g. 24 72 65 76 20 52 31 

(which is “.$rev R1”)

And terminated by the normal sysex F7

F0 00 20 32 7F 7F 20 00 00 24 72 65 76 20 52 31  F7 which is “.$rev R1”the first line of the BCR dump

The editor wraps the script correctly, so all we need to talk about here is the content of the script which can be written with the inbuilt editor or one of your own – e.g Notepad or PSPad

The Script

The rest of the text here is a rip-off of the German web site Synthesizer Wiki

As I don't speak German here is the information as I understand it.

Feel free to write to me at rpcfender@yahoo.com.au to correct me or add something to the info.

The BCR2000 and the BCF2000 (I only have experience with the BCR2000) use a script language to program them.

The numbers can be written in decimal or in hex  (start a hex number with “$”)

In this text the script commands will be in bold  for easy reading

The BCR seems to ignore spaces and it includes 2 spaces to indent when it sends out its own sysex

$ starts a section eg $global or $preset

. (fullstop) starts a parameter eg .mode or .minmax

Here is an example.

$rev R1

$preset

  .name “New Example            “

  .snapshot off

  .request off

  .egroups 4

  .fkeys on

  .lock off

  .init

$button 3

  .mode down

  .minmax 0 0

  .default 0

  .tx $F0 $41 $10 $00 $6B $12 $10 $00 $04 $00 val cks-1 $05 $F7

  .showvalue on

$encoder 56

  .minmax 0 127

  .default 1

  .tx $F0 $41 $10 $00 $6B $12 $10 $00 $27 $07 val cks-1 6 $F7

  .resolution 96 96 96 96

  .showvalue on

  .mode bar

$end

 

Beginning and End

$rev R1  for BRC ($rev F1 for BFC)

is always the first line

$end

always finishes the script off

The section commands are

$global

$recall <arg>

$store <arg>

$preset

$encoder <arg>

$fader <arg>

$button <arg>

You can change just 1 or or any number of controls

$rev R1

$encoder 56

  .minmax 0 127

  .default 1

  .tx $F0 $41 $10 $00 $6B $12 $10 $00 $27 $07 val cks-1 6 $F7

  .resolution 96 96 96 96

  .showvalue on

  .mode bar

$end

 

As you didn't use the .init in the $preset area, just encoder 56 will be changed.

 

Note that all the changes are in the edit buffer of the BCR2000. That is, you will need to save them, either manually or by using the editor that sends the $store command

$rev R1 

$store 23

$end

This will store the edit buffer into preset 23

 

 

NOTE: if you don’t set the parameter it will return to the default

 

$encoder 56

  .minmax 0 127

  .default 1

  .tx $F0 $41 $10 $00 $6B $12 $10 $00 $27 $07 val cks-1 6 $F7

  .showvalue on

  .mode bar

$encoder 52 etc

 

No matter what the   .resolution was set to it returns to   .resolution 96 96 96 96

 

 

Curious behaviour

You can use both the .tx and .easypar and the unit will send out two MIDI messages for each change.

(If you try to get the preset back it only gives you the .easypar part)

If you have .minmax and use .easypar the max and min values in .minmax will take precedence.

 

If you have an incrementing button

  .easypar cc 1 1 10 14 increment 1

and  have a default value less than the start

  .default 5

It will give values of

5 6 7 8 9 10 11 12 13 14 10 11 12 13 14 10 etc

Control Words

From http://b-control.mik-music.org/bcr2000.txt

(no mention of .tx though)

 

$rev R1                                          # start transmission for BCR

Or $rev F1                            # start transmission for BCF

$end                                          # end transmission

 

$global...

Zgłoś jeśli naruszono regulamin