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.
精彩评论