Christoffel Words
Christoffel words probably have utility for field-of-view in roguelikes among other, less important purposes. Here they are abused to produce rhythmic variations. The implementation comes by way of the book "Creating Rhythms" (Hollos, 2014) and associated code.
The idea is to sweep a circle through some number of degrees, and for a point at some radius generate Christoffel words of some length, minus duplicates.
1000000000000000000000000000000000000000000000000000000000000000
1000000000000000000000000000000000000000000000000000000000001000
1000000000000000000000000000000000000000000000000000000001000000
1000000000000000000000000000000000000000000000000000001000000000
1000000000000000000000000000000000000000000000000001000000000000
1000000000000000000000000000000000000000000000000100000000000000
1000000000000000000000000000000000000000000000010000000000000000
1000000000000000000000000000000000000000000001000000000000000000
1000000000000000000000000000000000000000000100000000000000000000
1000000000000000000000000000000000000000010000000000000000000000
1000000000000000000000000000000000000000100000000000000000000000
1000000000000000000000000000000000000010000000000000000000000000
1000000000000000000000000000000000000100000000000000000000000000
1000000000000000000000000000000000001000000000000000000000000000
1000000000000000000000000000000000010000000000000000000000000000
1000000000000000000000000000000000100000000000000000000000000000
1000000000000000000000000000000001000000000000000000000000000000
1000000000000000000000000000000010000000000000000000000000000001
1000000000000000000000000000000100000000000000000000000000000100
1000000000000000000000000000001000000000000000000000000000001000
1000000000000000000000000000010000000000000000000000000000100000
1000000000000000000000000000100000000000000000000000000100000000
1000000000000000000000000001000000000000000000000000001000000000
1000000000000000000000000010000000000000000000000000100000000000
1000000000000000000000000010000000000000000000000001000000000000
1000000000000000000000000100000000000000000000000010000000000000
1000000000000000000000000100000000000000000000000100000000000000
1000000000000000000000001000000000000000000000001000000000000000
1000000000000000000000001000000000000000000000010000000000000000
1000000000000000000000010000000000000000000000100000000000000000
1000000000000000000000010000000000000000000001000000000000000000
1000000000000000000000100000000000000000000010000000000000000000
1000000000000000000000100000000000000000000100000000000000000000
1000000000000000000001000000000000000000001000000000000000000001
1000000000000000000001000000000000000000001000000000000000000010
1000000000000000000001000000000000000000010000000000000000000100
1000000000000000000010000000000000000000100000000000000000001000
1000000000000000000010000000000000000001000000000000000000010000
1000000000000000000010000000000000000001000000000000000000100000
1000000000000000000100000000000000000010000000000000000001000000
1000000000000000000100000000000000000010000000000000000010000000
1000000000000000000100000000000000000100000000000000000100000000
1000000000000000001000000000000000001000000000000000001000000000
1000000000000000001000000000000000001000000000000000010000000000
1000000000000000001000000000000000010000000000000000010000000000
1000000000000000001000000000000000010000000000000000100000000000
1000000000000000010000000000000000100000000000000001000000000000
1000000000000000010000000000000000100000000000000010000000000000
1000000000000000010000000000000001000000000000000010000000000000
1000000000000000010000000000000001000000000000000100000000000000
1000000000000000100000000000000010000000000000001000000000000000
1000000000000000100000000000000010000000000000010000000000000001
1000000000000000100000000000000100000000000000010000000000000010
1000000000000000100000000000000100000000000000100000000000000100
1000000000000001000000000000001000000000000001000000000000001000
1000000000000001000000000000001000000000000010000000000000010000
1000000000000001000000000000010000000000000010000000000000100000
1000000000000001000000000000010000000000000100000000000000100000
1000000000000001000000000000010000000000000100000000000001000000
1000000000000010000000000000100000000000001000000000000010000000
1000000000000010000000000000100000000000010000000000000100000000
1000000000000010000000000001000000000000010000000000001000000000
1000000000000010000000000001000000000000100000000000001000000000
1000000000000010000000000001000000000000100000000000010000000000
1000000000000100000000000100000000000100000000000100000000000000
1000000000000100000000000010000000000001000000000000100000000000
1000000000000100000000000010000000000001000000000001000000000000
1000000000000100000000000010000000000010000000000001000000000001
1000000000000100000000000100000000000010000000000010000000000001
1000000000000100000000000100000000000100000000000010000000000010
1000000000000100000000000100000000000100000000000100000000000100
1000000000001000000000001000000000001000000000001000000000001000
1000000000001000000000001000000000001000000000010000000000010000
1000000000001000000000001000000000010000000000010000000000100000
1000000000001000000000010000000000010000000000100000000000100000
1000000000001000000000010000000000010000000000100000000001000000
1000000000001000000000010000000000100000000000100000000001000000
1000000000001000000000010000000000100000000001000000000010000000
1000000000010000000000100000000001000000000010000000000100000000
1000000000010000000000100000000001000000000100000000001000000000
1000000000010000000000100000000010000000000100000000001000000000
1000000000010000000000100000000010000000000100000000010000000000
1000000000010000000001000000000010000000001000000000010000000001
1000000000010000000001000000000010000000001000000000100000000001
1000000000010000000001000000000100000000001000000000100000000010
1000000000010000000001000000000100000000010000000000100000000010
1000000000010000000001000000000100000000010000000001000000000100
1000000000100000000010000000001000000000100000000010000000001000
1000000000100000000010000000001000000000100000000100000000010000
1000000000100000000010000000001000000001000000000100000000010000
1000000000100000000010000000010000000001000000000100000000100000
1000000000100000000010000000010000000001000000001000000000100000
1000000000100000000100000000010000000010000000001000000001000000
1000000000100000000100000000010000000010000000010000000001000000
1000000000100000000100000000100000000010000000010000000010000000
Yes, but where is the music?
For angle 29.5 through pi/4 in degrees with various other settings--sweep angle, radius, etc.--one result is the following 14 patterns,
1001001001001010
1001001001010100
1001001001010010
1001001010010010
1001001010010100
1001010101010000
1001010010100101
1001010010101001
1001010100101010
1001010101010100
1001010101001010
1001010101010010
1001010101010101
1000000000000000
which can of course be turned into MIDI,
or worse.
tags #perl #music