It isn't really so bad - for simple things...
I made some simple mappings just to see how the formatting worked, once I figured out the pattern it was pretty easy.
What I'm posting is just mappings for jumping to a certain layerset and the crossfader. You can see that the top layerset taps are ID'ed in the program as set1-8, and the lower ones are set21-28. Then your midi assignment is next to the </key>. Channels are done by grouping, so you see everything here for Channel 1(0). Channel 2 would be listed in a separate, similar section right after this in the code.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "
http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>(g3_ASCII)from</key>
<string>(g3_ASCII)file</string>
<key>(g3_ASCII)midiMap</key>
<dict>
<key>(g3_INT)0</key>
<dict>
<key>(g3_INT)1</key>
<string>(g3_ASCII)set1</string>
<key>(g3_INT)10</key>
<string>(g3_ASCII)set25</string>
<key>(g3_INT)11</key>
<string>(g3_ASCII)set6</string>
<key>(g3_INT)12</key>
<string>(g3_ASCII)set26</string>
<key>(g3_INT)13</key>
<string>(g3_ASCII)set7</string>
<key>(g3_INT)14</key>
<string>(g3_ASCII)set27</string>
<key>(g3_INT)15</key>
<string>(g3_ASCII)set8</string>
<key>(g3_INT)16</key>
<string>(g3_ASCII)set28</string>
<key>(g3_INT)2</key>
<string>(g3_ASCII)set21</string>
<key>(g3_INT)25</key>
<string>(g3_ASCII)ctrl_master_crossfader_slider</string>
<key>(g3_INT)3</key>
<string>(g3_ASCII)set2</string>
<key>(g3_INT)4</key>
<string>(g3_ASCII)set22</string>
<key>(g3_INT)5</key>
<string>(g3_ASCII)set3</string>
<key>(g3_INT)6</key>
<string>(g3_ASCII)set23</string>
<key>(g3_INT)7</key>
<string>(g3_ASCII)set4</string>
<key>(g3_INT)8</key>
<string>(g3_ASCII)set24</string>
<key>(g3_INT)9</key>
<string>(g3_ASCII)set5</string>
</dict>
</dict>
Now I'm looking at how to work with layerset and position, which looks a little more complicated.
I am also REALLY interested in how you might assign a specific media to a specific layer via MIDI, if anyone knows.