I did this project entirely in ChucK. Think of a three-segmented worm spiralling around the Just Intonation Five-Limit Lattice. As it’s head reaches a new note, it plays that note and stops playing the note on the node that its tail was just on. So it’s always playing three notes, but adding a new one and dropping an old one as it moves. It starts in the center, spirals outwards clockwise, the reverses direction and spirals back in to the center.
Here is the five-limit lattice it operates on:
[[[ 25, 18], [ 25, 24], [25, 16], [75, 64], [225, 128]],
[[ 10, 9], [ 5, 3], [ 5, 4], [15, 8], [ 45, 32]],
[[ 16, 9], [ 4, 3], [ 1, 1], [ 3, 2], [ 9, 8]],
[[ 64, 45], [ 16, 15], [ 8, 5], [ 6, 5], [ 9, 5]],
[[256, 225], [128, 75], [32, 25], [48, 25], [ 36, 25]]]
@=> int fiveLimitLattice[][][];
The entire program is here.