When the tool doesn’t exist, I write my own. I started coding with Pd, then Max/MSP, a brief sojourn into SuperCollider territory (I’ll be back, I swear!), and most recently into Processing. The more I compose/work, the more I end up creating my own tools for things that don’t exist yet.


AfterLive Looper – a multiple loop recorder/player – basically Groove Monkey on steroids

Bag of Tricks – a pedal board for when you only have a laptop

F(Seq)2 – My second sequencer. Much improved

FIDtoMID – Converts pitch to MIDI using [fiddle~]

Granulator – [groove~] based sample granulation

Groove Monkey – records from an input and allows for speed edits

Linnstrument EDO Mode – MaxMSP code that retunes and reorders the lights on the Linnstrument to play in 2-24EDO scales using a VST or ReWire device. Only tested on the full size version.

Linnstrument Lights – MaxMSP version of the two below

  • Linnstrument Light Controller – Let’s you set the LED color for any individual cell in a Linnstrument and save/recall presets.
  • Linnstrument Light Matrix – A slightly less CPU intensive version, but limited to only one color of LED.

Linnstrument NRPN Preset Controller – for changing presets inside of Ableton with Max4Live.

MIDI Vampire Controls

Particle Forge – Max/MSP implementation of the Grain Seive

Power Cycle – interactive work for cajon and computer

Public Domain Synaesthesia – an early VJ patch using video

SenselScrubber – scrub through audio files using a Sensel Morph!

SetGen – generates random sets for sight reading – not 12tone!

Scanline Synth – converts a picture into a waveform. MIDI and MPE versions available.

Songs of  a Mute Voice – interactive work for baritone sax and computer

Tessellator – decently complicated VJ setup for a 5×5 array of still images

That Sounds Familiar – iterative MIDI mangling at it’s finest (require the Bach and Dada packages for Max)

Through a Glass Darkly – the second sax quartet/computer work


Erebus – the first sax quartet/computer work

Fuhrman Sequencer – my first hand coded sequencer

Grain Seive – creates granular textures out of sine waves – loads of possibilities, hence the 100 save slots for presets.

Hypnos – my first interactive piece. Originally for trumpet and computer, it’s been mostly performed in the revised soprano sax and computer version, but there’s also a rewrite for violin and computer.

Thanatos – another early interactive work, for chromatic harmonica and computer


Animated Sine Waves – my second attempt at creating animated sine waves. Unlike the first one, this one works, and works quite well.

IanniX Curves – curves inspired by the JS code examples in IanniX

MIDI to OSC to Processing – a quickly bashed together example of how to connect Pd and Processing using the code described here – tweaked to take MIDI input

Recursive Lines – misleading title – it’s procedural, not really recursive. My attempt to get Processing to do interesting things with image placement, for() statements, and newly created functions.

MUS 4711 – Interactive Computer Music

What most people come here for. All of the demo patches for my MaxMSP class, freely available. These correspond to the video lectures, but a more up to date version is on my GitHub page.

Supplementary Lectures on YouTube

Week 1 Files – Basics, Math, and Logic

Week 2 Files – MIDI and Monosynths

Week 3 Files – Filters and Poly

Week 4 Files – Synthesis Types

Week 5 Files – More UI Elements

Week 6 Files – Mics and Audio Files, Input, and Recording

Week 7 Files – Pedal Board 1

Week 8 Files – Pedal Board 2

Week 9 Files – Transitions, Live-Stored Audio Manipulation

Week 11 Files – Mousestate, HID, OSC, and Coll

Week 12 Files – Pitch, Env, and Impulse Tracking

Week 13 Files – Sequencing, VSTs, OSC and IanniX

ToPP (Tone Perception and Production) – The complete Pd and Processing code that I creatred for the Mandarin Tone Perception and Production project with Dr. Catherine Ryu at Michigan State. This beta tool uses pitch analysis tools in Pd (sigmnud~) to create multiple analysis windows to process changes in pitch vectors many times per second using a simple n-1 method (eg. calculate the distance between 2 and 1, then 3 and 2, then 4 and 3, etc.). OSC is used to create a graphical display in Processing of an “ideal” contour as a visual aid to students in reproducing the tones. A similar analysis of the student’s reproduction is recorded and analyzed, with a second corresponding contour drawn in Processing. The complete database of Mandarin syllables is available at the Tone Perfect: Multimodal Database for Mandarin Chinese, hosted by Michigan State University.