Sysex Full Read / Write

Started by StevenMartin, February 06, 2022, 12:16:04 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

StevenMartin

Is it possible to send a single sysex command that will request the data for every single paramater?

On arduino I'm looking to be able to create and restore my own presets (Seperate from the built in channels but I suppose acting in the same way). Preferably I would like to do one big read command that says 'give me the full amp settings', rather than 700+ reads (one for each paramater) and then one write command rather than 700+ writes to restore said parameter to the amp.

Is it possible?

gumtown

Yes, it is possible, if you grab KatanaFxFloorBoard for MK2 editor, set the preferences to "deBug Mode" and install a midi port emulator called "LoopBE1", and a midi data reader "Bomes SendSX", you can read the sysx data requests sent by the editor.

on KatanaFxFloorBoard for MK2 editor startup

F0 7E 00 06 01 F7 = identity request
F0 41 00 00 00 00 33 11 10 00 00 00 00 00 00 10 60 F7 = panel patch name
F0 41 00 00 00 00 33 11 10 01 00 00 00 00 00 10 5F F7 = channel 1 patch name
F0 41 00 00 00 00 33 11 10 02 00 00 00 00 00 10 5E F7 = channel 2 patch name
F0 41 00 00 00 00 33 11 10 03 00 00 00 00 00 10 5D F7 = channel 3 patch name
F0 41 00 00 00 00 33 11 10 04 00 00 00 00 00 10 5C F7 = channel 4 patch name
F0 41 00 00 00 00 33 11 10 05 00 00 00 00 00 10 5B F7 = channel 5 patch name
F0 41 00 00 00 00 33 11 10 06 00 00 00 00 00 10 5A F7 = channel 6 patch name
F0 41 00 00 00 00 33 11 10 07 00 00 00 00 00 10 59 F7 = channel 7 patch name
F0 41 00 00 00 00 33 11 10 08 00 00 00 00 00 10 58 F7 = channel 8 patch name
F0 41 00 00 00 00 33 11 60 00 00 00 00 00 0B 00 15 F7 = patch temporary address block request
F0 41 00 00 00 00 33 11 00 00 00 00 00 02 00 16 68 F7 = system data block request

