First off thanks for the great tools.
While I do have a question, this post is mostly because I couldn't find this information without reading all of the XR18 Manual (46 pages), the unofficial X32-OSC remote protocol by Patrick-Gilles Maillot (177 pages), the BC Manager manual (145 pages), and the BC MIDI Implementation docs (149 pages), plus some on line text to ascii and hex calculators and an XR18 OSC chart that shows some of the differences from the X32. I hope this helps others get the most our out their toys.
I've been looking for a way to more reliably control my Behringer XR18 digital mixer in live settings. When indoors with solid networking an iPad works well, though recenly that's not where I've been. As part of Covid my band, where I play sax and run the sound system, has been playing outdoors in a park with long mic cables and batteries to enable social distancing. This works great, however the wifi base staion in the XR18 mixer is so pathetic that the iPad frequently looses sync so that by the time I manage to boost the solo it is over, especially if I have to unlock the iPad first. I haven't figured out how to get the iPad and mixer talking over ethernet with out an external router and setup takes long enough as it is, so enter the BCF2000 connected via MIDI cables (I had seen demos of the X-Touch connecting to the XR18 over MIDI and this looked less expensive).
Long story short, the XR18 supports a very limited set of MIDI and the BCF2000 doesn't do XCF (or whatever the new magic protocol is, perhaps just bidirectional OSC). The XR18 MIDI table is essentially just Channel Faders, Channel Mutes, Channel Pans, and Snapshot restore. While I would like full control, I needed send levels so that I can fix the "more me in the mix" problem. Luckily the XR18 supports most of its full OSC command set over MIDI vi Sysex commands. I've managed to get a .bcf that meets my needs and will post the python script that generates it as soon as I can figure out how to attach a file.
So on to the questions:
Dose anyone have a good idea how to better control the send levels? I can embed the val in the .tx based OSC command, however the OSC wants the level as an ascii string value between -90.0 and 10.0 while the val output is an integer from 0 to something large. I've configured the encoder to send 0 to 9 as a post fader knob with a press setting to -20, basically giving me "more me" and "mute" but not full control. The string in question is:
.tx $F0 $00 $20 $32 $32 $2f $63 $68 $2f $30 $33 $2f $6d $69 $78 $2f $30 $31 $20 val $2e $30 $20 $4f $4e $20 $50 $4f $53 $54 $F7
.tx [sysex] [behringer] /ch/03/mix/01 val.0 ON POST $encoder 2 $F7
if anyone has any ideas (either on better ascii encoding or how to get the XR to accept hex) I'd like to hear them.
I solved the "how to get the initial fader values?" problem by leveraging the fact that the XR18 has 64 internal snapshots. I've set a user button send the OSC command to store to a previously unused snapshot and another to load from it. This effectively gives me a "refresh all fasters" command in a two button sequence so that I can initialize the faders if I changed settings while the BCF was not connected, or if I need two presets to handle either more than 4 sends or more than 8 channels.
the relevant lines are
$button 51 ; Store Temp
.tx $F0 $00 $20 $32 $32 $2f $2d $73 $6e $61 $70 $2f $73 $61 $76 $65 $20 $31 $32 $F7 ; store current to temp snapshot "/-snap/save 12" note 1 based numbering
$button 52 ; Load Temp
.easypar PC 1 off off 11 ; load temp snapshot which refreshed faders, note zero based numbering