Thinking about this even more, I feel like the composition could be represented as a series of transformations that go from simple to complex. So you start out with:
* Track in C#Maj, 124BPM, 4/4
* Chord progression I–V–vi–IV over 4 bars.
* OK but rhythm is that current chord repeats on every beat like a stab
* Timing should be early by half beat so it would be | I I I V| V V V vi| vi vi vi IV| IV IV IV I|
* another transformation to adjust the voicing, etc
* Then you can create a bass track from this that mirrors the lowest note but changes the rhythm, etc, etc etc,.
Any change along the way doesn't affect something else unless it should and then you're given a notice that you should check what was affected.