From 8bdeea77280a0e28be86f2d7ab2ea78d4790b2f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomasz=20Mo=C5=84?= Date: Tue, 24 Feb 2009 23:03:28 +0100 Subject: [PATCH] add HACKING file --- HACKING | 68 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 HACKING diff --git a/HACKING b/HACKING new file mode 100644 index 0000000..d4b9cf3 --- /dev/null +++ b/HACKING @@ -0,0 +1,68 @@ +In general everything brings down to figure out: +-ID +-Position +-Possible value range + +There seems to be two possible ways to figure that out. +1) Use USB sniffer together with X-Edit + Once you set up X-Edit and usb sniffer, set some option. + USB sniffer should report something like this being sent to device: + (all numbers here are hex) + 04 F0 00 00 04 10 00 5E 04 02 41 00 04 30 09 00 07 00 34 F7 + + To get SysEx command out of it, remove every 4th byte, so we have: + F0 00 00 10 00 5E 02 41 00 30 09 00 00 34 F7 + + SysEx message format seems to be formed like this: + magic bytes - F0 00 00 10 00 5E 02 41 + status byte - in this example 00 + ID - in this example 30 09 + Position - in this example 00 + Value - in this example 00 (can be more bytes long, see below) + Checksum - to calculate it, XOR all bytes, and then XOR it with 07 + Every message ends with F7 + + Status byte bits explained: + 7th - ??? + 6th - if active add 80 to ID + 5th - ??? + 4th - is active when value will start with length + In such case value can be something like: + 01 12 or 02 12 34 or 03 12 34 56 + and proper values are: + 01 - 12 + 02 - 1234 + 03 - 123456 + 3rd - when 4th bit is also active, and first value byte is 01 + then add 80 to value + 2nd - when 4th bit is also active, and first value byte is 02 + then add 80 to value + 1st - when 4th bit is also active, and first value byte is 03 + then add 80 to value + + So for above example: + ID = 3009 (hex) = 12297 (decimal) + Position = 0 + One of possible values is 0. Usually value range is 0 to 99, + albeit in some cases it's different - you have to check what values can + X-Edit assign (there doesn't seem to be any sanity check in firmware) + This is especially needed for IDs that set some effect type. + +2) Save preset patch + Patches seem to be simple XML files. + Every parameter is written like this: + + 65 + 2 + 0 + Pickup Enable + Off + + ID is ID, Position is Position and Value is one of possible values. + To get all possible values you can: + do + change value to next one possible in X-Edit + (for example next effect type) + save new patch + check patch file and note the change + while you don't have all possible values