Write it once, transform it
The motif is a single line:
# lines/motif — arp degrees, up and back down
1 3 5 8 5 3
Every variation points back at that one line and names a transformation — the data is never rewritten:
type: variation
source: motif
transformations:
- { op: repeat, times: 2 } # or: reverse, transpose, rotate, …
Repeat, reverse, transpose — the motif is data; the variations are
declarative operations on it. Edit motif and every variation updates
with it.