Perl code ported from the book's C
https://abrazol.com/books/rhythm1/software.html
(NB: Arguments are sometimes switched between book and software.)
chsequl.pl - Generate the upper or lower Christoffel word for p/q
chsequl-sets.pl - Generate sets of Christoffel words
compam.pl - Generate compositions of n with m parts from the set (p1 p2 ...).
compa.pl - Generate compositions of n with allowed parts pi.
compm.pl - Generate all compositions of n into m parts.
comp.pl - Generate all compositions of n.
debruijn.pl - Generate the largest de Bruijn sequence of order n.
euclid.pl - Generate a Euclidean rhythm given n onsets distributed over m beats.
neckam.pl - Generate binary necklaces of length n with m ones and allowed parts pi.
necka.pl - Generate binary necklaces of length n with allowed parts pi.
neckm.pl - Generate all binary necklaces of length n with m ones.
neck.pl - Generate all binary necklaces of length n.
partam.pl - Generate all partitions of n with m parts from the set (p1 p2 ...).
parta.pl - Generate all partitions of n with allowed parts pi.
partm.pl - Generate all partitions of n into m parts.
part.pl - Generate all partitions of n.
permi.pl - Generate permutations of the given strings.
reverse_at.pl - Reverse a part of a bitstring at n.
rotate.pl - Rotate a binary necklace of the given 0/1 parts n times.