The problem is that I can't even reload .syx file made on ESX back to this same ESX (Banks A,B,C,D) ? Why is that?
Check the MIDI filter settings on ESX, it may be blocking sysex. Alternatively, stay on the MIDI Dump page, I think this ignores MIDI filter settings. Also make sure the global channel is the same as it was when the sysex was dumped. You can check by viewing the syx file in a hex editor. It should be the least significant half of the third byte.
I also want to upload MIDI data from ESX to EMX and use my old patterns there.
This could be possible but it would take some hacking. The MIDI implementations for ESX and EMX are very similar. The only difference I can see is the device ID parameter, ESX=71 EMX=69.
http://www.korg-datastorage.jp/Software/MIDIImp/ESX.pdf
http://www.korg-datastorage.jp/Software/MIDIImp/EMX.pdf
The sysex data is a MIDI encoding of the pattern data. So you would need to convert sysex back to pattern, then convert ESX pattern to EMX pattern, then convert back to sysex (or just load as pattern data).
For converting between sysex and pattern you may be able use these scripts, with a little modification.
https://github.com/synthsofts/e2/blob/m ... syx2pat.py
https://github.com/synthsofts/e2/blob/m ... pat2syx.py
They were developed for e2, so you will need to modify pattern header, sysex header and file extensions to match the device you are using, but the main data conversion logic appears to be the same.
I don't know if there is a converter for ESX to EMX. You would need to map byte locations for parameters that are on both, I don't think they line up. Also set default values for parameters that are only on one device.