开发者

Developing software for specific MIDI device

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 h开发者_开发知识库ow 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 f0 and ends with the byte f7. The second byte in the message is the manufacturer ID, which Behringer is just using 00 here. Then we get into the message payload, which is all I will show here:

20 32 7f 7f 20 00 00 24 rev R1
20 32 7f 7f 20 00 01 24 preset
20 32 7f 7f 20 00 02 20 .name 'NI Pro 53                '
20 32 7f 7f 20 00 03 20 .snapshot off

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 00 means, 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:

000000  F0 00 20 32 7F 7F 20 00 00 24 72 65 76 20 52 31  .. 2.. ..$rev R1
000010  F7 F0 00 20 32 7F 7F 20 00 01 24 70 72 65 73 65  ... 2.. ..$prese
000020  74 F7 F0 00 20 32 7F 7F 20 00 02 20 20 2E 6E 61  t... 2.. ..  .na
000030  6D 65 20 27 4E 49 20 50 72 6F 20 35 33 20 20 20  me 'NI Pro 53   
000040  20 20 20 20 20 20 20 20 20 20 20 20 27 F7 F0 00              '...
000050  20 32 7F 7F 20 00 03 20 20 2E 73 6E 61 70 73 68   2.. ..  .snapsh
000060  6F 74 20 6F 66 66 F7 F0 00 20 32 7F 7F 20 00 04  ot off... 2.. ..
000070  20 20 2E 72 65 71 75 65 73 74 20 6F 66 66 F7 F0    .request off..
000080  00 20 32 7F 7F 20 00 05 20 20 2E 65 67 72 6F 75  . 2.. ..  .egrou
000090  70 73 20 34 F7 F0 00 20 32 7F 7F 20 00 06 20 20  ps 4... 2.. ..  
0000A0  2E 66 6B 65 79 73 20 6F 6E F7 F0 00 20 32 7F 7F  .fkeys on... 2..
0000B0  20 00 07 20 20 2E 6C 6F 63 6B 20 6F 66 66 F7 F0   ..  .lock off..
0000C0  00 20 32 7F 7F 20 00 08 20 20 2E 69 6E 69 74 F7  . 2.. ..  .init.
0000D0  F0 00 20 32 7F 7F 20 00 09 24 65 6E 63 6F 64 65  .. 2.. ..$encode
0000E0  72 20 31 F7 F0 00 20 32 7F 7F 20 00 0A 20 20 2E  r 1... 2.. ..  .
0000F0  65 61 73 79 70 61 72 20 43 43 20 31 20 32 30 20  easypar CC 1 20 
000100  30 20 31 32 37 20 61 62 73 6F 6C 75 74 65 F7 F0  0 127 absolute..
000110  00 20 32 7F 7F 20 00 0B 20 20 2E 73 68 6F 77 76  . 2.. ..  .showv
000120  61 6C 75 65 20 6F 6E F7 F0 00 20 32 7F 7F 20 00  alue on... 2.. .
000130  0C 20 20 2E 6D 6F 64 65 20 31 32 64 6F 74 F7 F0  .  .mode 12dot..
000140  00 20 32 7F 7F 20 00 0D 24 65 6E 63 6F 64 65 72  . 2.. ..$encoder
000150  20 32 F7 F0 00 20 32 7F 7F 20 00 0E 20 20 2E 65   2... 2.. ..  .e
000160  61 73 79 70 61 72 20 43 43 20 31 20 32 31 20 30  asypar CC 1 21 0
000170  20 31 32 37 20 61 62 73 6F 6C 75 74 65 F7 F0 00   127 absolute...
000180  20 32 7F 7F 20 00 0F 20 20 2E 73 68 6F 77 76 61   2.. ..  .showva
000190  6C 75 65 20 6F 6E F7 F0 00 20 32 7F 7F 20 00 10  lue on... 2.. ..
0001A0  20 20 2E 6D 6F 64 65 20 31 32 64 6F 74 F7 F0 00    .mode 12dot...
0001B0  20 32 7F 7F 20 00 11 24 65 6E 63 6F 64 65 72 20   2.. ..$encoder 
0001C0  34 F7 F0 00 20 32 7F 7F 20 00 12 20 20 2E 65 61  4... 2.. ..  .ea
0001D0  73 79 70 61 72 20 43 43 20 31 20 34 30 20 30 20  sypar CC 1 40 0 
0001E0  31 32 37 20 61 62 73 6F 6C 75 74 65 F7 F0 00 20  127 absolute... 
0001F0  32 7F 7F 20 00 13 20 20 2E 73 68 6F 77 76 61 6C  2.. ..  .showval
000200  75 65 20 6F 6E F7 F0 00 20 32 7F 7F 20 00 14 20  ue on... 2.. .. 
000210  20 2E 6D 6F 64 65 20 31 32 64 6F 74 F7 F0 00 20   .mode 12dot... 
000220  32 7F 7F 20 00 15 24 65 6E 63 6F 64 65 72 20 35  2.. ..$encoder 5
000230  F7 F0 00 20 32 7F 7F 20 00 16 20 20 2E 65 61 73  ... 2.. ..  .eas
000240  79 70 61 72 20 43 43 20 31 20 34 33 20 30 20 31  ypar CC 1 43 0 1
000250  32 37 20 61 62 73 6F 6C 75 74 65 F7 F0 00 20 32  27 absolute... 2
000260  7F 7F 20 00 17 20 20 2E 73 68 6F 77 76 61 6C 75  .. ..  .showvalu
000270  65 20 6F 6E F7 F0 00 20 32 7F 7F 20 00 18 20 20  e on... 2.. ..  
000280  2E 6D 6F 64 65 20 31 32 64 6F 74 F7 F0 00 20 32  .mode 12dot... 2
000290  7F 7F 20 00 19 24 65 6E 63 6F 64 65 72 20 37 F7  .. ..$encoder 7.
0002A0  F0 00 20 32 7F 7F 20 00 1A 20 20 2E 65 61 73 79  .. 2.. ..  .easy
0002B0  70 61 72 20 50 43 20 31 20 6F 66 66 20 6F 66 66  par PC 1 off off
0002C0  F7 F0 00 20 32 7F 7F 20 00 1B 20 20 2E 73 68 6F  ... 2.. ..  .sho
0002D0  77 76 61 6C 75 65 20 6F 6E F7 F0 00 20 32 7F 7F  wvalue on... 2..
0002E0  20 00 1C 20 20 2E 6D 6F 64 65 20 31 32 64 6F 74   ..  .mode 12dot
0002F0  F7 F0 00 20 32 7F 7F 20 00 1D 24 65 6E 63 6F 64  ... 2.. ..$encod
000300  65 72 20 38 F7 F0 00 20 32 7F 7F 20 00 1E 20 20  er 8... 2.. ..  
000310  2E 65 61 73 79 70 61 72 20 43 43 20 31 20 37 20  .easypar CC 1 7 
000320  30 20 31 32 37 20 61 62 73 6F 6C 75 74 65 F7 F0  0 127 absolute..
000330  00 20 32 7F 7F 20 00 1F 20 20 2E 73 68 6F 77 76  . 2.. ..  .showv
000340  61 6C 75 65 20 6F 6E F7 F0 00 20 32 7F 7F 20 00  alue on... 2.. .
000350  20 20 20 2E 6D 6F 64 65 20 31 32 64 6F 74 F7 F0     .mode 12dot..
000360  00 20 32 7F 7F 20 00 21 24 65 6E 63 6F 64 65 72  . 2.. .!$encoder
000370  20 39 F7 F0 00 20 32 7F 7F 20 00 22 20 20 2E 65   9... 2.. ."  .e
000380  61 73 79 70 61 72 20 43 43 20 31 20 35 30 20 30  asypar CC 1 50 0
000390  20 31 32 37 20 61 62 73 6F 6C 75 74 65 F7 F0 00   127 absolute...
0003A0  20 32 7F 7F 20 00 23 20 20 2E 73 68 6F 77 76 61   2.. .#  .showva
0003B0  6C 75 65 20 6F 6E F7 F0 00 20 32 7F 7F 20 00 24  lue on... 2.. .$
0003C0  20 20 2E 6D 6F 64 65 20 31 32 64 6F 74 F7 F0 00    .mode 12dot...
0003D0  20 32 7F 7F 20 00 25 24 65 6E 63 6F 64 65 72 20   2.. .%$encoder 
0003E0  31 30 F7 F0 00 20 32 7F 7F 20 00 26 20 20 2E 65  10... 2.. .&  .e
0003F0  61 73 79 70 61 72 20 43 43 20 31 20 35 31 20 30  asypar CC 1 51 0
000400  20 31 32 37 20 61 62 73 6F 6C 75 74 65 F7 F0 00   127 absolute...
000410  20 32 7F 7F 20 00 27 20 20 2E 73 68 6F 77 76 61   2.. .'  .showva
000420  6C 75 65 20 6F 6E F7 F0 00 20 32 7F 7F 20 00 28  lue on... 2.. .(
000430  20 20 2E 6D 6F 64 65 20 31 32 64 6F 74 F7 F0 00    .mode 12dot...
000440  20 32 7F 7F 20 00 29 24 65 6E 63 6F 64 65 72 20   2.. .)$encoder 
000450  31 31 F7 F0 00 20 32 7F 7F 20 00 2A 20 20 2E 65  11... 2.. .*  .e
000460  61 73 79 70 61 72 20 43 43 20 31 20 35 35 20 30  asypar CC 1 55 0
000470  20 31 32 37 20 61 62 73 6F 6C 75 74 65 F7 F0 00   127 absolute...
000480  20 32 7F 7F 20 00 2B 20 20 2E 73 68 6F 77 76 61   2.. .+  .showva
000490  6C 75 65 20 6F 6E F7 F0 00 20 32 7F 7F 20 00 2C  lue on... 2.. .,
0004A0  20 20 2E 6D 6F 64 65 20 31 32 64 6F 74 F7 F0 00    .mode 12dot...
0004B0  20 32 7F 7F 20 00 2D 24 65 6E 63 6F 64 65 72 20   2.. .-$encoder 
0004C0  31 34 F7 F0 00 20 32 7F 7F 20 00 2E 20 20 2E 65  14... 2.. ..  .e
0004D0  61 73 79 70 61 72 20 43 43 20 31 20 34 35 20 30  asypar CC 1 45 0
0004E0  20 31 32 37 20 61 62 73 6F 6C 75 74 65 F7 F0 00   127 absolute...
0004F0  20 32 7F 7F 20 00 2F 20 20 2E 73 68 6F 77 76 61   2.. ./  .showva
000500  6C 75 65 20 6F 6E F7 F0 00 20 32 7F 7F 20 00 30  lue on... 2.. .0
000510  20 20 2E 6D 6F 64 65 20 31 32 64 6F 74 F7 F0 00    .mode 12dot...
000520  20 32 7F 7F 20 00 31 24 65 6E 63 6F 64 65 72 20   2.. .1$encoder 
000530  31 35 F7 F0 00 20 32 7F 7F 20 00 32 20 20 2E 65  15... 2.. .2  .e
000540  61 73 79 70 61 72 20 43 43 20 31 20 34 36 20 30  asypar CC 1 46 0
000550  20 31 32 37 20 61 62 73 6F 6C 75 74 65 F7 F0 00   127 absolute...
000560  20 32 7F 7F 20 00 33 20 20 2E 73 68 6F 77 76 61   2.. .3  .showva
000570  6C 75 65 20 6F 6E F7 F0 00 20 32 7F 7F 20 00 34  lue on... 2.. .4
000580  20 20 2E 6D 6F 64 65 20 31 32 64 6F 74 F7 F0 00    .mode 12dot...
000590  20 32 7F 7F 20 00 35 24 65 6E 63 6F 64 65 72 20   2.. .5$encoder 
0005A0  31 36 F7 F0 00 20 32 7F 7F 20 00 36 20 20 2E 65  16... 2.. .6  .e
0005B0  61 73 79 70 61 72 20 43 43 20 31 20 34 37 20 30  asypar CC 1 47 0
0005C0  20 31 32 37 20 61 62 73 6F 6C 75 74 65 F7 F0 00   127 absolute...
0005D0  20 32 7F 7F 20 00 37 20 20 2E 73 68 6F 77 76 61   2.. .7  .showva
0005E0  6C 75 65 20 6F 6E F7 F0 00 20 32 7F 7F 20 00 38  lue on... 2.. .8
0005F0  20 20 2E 6D 6F 64 65 20 31 32 64 6F 74 F7 F0 00    .mode 12dot...
000600  20 32 7F 7F 20 00 39 24 65 6E 63 6F 64 65 72 20   2.. .9$encoder 
000610  31 37 F7 F0 00 20 32 7F 7F 20 00 3A 20 20 2E 65  17... 2.. .:  .e
000620  61 73 79 70 61 72 20 43 43 20 31 20 32 36 20 30  asypar CC 1 26 0
000630  20 31 32 37 20 61 62 73 6F 6C 75 74 65 F7 F0 00   127 absolute...
000640  20 32 7F 7F 20 00 3B 20 20 2E 73 68 6F 77 76 61   2.. .;  .showva
000650  6C 75 65 20 6F 6E F7 F0 00 20 32 7F 7F 20 00 3C  lue on... 2.. .<
000660  20 20 2E 6D 6F 64 65 20 31 32 64 6F 74 F7 F0 00    .mode 12dot...
000670  20 32 7F 7F 20 00 3D 24 65 6E 63 6F 64 65 72 20   2.. .=$encoder 
000680  32 35 F7 F0 00 20 32 7F 7F 20 00 3E 20 20 2E 65  25... 2.. .>  .e
000690  61 73 79 70 61 72 20 43 43 20 31 20 33 34 20 30  asypar CC 1 34 0
0006A0  20 31 32 37 20 61 62 73 6F 6C 75 74 65 F7 F0 00   127 absolute...
0006B0  20 32 7F 7F 20 00 3F 20 20 2E 73 68 6F 77 76 61   2.. .?  .showva
0006C0  6C 75 65 20 6F 6E F7 F0 00 20 32 7F 7F 20 00 40  lue on... 2.. .@
0006D0  20 20 2E 6D 6F 64 65 20 31 32 64 6F 74 F7 F0 00    .mode 12dot...
0006E0  20 32 7F 7F 20 00 41 24 65 6E 63 6F 64 65 72 20   2.. .A$encoder 
0006F0  32 39 F7 F0 00 20 32 7F 7F 20 00 42 20 20 2E 65  29... 2.. .B  .e
000700  61 73 79 70 61 72 20 43 43 20 31 20 33 34 20 30  asypar CC 1 34 0
000710  20 31 32 37 20 61 62 73 6F 6C 75 74 65 F7 F0 00   127 absolute...
000720  20 32 7F 7F 20 00 43 20 20 2E 73 68 6F 77 76 61   2.. .C  .showva
000730  6C 75 65 20 6F 6E F7 F0 00 20 32 7F 7F 20 00 44  lue on... 2.. .D
000740  20 20 2E 6D 6F 64 65 20 31 32 64 6F 74 F7 F0 00    .mode 12dot...
000750  20 32 7F 7F 20 00 45 24 65 6E 63 6F 64 65 72 20   2.. .E$encoder 
000760  33 32 F7 F0 00 20 32 7F 7F 20 00 46 20 20 2E 65  32... 2.. .F  .e
000770  61 73 79 70 61 72 20 43 43 20 31 20 37 20 30 20  asypar CC 1 7 0 
000780  31 32 37 20 61 62 73 6F 6C 75 74 65 F7 F0 00 20  127 absolute... 
000790  32 7F 7F 20 00 47 20 20 2E 73 68 6F 77 76 61 6C  2.. .G  .showval
0007A0  75 65 20 6F 6E F7 F0 00 20 32 7F 7F 20 00 48 20  ue on... 2.. .H 
0007B0  20 2E 6D 6F 64 65 20 31 32 64 6F 74 F7 F0 00 20   .mode 12dot... 
0007C0  32 7F 7F 20 00 49 24 65 6E 63 6F 64 65 72 20 33  2.. .I$encoder 3
0007D0  33 F7 F0 00 20 32 7F 7F 20 00 4A 20 20 2E 65 61  3... 2.. .J  .ea
0007E0  73 79 70 61 72 20 43 43 20 31 20 37 30 20 30 20  sypar CC 1 70 0 
0007F0  31 32 37 20 61 62 73 6F 6C 75 74 65 F7 F0 00 20  127 absolute... 
000800  32 7F 7F 20 00 4B 20 20 2E 73 68 6F 77 76 61 6C  2.. .K  .showval
000810  75 65 20 6F 6E F7 F0 00 20 32 7F 7F 20 00 4C 20  ue on... 2.. .L 
000820  20 2E 6D 6F 64 65 20 31 64 6F 74 F7 F0 00 20 32   .mode 1dot... 2
000830  7F 7F 20 00 4D 24 65 6E 63 6F 64 65 72 20 33 34  .. .M$encoder 34
000840  F7 F0 00 20 32 7F 7F 20 00 4E 20 20 2E 65 61 73  ... 2.. .N  .eas
000850  79 70 61 72 20 43 43 20 31 20 37 31 20 30 20 31  ypar CC 1 71 0 1
000860  32 37 20 61 62 73 6F 6C 75 74 65 F7 F0 00 20 32  27 absolute... 2
000870  7F 7F 20 00 4F 20 20 2E 73 68 6F 77 76 61 6C 75  .. .O  .showvalu
000880  65 20 6F 6E F7 F0 00 20 32 7F 7F 20 00 50 20 20  e on... 2.. .P  
000890  2E 6D 6F 64 65 20 31 64 6F 74 F7 F0 00 20 32 7F  .mode 1dot... 2.
0008A0  7F 20 00 51 24 65 6E 63 6F 64 65 72 20 33 35 F7  . .Q$encoder 35.
0008B0  F0 00 20 32 7F 7F 20 00 52 20 20 2E 65 61 73 79  .. 2.. .R  .easy
0008C0  70 61 72 20 43 43 20 31 20 37 32 20 30 20 31 32  par CC 1 72 0 12
0008D0  37 20 61 62 73 6F 6C 75 74 65 F7 F0 00 20 32 7F  7 absolute... 2.
0008E0  7F 20 00 53 20 20 2E 73 68 6F 77 76 61 6C 75 65  . .S  .showvalue
0008F0  20 6F 6E F7 F0 00 20 32 7F 7F 20 00 54 20 20 2E   on... 2.. .T  .
000900  6D 6F 64 65 20 31 64 6F 74 F7 F0 00 20 32 7F 7F  mode 1dot... 2..
000910  20 00 55 24 65 6E 63 6F 64 65 72 20 33 36 F7 F0   .U$encoder 36..
000920  00 20 32 7F 7F 20 00 56 20 20 2E 65 61 73 79 70  . 2.. .V  .easyp
000930  61 72 20 43 43 20 31 20 37 33 20 30 20 31 32 37  ar CC 1 73 0 127
000940  20 61 62 73 6F 6C 75 74 65 F7 F0 00 20 32 7F 7F   absolute... 2..
000950  20 00 57 20 20 2E 73 68 6F 77 76 61 6C 75 65 20   .W  .showvalue 
000960  6F 6E F7 F0 00 20 32 7F 7F 20 00 58 20 20 2E 6D  on... 2.. .X  .m
000970  6F 64 65 20 31 64 6F 74 F7 F0 00 20 32 7F 7F 20  ode 1dot... 2.. 
000980  00 59 24 65 6E 63 6F 64 65 72 20 33 37 F7 F0 00  .Y$encoder 37...
000990  20 32 7F 7F 20 00 5A 20 20 2E 65 61 73 79 70 61   2.. .Z  .easypa
0009A0  72 20 43 43 20 31 20 31 30 35 20 30 20 31 32 37  r CC 1 105 0 127
0009B0  20 61 62 73 6F 6C 75 74 65 F7 F0 00 20 32 7F 7F   absolute... 2..
0009C0  20 00 5B 20 20 2E 73 68 6F 77 76 61 6C 75 65 20   .[  .showvalue 
0009D0  6F 6E F7 F0 00 20 32 7F 7F 20 00 5C 20 20 2E 6D  on... 2.. .\  .m
0009E0  6F 64 65 20 31 64 6F 74 F7 F0 00 20 32 7F 7F 20  ode 1dot... 2.. 
0009F0  00 5D 24 65 6E 63 6F 64 65 72 20 33 38 F7 F0 00  .]$encoder 38...
000A00  20 32 7F 7F 20 00 5E 20 20 2E 65 61 73 79 70 61   2.. .^  .easypa
000A10  72 20 43 43 20 31 20 31 30 36 20 30 20 31 32 37  r CC 1 106 0 127
000A20  20 61 62 73 6F 6C 75 74 65 F7 F0 00 20 32 7F 7F   absolute... 2..
000A30  20 00 5F 20 20 2E 73 68 6F 77 76 61 6C 75 65 20   ._  .showvalue 
000A40  6F 6E F7 F0 00 20 32 7F 7F 20 00 60 20 20 2E 6D  on... 2.. .`  .m
000A50  6F 64 65 20 31 64 6F 74 F7 F0 00 20 32 7F 7F 20  ode 1dot... 2.. 
000A60  00 61 24 65 6E 63 6F 64 65 72 20 33 39 F7 F0 00  .a$encoder 39...
000A70  20 32 7F 7F 20 00 62 20 20 2E 65 61 73 79 70 61   2.. .b  .easypa
000A80  72 20 43 43 20 31 20 31 30 37 20 30 20 31 32 37  r CC 1 107 0 127
000A90  20 61 62 73 6F 6C 75 74 65 F7 F0 00 20 32 7F 7F   absolute... 2..
000AA0  20 00 63 20 20 2E 73 68 6F 77 76 61 6C 75 65 20   .c  .showvalue 
000AB0  6F 6E F7 F0 00 20 32 7F 7F 20 00 64 20 20 2E 6D  on... 2.. .d  .m
000AC0  6F 64 65 20 31 64 6F 74 F7 F0 00 20 32 7F 7F 20  ode 1dot... 2.. 
000AD0  00 65 24 65 6E 63 6F 64 65 72 20 34 30 F7 F0 00  .e$encoder 40...
000AE0  20 32 7F 7F 20 00 66 20 20 2E 65 61 73 79 70 61   2.. .f  .easypa
000AF0  72 20 43 43 20 31 20 31 30 38 20 30 20 31 32 37  r CC 1 108 0 127
000B00  20 61 62 73 6F 6C 75 74 65 F7 F0 00 20 32 7F 7F   absolute... 2..
000B10  20 00 67 20 20 2E 73 68 6F 77 76 61 6C 75 65 20   .g  .showvalue 
000B20  6F 6E F7 F0 00 20 32 7F 7F 20 00 68 20 20 2E 6D  on... 2.. .h  .m
000B30  6F 64 65 20 31 64 6F 74 F7 F0 00 20 32 7F 7F 20  ode 1dot... 2.. 
000B40  00 69 24 65 6E 63 6F 64 65 72 20 34 31 F7 F0 00  .i$encoder 41...
000B50  20 32 7F 7F 20 00 6A 20 20 2E 65 61 73 79 70 61   2.. .j  .easypa
000B60  72 20 43 43 20 31 20 37 35 20 30 20 31 32 37 20  r CC 1 75 0 127 
000B70  61 62 73 6F 6C 75 74 65 F7 F0 00 20 32 7F 7F 20  absolute... 2.. 
000B80  00 6B 20 20 2E 73 68 6F 77 76 61 6C 75 65 20 6F  .k  .showvalue o
000B90  6E F7 F0 00 20 32 7F 7F 20 00 6C 20 20 2E 6D 6F  n... 2.. .l  .mo
000BA0  64 65 20 31 64 6F 74 F7 F0 00 20 32 7F 7F 20 00  de 1dot... 2.. .
000BB0  6D 24 65 6E 63 6F 64 65 72 20 34 32 F7 F0 00 20  m$encoder 42... 
000BC0  32 7F 7F 20 00 6E 20 20 2E 65 61 73 79 70 61 72  2.. .n  .easypar
000BD0  20 43 43 20 31 20 37 36 20 30 20 31 32 37 20 61   CC 1 76 0 127 a
000BE0  62 73 6F 6C 75 74 65 F7 F0 00 20 32 7F 7F 20 00  bsolute... 2.. .
000BF0  6F 20 20 2E 73 68 6F 77 76 61 6C 75 65 20 6F 6E  o  .showvalue on
000C00  F7 F0 00 20 32 7F 7F 20 00 70 20 20 2E 6D 6F 64  ... 2.. .p  .mod
000C10  65 20 31 64 6F 74 F7 F0 00 20 32 7F 7F 20 00 71  e 1dot... 2.. .q
000C20  24 65 6E 63 6F 64 65 72 20 34 33 F7 F0 00 20 32  $encoder 43... 2
000C30  7F 7F 20 00 72 20 20 2E 65 61 73 79 70 61 72 20  .. .r  .easypar 
000C40  43 43 20 31 20 37 37 20 30 20 31 32 37 20 61 62  CC 1 77 0 127 ab
000C50  73 6F 6C 75 74 65 F7 F0 00 20 32 7F 7F 20 00 73  solute... 2.. .s
000C60  20 20 2E 73 68 6F 77 76 61 6C 75 65 20 6F 6E F7    .showvalue on.
000C70  F0 00 20 32 7F 7F 20 00 74 20 20 2E 6D 6F 64 65  .. 2.. .t  .mode
000C80  20 31 64 6F 74 F7 F0 00 20 32 7F 7F 20 00 75 24   1dot... 2.. .u$
000C90  65 6E 63 6F 64 65 72 20 34 34 F7 F0 00 20 32 7F  encoder 44... 2.
000CA0  7F 20 00 76 20 20 2E 65 61 73 79 70 61 72 20 43  . .v  .easypar C
000CB0  43 20 31 20 37 38 20 30 20 31 32 37 20 61 62 73  C 1 78 0 127 abs
000CC0  6F 6C 75 74 65 F7 F0 00 20 32 7F 7F 20 00 77 20  olute... 2.. .w 
000CD0  20 2E 73 68 6F 77 76 61 6C 75 65 20 6F 6E F7 F0   .showvalue on..
000CE0  00 20 32 7F 7F 20 00 78 20 20 2E 6D 6F 64 65 20  . 2.. .x  .mode 
000CF0  31 64 6F 74 F7 F0 00 20 32 7F 7F 20 00 79 24 65  1dot... 2.. .y$e
000D00  6E 63 6F 64 65 72 20 34 35 F7 F0 00 20 32 7F 7F  ncoder 45... 2..
000D10  20 00 7A 20 20 2E 65 61 73 79 70 61 72 20 43 43   .z  .easypar CC
000D20  20 31 20 31 31 30 20 30 20 31 32 37 20 61 62 73   1 110 0 127 abs
000D30  6F 6C 75 74 65 F7 F0 00 20 32 7F 7F 20 00 7B 20  olute... 2.. .{ 
000D40  20 2E 73 68 6F 77 76 61 6C 75 65 20 6F 6E F7 F0   .showvalue on..
000D50  00 20 32 7F 7F 20 00 7C 20 20 2E 6D 6F 64 65 20  . 2.. .|  .mode 
000D60  31 64 6F 74 F7 F0 00 20 32 7F 7F 20 00 7D 24 65  1dot... 2.. .}$e
000D70  6E 63 6F 64 65 72 20 34 36 F7 F0 00 20 32 7F 7F  ncoder 46... 2..
000D80  20 00 7E 20 20 2E 65 61 73 79 70 61 72 20 43 43   .~  .easypar CC
000D90  20 31 20 31 31 31 20 30 20 31 32 37 20 61 62 73   1 111 0 127 abs
000DA0  6F 6C 75 74 65 F7 F0 00 20 32 7F 7F 20 00 7F 20  olute... 2.. .. 
000DB0  20 2E 73 68 6F 77 76 61 6C 75 65 20 6F 6E F7 F0   .showvalue on..
000DC0  00 20 32 7F 7F 20 01 00 20 20 2E 6D 6F 64 65 20  . 2.. ..  .mode 
000DD0  31 64 6F 74 F7 F0 00 20 32 7F 7F 20 01 01 24 65  1dot... 2.. ..$e
000DE0  6E 63 6F 64 65 72 20 34 37 F7 F0 00 20 32 7F 7F  ncoder 47... 2..
000DF0  20 01 02 20 20 2E 65 61 73 79 70 61 72 20 43 43   ..  .easypar CC
000E00  20 31 20 31 31 32 20 30 20 31 32 37 20 61 62 73   1 112 0 127 abs
000E10  6F 6C 75 74 65 F7 F0 00 20 32 7F 7F 20 01 03 20  olute... 2.. .. 
000E20  20 2E 73 68 6F 77 76 61 6C 75 65 20 6F 6E F7 F0   .showvalue on..
000E30  00 20 32 7F 7F 20 01 04 20 20 2E 6D 6F 64 65 20  . 2.. ..  .mode 
000E40  31 64 6F 74 F7 F0 00 20 32 7F 7F 20 01 05 24 65  1dot... 2.. ..$e
000E50  6E 63 6F 64 65 72 20 34 38 F7 F0 00 20 32 7F 7F  ncoder 48... 2..
000E60  20 01 06 20 20 2E 65 61 73 79 70 61 72 20 43 43   ..  .easypar CC
000E70  20 31 20 31 31 36 20 30 20 31 32 37 20 61 62 73   1 116 0 127 abs
000E80  6F 6C 75 74 65 F7 F0 00 20 32 7F 7F 20 01 07 20  olute... 2.. .. 
000E90  20 2E 73 68 6F 77 76 61 6C 75 65 20 6F 6E F7 F0   .showvalue on..
000EA0  00 20 32 7F 7F 20 01 08 20 20 2E 6D 6F 64 65 20  . 2.. ..  .mode 
000EB0  31 64 6F 74 F7 F0 00 20 32 7F 7F 20 01 09 24 65  1dot... 2.. ..$e
000EC0  6E 63 6F 64 65 72 20 34 39 F7 F0 00 20 32 7F 7F  ncoder 49... 2..
000ED0  20 01 0A 20 20 2E 65 61 73 79 70 61 72 20 43 43   ..  .easypar CC
000EE0  20 31 20 38 30 20 30 20 31 32 37 20 61 62 73 6F   1 80 0 127 abso
000EF0  6C 75 74 65 F7 F0 00 20 32 7F 7F 20 01 0B 20 20  lute... 2.. ..  
000F00  2E 73 68 6F 77 76 61 6C 75 65 20 6F 6E F7 F0 00  .showvalue on...
000F10  20 32 7F 7F 20 01 0C 20 20 2E 6D 6F 64 65 20 31   2.. ..  .mode 1
000F20  64 6F 74 F7 F0 00 20 32 7F 7F 20 01 0D 24 65 6E  dot... 2.. ..$en
000F30  63 6F 64 65 72 20 35 30 F7 F0 00 20 32 7F 7F 20  coder 50... 2.. 
000F40  01 0E 20 20 2E 65 61 73 79 70 61 72 20 43 43 20  ..  .easypar CC 
000F50  31 20 38 31 20 30 20 31 32 37 20 61 62 73 6F 6C  1 81 0 127 absol
000F60  75 74 65 F7 F0 00 20 32 7F 7F 20 01 0F 20 20 2E  ute... 2.. ..  .
000F70  73 68 6F 77 76 61 6C 75 65 20 6F 6E F7 F0 00 20  showvalue on... 
000F80  32 7F 7F 20 01 10 20 20 2E 6D 6F 64 65 20 31 64  2.. ..  .mode 1d
000F90  6F 74 F7 F0 00 20 32 7F 7F 20 01 11 24 65 6E 63  ot... 2.. ..$enc
000FA0  6F 64 65 72 20 35 31 F7 F0 00 20 32 7F 7F 20 01  oder 51... 2.. .
000FB0  12 20 20 2E 65 61 73 79 70 61 72 20 43 43 20 31  .  .easypar CC 1
000FC0  20 38 32 20 30 20 31 32 37 20 61 62 73 6F 6C 75   82 0 127 absolu
000FD0  74 65 F7 F0 00 20 32 7F 7F 20 01 13 20 20 2E 73  te... 2.. ..  .s
000FE0  68 6F 77 76 61 6C 75 65 20 6F 6E F7 F0 00 20 32  howvalue on... 2
000FF0  7F 7F 20 01 14 20 20 2E 6D 6F 64 65 20 31 64 6F  .. ..  .mode 1do
001000  74 F7 F0 00 20 32 7F 7F 20 01 15 24 65 6E 63 6F  t... 2.. ..$enco
001010  64 65 72 20 35 32 F7 F0 00 20 32 7F 7F 20 01 16  der 52... 2.. ..
001020  20 20 2E 65 61 73 79 70 61 72 20 43 43 20 31 20    .easypar CC 1 
001030  38 33 20 30 20 31 32 37 20 61 62 73 6F 6C 75 74  83 0 127 absolut
001040  65 F7 F0 00 20 32 7F 7F 20 01 17 20 20 2E 73 68  e... 2.. ..  .sh
001050  6F 77 76 61 6C 75 65 20 6F 6E F7 F0 00 20 32 7F  owvalue on... 2.
001060  7F 20 01 18 20 20 2E 6D 6F 64 65 20 31 64 6F 74  . ..  .mode 1dot
001070  F7 F0 00 20 32 7F 7F 20 01 19 24 65 6E 63 6F 64  ... 2.. ..$encod
001080  65 72 20 35 33 F7 F0 00 20 32 7F 7F 20 01 1A 20  er 53... 2.. .. 
001090  20 2E 65 61 73 79 70 61 72 20 43 43 20 31 20 35   .easypar CC 1 5
0010A0  20 30 20 31 32 37 20 61 62 73 6F 6C 75 74 65 F7   0 127 absolute.
0010B0  F0 00 20 32 7F 7F 20 01 1B 20 20 2E 73 68 6F 77  .. 2.. ..  .show
0010C0  76 61 6C 75 65 20 6F 6E F7 F0 00 20 32 7F 7F 20  value on... 2.. 
0010D0  01 1C 20 20 2E 6D 6F 64 65 20 31 64 6F 74 F7 F0  ..  .mode 1dot..
0010E0  00 20 32 7F 7F 20 01 1D 24 65 6E 63 6F 64 65 72  . 2.. ..$encoder
0010F0  20 35 34 F7 F0 00 20 32 7F 7F 20 01 1E 20 20 2E   54... 2.. ..  .
001100  65 61 73 79 70 61 72 20 43 43 20 31 20 38 37 20  easypar CC 1 87 
001110  30 20 31 32 37 20 61 62 73 6F 6C 75 74 65 F7 F0  0 127 absolute..
001120  00 20 32 7F 7F 20 01 1F 20 20 2E 73 68 6F 77 76  . 2.. ..  .showv
001130  61 6C 75 65 20 6F 6E F7 F0 00 20 32 7F 7F 20 01  alue on... 2.. .
001140  20 20 20 2E 6D 6F 64 65 20 31 64 6F 74 F7 F0 00     .mode 1dot...
001150  20 32 7F 7F 20 01 21 24 65 6E 63 6F 64 65 72 20   2.. .!$encoder 
001160  35 35 F7 F0 00 20 32 7F 7F 20 01 22 20 20 2E 65  55... 2.. ."  .e
001170  61 73 79 70 61 72 20 43 43 20 31 20 38 38 20 30  asypar CC 1 88 0
001180  20 31 32 37 20 61 62 73 6F 6C 75 74 65 F7 F0 00   127 absolute...          


I don't think it's necessary to decompile the entire Java application, however you will need to probably wire tap the communication to get an idea of how the computer communicates with the MIDI device. Patches are commonly transfered over MID control signals, which are allowed to be vendor specific and herein lies your problem.

I am afraid I'm unable to provide any further detail though, as I've never attempted a project like this of my own. I hope this small amount of knowledge is at least somewhat useful.


Probably. As long as they didn't use an obfuscator on the code it wouldn't be horrible.

I don't know how to do any MIDI with Java, but I do know that a lot of professional audio MIDI devices document their midi protocol in the manual. You might find it easier to scrap what they did and start from scratch.

Very quick google search led me to here. Didn't really look at it, but it might help.

And taking a quick look at the manual indicates that there's enough midi info to make some educated guesses at what the data would be.

I will say, it's a bit of an undertaking, but it might be a really fun project.


First you need to dump the Sysex files (as quoted with MIDI_OX at start) , then you need to change one parameters by one and find which value has changed in the SysExfile. Of course time consumming ,since manafacturers didn't published the meaning of the payload in the sysex file.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