software
Tools and libraries I've built.
-
Auxjad (2018–Present)
Auxjad is a library of auxiliary classes and functions that extends Abjad (a Python API for building LilyPond scores) with tools aimed specifically at composers working with algorithmic and generative techniques. It adds functionality for compositional methods such as manipulating and transforming musical containers and generating rhythmic and pitch material, along with other utilities that come up repeatedly when composing my own music in Abjad. Every class and function is documented with a docstring explaining its usage, and full documentation with examples is available at the link above. Note that Auxjad targets Abjad 3.4 specifically and is not compatible with newer Abjad releases. This library is published under the MIT License.
-
Auxjad Project Template (2025–26)
A ready-to-use project template for composers writing algorithmic pieces with Abjad and Auxjad. It provides a working project structure: a build script, a configuration file for score metadata (title, composer, dedication, instrumentation, paper size, and so on), and a build directory. This template should make it easier for composers to set up their project structure and build their compositions.
-
minimalpackage (2025–26)
A minimal, working example of how to structure a proper installable Python package, covering the directory structure, packaging metadata, a test suite, and contributing guidelines. It’s intended as a clean reference and starting point for setting up new Python projects correctly, rather than a tool with functionality of its own.
-
2D Virtual Acousmonium (2015)
A collection of Pure Data (Pd-extended) abstractions designed to work together with reacTIVision (a fiducial-marker computer-vision tracking system) to control the spatialisation of sound inside a virtual acousmonium: a virtual sound-diffusion space in which a listener can physically navigate. Some of these abstractions are also useful for more conventional reacTIVision applications, such as tracking objects placed on a surface.
-
PD: Abstractions and libraries (2015–18)
A set of abstractions and small libraries of abstractions for Pure Data, written for Pd-extended 0.43.4 or Pd-l2Ork. These are general-purpose utilities useful building blocks for Pd-based algorithmic work.
-
usefulLibrary (2015–20)
A collection of general-purpose Fortran subroutines and functions, utility routines that don’t warrant a dedicated library of their own, but are reused often enough across my other Fortran-based projects to be worth collecting in one place.
-
lilypondLibrary (2014–19)
A library of Fortran subroutines for generating LilyPond code programmatically, producing musical notation source files directly from Fortran. Useful for algorithmic composition workflows built around Fortran.