Behringer BCR200 with XR12 (X-AIR) OSC via Sysex

7 posts / 0 new
Last post
bamshanks
bamshanks's picture
Behringer BCR200 with XR12 (X-AIR) OSC via Sysex

Hi There

Ive got my bcr2000 programmed via bc manager, to control effects parameters on my behringer xr12. The problem I’m having is that the encoders don’t adjust the parameters all the way from 0-100. Some go about 20% round, some about 60%.

The documentation for several of the parameters say the values go from 0.0 to 1.0 so maybe that’s the problem?

I’ve been stuck on this one for a while now. Have tried different ratios and min max values but no change and I’m not sure if it needs msb/lsb settings.

Any ideas? 
Thanks

Sam

Examples:

$encoder 1
  .showvalue on
  .mode 1dot
  .resolution 10
  .default 54
  .minmax 0 127
  .tx $F0 $00 $20 $32 $32 $2f $66 $78 $2f $31 $2f $70 $61 $72 $2f $30 $31 $20 val $2e $30 $20 $4f $4e $20 $50 $4f $53 $54  $F7 ; 01 /fx/1/par/01
$encoder 2
  .showvalue on
  .mode 1dot
  .resolution 96
  .default 54
  .minmax 48 58
  .tx $F0 $00 $20 $32 $32 $2f $66 $78 $2f $31 $2f $70 $61 $72 $2f $30 $32 $20 val $2e $30 $20 $4f $4e $20 $50 $4f $53 $54  $F7 ; 02 /fx/1/par/02

 

bamshanks
bamshanks's picture

I’ve now tried every combination of msb and lsb from the midi implementation guide with no luck.

one thing that may or may not be relevant. For the settings that get the most movement of the dials it actually doesn’t do anything for the first half of the turn. It’s not until it gets to 51 that it actually engages the dial on the mixer and moves it.

bamshanks
bamshanks's picture

For the specific fx I'm trying to control initially they are using linear float. Getting that working would be enough to make it worthwhile. But would be great to be able to get other types as well. For reference:

Speed logf [0.05...20] 1
Depth linf [0...100] 2
Resonance linf [0...100] 3
Base logf [20...15000] 4
Mode enum [LP, HP, BP, NO] 5
Mix linf [0...100] 6
Wave enum [TRI, SIN, SAW, SAW‐,
RMP, SQU. RND]

7
Phase linf [0...180] 8
Env. Modulation linf [‐100...+100] 9
Attack logf [10...250] 10
Release logf [10...500] 11
Drive linf [0...100] 12
4 Pole enum [2POL, 4POL] 13
Side Chain enum [OFF, ON] 14

bamshanks
bamshanks's picture

For now I've popped a raspberry pi in the middle which is converting midi to osc. Works great but if anyone has any idea how to convert the integers to floats I'd still be up to try.

Cheers :)

Mark van den Berg
Mark van den Berg's picture

For now I've popped a raspberry pi in the middle which is converting midi to osc. Works great but if anyone has any idea how to convert the integers to floats I'd still be up to try.

I can't think of a way either to convert the BCR2000's integer values to string representations of floats.
The BCR's data specifiers (described in section 14.6.1 of BC MIDI Implementation.pdf) allow splitting an encoder value into certain of its parts. This allows the construction of a BCL string in the form "a.b", where a and b represent portions of the encoder's value (e.g. via "val4.7 val0.3"). But all these portions have moduli of powers of 2; for instance val 0.3, val4.7 and val8.11 rotate from "0" to "15". So the resulting strings a and b will never just go from "0" to "9", which would of course be needed to create a consistent range of floats.

So yes, an intermediate like a Raspberry Pi may indeed be the best (or even only) solution.

bamshanks
bamshanks's picture

Thanks Mark.

The Pi in the middle running midi monster is working great. Only thing that isn't perfect is that the mute buttons don't always fire. I'm going to play round with settings in BC Manager and see if anything helps with that.

bamshanks
bamshanks's picture

Tracked down the mutes not firing to the hardly documented Dead Time and update interval settings. Is 99% perfect now. If I push them all really fast I can make it drop one occasionally, but it should be good enough now. Thanks for your response and the great product! Couldn't have got it all going without the editor.