software

I have several software projects for audio and symbolic music analysis and composition. Details are available below, and you can also check out my GitHub page.


aus

This is a library for audio processing and analysis, available separately in Python and Rust versions. Among other features, aus supports spectral feature extraction and grain extraction. The specific features available vary between the Rust and Python versions (for example, the Rust version includes a STFT/ISTFT function pair, but the Python version does not). Details on the Rust version are available here, and details on the Python version are available here. The Rust version has been downloaded more than 4,000 times!


algograin

This is a set of two repositories for algorithmic granular synthesis.

The analysis component, grain_processor, extracts and analyzes grains from an audio corpus. Grain metadata, including the analysis, is stored in a SQLite database for later use in synthesis. The GitHub repository is here.

The synthesis component, granulation, queries the SQLite database for grains that match certain criteria, and provides algorithms for organizing those grains and generating an audio file. The GitHub repository is here.


pctheory

This is a Python library for working with atonal theory, especially designed to work well with Robert Morris's work (Composition With Pitch Classes, Class Notes on Atonal Theory, Class Notes on Advanced Atonal Theory, etc.) It includes extensions for working with 24-tone sets and ordered segments as well. Details are available here. Jupyter notebooks with example code are available in the GitHub repository.


Salami Slice Analyzer

Salami Slice Analyzer is a Python analyzer built on top of pctheory and music21. It identifies all distinct harmonic units in a MusicXML file and allows you to collect information about pitch and chord usage. It is available here.

LoopPhasor plugin for SuperCollider

I have a SuperCollider plugin repository here. My only functional plugin at this point is LoopPhasor, a UGen for playing samples with nested loop points.