Maybe this will help you out....
I always try to visualize these things in two different ways. The physical (how they are actually wired and built), and the logical (how things 'appear' to be). AND most importantly, I always try to break things down to the channel level.
Using my previous example again... My trees 'appear' to be 16 strings of 50 pixel each. So in xLights, this is how I configured them. I simply tell xLights that the tree has 16 strings, 50 pixels each, starting at the lower left, and the first channel is 512. Then xLights will create the sequences as if the first string start at 512 at the bottom, and goes to 662 at the top. Then string #2 starts 663 AT THE BOTTOM, and goes to 812 at the top. And so on.... (It helps A LOT to draw this out on paper, and include where these channels start and end.)
BUT since my PHYSICAL layout is actually different, this is where the controller comes into play. I don't actually have 16 strings of 50. I have 8 strings of 100, in a zig-zag. String #1 (part 1) is fine, with 512-662 from bottom to top. But string #1 (part 2) is physically incorrect, since channel 663 is actually at the top of the tree instead of the bottom. So I tell the controller to reverse the signals for channels 663-812. That makes the physical channel layout appear to match the logical layout that is defined in xLights.
I hope this isn't more confusing? Basically, I found it was best to configure it the simplest way possible in xLights, and then draw it out on paper, INCLUDING the channels, to visualize what xLights thinks it is supposed to be doing. Then I made another drawing of the way things are physically connected. This will make clear what strings don't match exactly, which also tells you what config changes you need to make on the controller to make things match up.
Does this help any?