last modified: 9/2010

Brad Garton Software

Here I have listed/linked the source code for software I have written. I'm certain that a lot is missing, and most of it is completely undocumented. A fair amount of the code represents my first attempt at using different languages, concepts, toolkits, interfaces, etc., so if you are a real live programmer-person try not to laugh too hard at my bizarro coding. At least I was able to get the machines to do what I wanted... pretty much. Bear in mind that much of the code is probably now obsolete. Software tends to have a short shelf-life.

This page is divided into three sections, although not all the software I have written falls neatly into a particular category. The first has links to tools and development environments that I wrote or ported; the second contains links to applications and interfaces I developed for pieces and/or performances; the third lists some of the software I developed as part of my teaching at Columbia University and elsewhere. The links aren't in any real order, except that they reflect a vague attempt at time-ordering or what I recalled first in each category. I haven't tried to put dates on these, because some of the projects span a number of years, and I couldn't really recall precisely when I did what. I realize that much of the older code is probably non-functional, and a date would help identify which of these programs actually run on contemporary machines. Bear in mind that software listed as working on NeXT machines dates back to the early 1990s, and software developed for Macintosh OSX computers is more recent. The Unix software is more diffuse -- I was using early Unixes in the 1980s, and then worked with SGI IRIX in the mid-90's before migrating to Linux in the late 1990s.

A significant portion of the software listed below was done in collaboration with others, or it was done by building upon previous work by others. Even though mine is grungy, mostly undocumented code, I hope that by making it publicly-accessible it might be useful to anyone trying to do similar kinds of things.


RTcmix       Windows - Macintosh - Unix - NeXT
iRTcmix       iPhone ( Macintosh)
[rtcmix~]       Windows - Macintosh
[sc3~]       Macintosh
[chuck~]       Macintosh
[maxlispj]       Windows - Macintosh
[maxlisp]       Macintosh
mix-macOSX       Macintosh
piece-o-matic       Macintosh - Unix - NeXT
riff-o-matic       Macintosh - Unix - NeXT
utils.lisp       Macintosh - Unix - NeXT
Sun Microsystems Audio Conversion Driver
Elthar       Unix


These are applications or interfaces I wrote to accomplish specific musical tasks. Often they were created for a particular piece or to demonstrate a particular aspect of musical research I was involved in doing. Sometimes they were done in the course of learning a new programming or development environment, and sometimes they were just for the heck of it.

I haven't listed a lot of the standalone music-generating applications, because they are listed here and I didn't want to be too redundant. Many of them are fairly substantial coding projects, however. I try not to differentiate too much between "coding" and "composing".

I am Dying performance interface       Windows - Macintosh - Unix
Good News performance interface       Windows - Macintosh
fog performance interface       Macintosh - Unix
Renascence performance interface       Macintosh - Unix
bush-o-matic       Windows - Macintosh - Unix
granulatarize       Windows - Macintosh - Unix
Style Modeling Demo       Unix
FMfun       Unix
Chaos       Unix
dimension9       Unix
mFFT       Unix
FFFT       Unix
treembre/timb       Unix


I write a lot of code as part of the classes I teach. Many of these aren't really finished applications, but they do demonstrate aspects of computer music and algorithmic composition. Most of these came from a "picking and choosing" from my Computer Music I, Computer Music II, Basic Electroacoustics I and Basic Electroacoustics II classes. Buried in the sub-links for these classes are probably earlier (and later!) versions of the code below as well as some explanatory notes about the software.

In addition to these, the documentation and help-files I wrote for RTcmix, the [rtcmix~] object, and the [maxlisp] object represents another pedagogical aspect of my work.

JPMorganChase Kids Digital Sound and Movement       Windows - Macintosh - Unix
Burundi drummers model       Windows - Macintosh - Unix
fractal delay       Windows - Macintosh - Unix
woods reflection simulation       Windows - Macintosh - Unix
L-systems       Macintosh - Unix
flocking algorithm       Macintosh - Unix
neural net timbre classifier       Windows - Macintosh - Unix
genetic algorithms/artificial life       Windows - Macintosh - Unix
strange attractors/chaos       Windows - Macintosh - Unix
waves on water       Macintosh - Unix

There is a lot more code to be found in the class web page links listed at the top of the pedagogy section -- some of them contain barely-finished apps or fragments of code, some span several class periods (like the "Blues Guitar" Max/MSP style-model app), and some aren't really 'apps' per se, like instrument designs in different computer music languages. Scan around and you may find more fun fun stuff!