I own a Behringer BCR2000 and the device is awesome but the software for it is really horrible. It fails everytime I try to copy a Preset from my computer to the device which is pretty inconvenient to say the least.
I want to develop new simple software for the device (Java or JRuby, since the software was written in Java) but I don’t know how I would go about doing this.
Would a Java decompiler work?
The first thing to do would be to fire up MIDI-OX and put it in the middle of the software that came with it, and the device. This is often done through loopback drivers such as MIDI Yoke (same site as MIDI-OX).
I wouldn’t waste any time at all with the existing software. There will be nothing in there you can’t quickly figure out on your own.
Remember that this device can be reprogrammed. It is very flexible. I am assuming you are interested in writing software that sets the presets? Likely you will find the data for this in a SYSEX dump. Again, fire up MIDI-OX and sniff it out.
EDIT: It looks like all of the presets are available already in raw SYSEX data files at http://www.behringer.com/EN/Products/BCR2000.aspx. You can download these and look at them in any hex editor, but MIDI-OX does a decent job of identifying the start and end points of the messages. It looks pretty straightforward, but without the hardware in front of me, it would be difficult to provide an explanation as to which bytes do what.
EDIT #2: Ok, I have figured out some of this. Each message begins like a standard SYSEX message with the byte
f0and ends with the bytef7. The second byte in the message is the manufacturer ID, which Behringer is just using00here. Then we get into the message payload, which is all I will show here:And it continues like that. Note that the hex above is actual byte values, but the text is actually ASCII. An odd way of showing it, I know, but I am just trying to illustrate that you have a header. I don’t know what the
20 32 7f 7f 20 00means, but I suspect it means “Hey, update the preset”. The next byte seems to be a sequence identifier. The following byte seems to be some command or something. The actual work seems to be in all ASCII from there.I hope this gets you started. Again, you can find all of this in the preset files. For reference, here is the beginning of file I was looking at: