Eucl*gic
A dual-channel Euclidean sequencer plus logic.
Background
Euclidean sequences
Two papers serve as the backbone of our investigation here. Godfried Toussaint1) was the first to notice that numerous traditional rhythms from around the world can be derived from the Euclidean algorithm. These patterns share the form $E(k,n)$, where $k$ notes are divided as evenly as possible among $n$ steps. When $k\mid n$, distributing those notes is trivial — simply place one every $n/k$ steps. For $k\nmid n$, E. Bjorklund2) provides a generalized algorithm. Actually, he provides a number of algorithms capable of satisfying various degrees of constraints; fortunately, we need only examine the unconstrained case.
include and discuss Bjorklund's algorithm
While Bjorklund's algorithm is perfectly serviceable, it relies on a number of arrays (count
, remainders
, and sequence
) to get the job done, and the whole process must be re-run any time the parameters change. Is it possible to generate the sequence more efficiently? Better yet, could we calculate each step on the fly using only $n$ and $k$?
As an alternative to Boolean strings, we can represent Euclidean sequences with interval vectors. Using this notation, we would write $E(5,8)=10110110=(2,1,2,1,2)$.