Common Music Functions

This is a bunch of functions and processes developed for the ... awesome ... Common Music system, including tonnetz implementations, nondeterministic programming, tiling canons, and other stuff. I've also thrown in some Lisp 'sketchbooks' from some recent compositions.

These work with version 2.9.1 of Common Music and are intended to be run within CM.

If you find these useful, great, but ...

(1) Use at your own risk! I haven't been super-careful about namespaces since these all run on my single-user computer.

(2) You're on your own regarding installation and use -- don't email me to help you with that. You should already be familiar with Lisp & Common Music to be able to use these.

Code -- the library of Lisp functions

Nudruz.lisp -- The main file. A whole bunch of useful routines for structuring pitch, rhythm, and register. A few of these may require you to run "Nondet.lisp" below -- just remove those items if you run into problems.

Withclocc.lisp -- Several useful combinatoric routines. These require you to have the CLOCC libraries installed.

Nondet.lisp -- Some nondeterministic programming using the Screamer package. (You must have Screamer installed.)

Rewrite.lisp -- Some useful stuff for working with rewriting systems, including the Game of Life and other one and two-dimensional systems.

Modes.lisp -- Some modes & ways of working with them in CM.

Inflect.lisp -- Defining inflection figures for upper/lower neighbor and ascending/descending passing tones.

Selfsim.lisp -- Some helpful routines for setting self-similar melodies (see Data below for some examples).

Spacegrp.lisp -- A wacky experiment in using point & space groups for melodic transformations.

Tiling.lisp -- Some routines for setting "Tiling Canons" (see Data below for some examples).

Tonnetz.lisp -- Implementation of a generalized trichord tonnetz with the three classic common-tone transformations.

Transforms.lisp -- Various transformations (place swapping, etc.).

Diffs.lisp -- Functions for defining difference equations.

Motive.lisp -- A way of working with & transforming motives.

Reger.lisp -- Generalized tonnetz-like harmonic transformation system.

Slonimsky.lisp -- Building intervallic patterns, inspired by the "Thesaurus of Scales and Melodic Patterns".

Cminit.lisp -- My init file. This might help you troubleshoot your installation of my scripts.


Data -- some Lisp-ready data

Cyclops.lisp -- Some self-similar melodies, ready to be used with Selfsim.lisp above. There's also instructions for finding more of these with the help of the GAP system.

Designs.lisp -- A few combinatoric designs, including projective planes, affine planes, Steiner systems, Hadamard, etc.

Graphs.lisp -- A handful of graphs from group theory.

Tiles.lisp -- A handful of tiling canons. -- A script for finding tiling canons in the GAP system. (It's not Lisp code!)

Beats.lisp -- Catalog of metric subdivisions.

Lewin.lisp -- Projective planes as a basis for harmony.

Scanons.lisp -- CLOS data & functions for finding & manipulating 'stacked canons'.

Besthex.lisp -- All hexachords (unsorted, untransposed) with inversional invariance.

Interfaces -- Perl scripts called from "nudruz.lisp" -- Used with the Concorde TSP solver. -- Used with the Minion constraint solver.

Compositions -- some Lisp 'sketchbooks'

Canon for LP (2004)


Five Verlaine Settings (2004)


Sputter (2004)


Quadrille (2005)



Paper Trail Motet (2005)