To write the data you send the whole patch data block
panel =
F0 41 00 00 00 00 33 12 10 00 00 00 46 75 6C 6C 20 43 6C 65 61 6E 20 20 20 20 20 20 00 0E 07 44 32 00 32 3D 00 00 32 32 32 32 32 00 01 08 3F 0A 44 2B 4E 2D 37 00 01 00 32 00 01 01 05 64 00 00 32 32 05 05 32 32 32 07 0A 0A 02 00 00 00 00 14 0E 01 14 17 01 14 14 0E 14 18 18 18 18 18 18 18 18 18 18 18 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 53 F7
F0 41 00 00 00 00 33 12 10 00 01 00 01 1D 01 01 32 23 23 00 32 01 23 32 32 3C 00 32 00 64 00 64 64 00 00 32 32 32 32 00 00 1E 0B 0A 1E 14 14 14 14 14 14 14 14 14 14 14 00 14 0D 01 14 17 01 14 14 0E 14 00 32 32 32 32 2D 32 3C 00 28 1E 28 32 32 19 00 00 3E 64 00 01 18 3C 00 00 46 01 18 28 00 00 46 00 64 01 0C 00 00 46 07 00 00 50 00 64 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 01 32 32 10 3D F7
F0 41 00 00 00 00 33 12 10 00 02 00 32 32 32 00 46 28 37 00 00 64 00 1F 28 52 32 00 00 3C 00 46 55 41 32 01 1E 55 00 00 3C 32 46 3C 64 00 32 32 32 00 50 2D 01 00 32 00 32 64 64 01 00 02 32 50 64 32 64 04 33 2E 03 4B 29 30 03 41 50 32 32 32 32 32 01 32 2D 32 32 50 64 00 64 64 00 00 32 32 03 10 32 64 32 00 64 00 64 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 52 F7
F0 41 00 00 00 00 33 12 10 00 03 00 01 15 01 01 32 23 23 00 32 01 23 32 32 3C 00 32 00 64 00 64 64 00 00 32 32 32 32 00 00 1E 0B 0A 1E 14 14 14 14 14 14 14 14 14 14 14 00 14 0D 01 14 17 01 14 14 0E 14 00 32 32 32 32 2D 32 3C 00 28 1E 28 32 32 19 00 00 3E 64 00 01 18 3C 00 00 46 01 18 28 00 00 46 00 64 01 0C 00 00 46 07 00 00 50 00 64 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 01 32 32 10 43 F7
F0 41 00 00 00 00 33 12 10 00 04 00 32 32 32 00 46 28 37 00 00 64 00 1F 28 52 32 00 00 3C 00 46 50 41 32 01 1E 55 00 00 3C 32 46 3C 64 00 32 32 32 00 50 2D 01 00 32 00 32 64 64 01 00 02 32 50 64 32 64 04 2B 2E 03 4B 21 30 03 41 50 32 32 32 32 32 01 32 2D 32 32 50 64 00 64 64 00 00 32 32 03 10 32 64 32 00 64 00 64 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 65 F7
F0 41 00 00 00 00 33 12 10 00 05 00 01 08 02 72 20 0A 2B 64 32 00 64 16 0A 32 03 10 16 0A 32 28 37 01 00 00 00 00 00 00 00 00 00 00 00 00 03 10 16 0A 32 64 32 00 64 16 0A 32 03 10 16 0A 32 28 37 01 00 00 00 00 00 00 00 00 00 00 01 04 1D 00 0A 0E 0A 05 20 64 05 64 00 00 00 00 00 00 00 64 00 64 64 00 24 32 64 00 64 00 64 64 00 64 01 00 32 32 00 05 32 00 00 00 00 00 00 00 64 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 66 F7
F0 41 00 00 00 00 33 12 10 00 06 00 11 0B 0F 05 06 02 0D 0C 04 01 07 08 09 12 00 03 0A 13 0E 10 00 00 00 00 00 00 00 00 00 00 00 00 01 00 01 00 01 00 02 26 03 04 23 24 0F 0A 00 09 04 04 03 08 0A 0A 02 02 02 00 01 02 02 02 02 00 02 00 04 01 00 00 00 00 00 00 00 00 00 00 00 00 04 3A 29 4F 07 44 32 0F 27 17 23 16 01 01 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 17 F7
F0 41 00 00 00 00 33 12 10 00 07 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 69 F7
F0 41 00 00 00 00 33 12 10 00 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 64 00 00 00 64 00 00 00 64 00 64 00 64 00 64 00 64 00 64 00 64 00 64 00 64 00 64 00 64 00 64 00 64 00 64 00 64 00 64 00 64 00 64 00 64 00 64 00 64 00 64 00 64 00 00 00 64 00 00 00 64 00 64 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 78 F7
F0 41 00 00 00 00 33 12 10 00 09 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 64 00 00 00 64 00 00 00 64 00 64 00 64 00 64 00 64 00 64 00 64 00 64 00 64 00 64 00 64 00 64 00 64 00 64 00 64 00 64 00 64 00 64 00 64 00 64 00 64 00 64 00 64 00 00 00 64 00 00 00 64 00 64 00 64 00 64 00 64 00 00 00 64 00 64 00 00 00 00 03 F7
F0 41 00 00 00 00 33 12 10 00 0A 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 64 00 00 00 64 00 00 00 64 00 64 00 64 00 64 00 64 00 64 00 64 00 64 00 64 00 64 00 64 00 64 00 64 00 64 00 64 00 64 00 64 00 64 00 64 00 64 00 64 00 64 00 64 00 00 00 64 00 00 00 64 00 64 00 64 00 64 00 64 00 00 00 64 00 64 02 F7

channel 1 write address =
F0 41 00 00 00 00 33 12 10 01 00 00

channel 1 =
F0 41 00 00 00 00 33 12 10 02 00 00

and so on..

Free "GR-55 FloorBoard" editor software from https://sourceforge.net/projects/grfloorboard/

StevenMartin

Would you mind breaking it down a bit for me please? I don't think I've worked with data blocks before.

So in my arduino program I store just the address and data, and send/read both with the infamous MS3 library. Say for example for the boost switch i'd send 0x60000010 and 01 to turn it on.

But I dont quite understand what/how the huge data block works, whats in it or how I could send/receive one.

I think basically I've been blessed and cursed by the MS3 library and it's allowed me to get a decent amount of functionality without understanding the katana midi map layouts properly


sixeight

Start here: https://www.2writers.com/eddie/TutSysEx.htm. This will give you an understanding of the structure of the sysex messages of Boss/Roland.

If you send the patch temporary address block request message above, the Katana will respond with 9 midi messages, of which you will have to store all the data bytes. You will need some sort of external storage to do so, as the internal eeprom of most arduino's is just a few 100 bytes. All the data of one patch is 1408 bytes.

To restore the data you will have to send all the data back.

For the VC-mini, I limited the data of one patch to 192 bytes. I do not store data of effects that are not active, and also leave out some of the assignment data. I  can now send shorter messages and get faster patch changes. See https://github.com/sixeight7/VController_v3/blob/master/Firmware/VController_v3/MD_KTN.ino for my implementation.

StevenMartin

Okay great thanks, I will do some reading of both links! Memory hopefully shouldn't be an issue, I'm now using a Teensy 4.1, which aside from having more memory than most standard Arduinos, has a built-in SD card slot (possibly too slow though, I haven't tried yet) and space for an additional flash chip to be added (which I believe is persistent storage after power down?)

Any other info / hints / tips about achieving this understanding the data a little better that come to your mind please could you let me know! Lord knows I could use all the help I can get figuring this stuff out :D