For use in the service of audio and video, and for the satisfaction of curiosity, I write programs in Max/MSP. Here are some examples.

I'll replace some of these images with video soon to demonstrate the effects where necessary.

Mono Lisa

Mono Lisa is a monophonic subtractive synthesizer with a cheeky user interface. On-screen controls include level and ADSR control in the lower right corner, LPF cutoff by closing Mona's eyes, and the addition of pre-defined oscillators by raising Mona's arm. Her mouth opens when notes are depressed.

Video Editor

This tool allows the user to manipulate hue, saturation, and other coloring parameters on the fly and records it. The parameters are adjusted with a midi controller. It also allows for variable playback speed of the video, and the ability to map video frames to the outcoming levels of a sound file, allowing one to create an effect similar to a gif that moves along with music.

GIF Editor

This tool loads GIFs and videos and allows the user to manipulate their position, rotation, scaling, and tiling. It records in real time, allowing the user to "perform" moves. It also allows for the generation of a background color, e.g. greenscreen, to ease the integration of the generated matrial into other material via keying. I used it heavily to generate material for this video.

3D GIF Explosion!

This tool loads GIFs and videos. It maps them onto an array of simple 3d shapes - cylinders, cubes, pyramids, etc. The user controls the position, rotation, spatial density, and scaling of the group, as well as the rotation of individual elements within the group. The user may also automate certain parameters, for example setting the entire group of objects to rotate at a fixed rate along one axis while other parameters are manipulated by the user.Control is via simple MIDI controller. As in examples above, the program records on the fly allowing the user to perform clips. It was developed for - and used in - this video.

Video Frame Dropper

This widget loads videos and allows the user to drop the preceived framerate by a selected interval. It was used in this video to bring the high-framerate output from the camera down to the average framerate of the gifs used in the video, for visual consistency and vibe.

TX81z Interface

This widget was made to interface with a Yamaha Tx81z, giving the user more intuitive control over the operators and other standard parameters. It outputs raw hexadecimal MIDI


Bias uses a basic waveshaping algorithm to achieve soft-clipping of the input signal. It is built around a tastefully chosen trig function that mimics the transfer curve of a triode vacuum tube. With judicious use of the input, output, and bias controls, the user may select which part of the transfer function they desire to use for distortion.

CAT scan to GIF

My kneecap was fractured in a bike incident in 2016. I wrote this program to turn in the images I received of the CAT scans from the emergency room into Gifs. Here's my leg:

Dumb Ligeti

This program generates a continuous flow of midi notes. The user controls the repeat rate, and the rate of an LFO which modulates the pitch of the notes, allowing one to create a bone-headedly crude approximation of the incredible poetry of Gy├Ârgy Ligeti's piano etudes.

Dumb Sequencer

This program creates a transport metronome with 1/32 note divisions using bangs and switches. It is super dumb. Don't try to make sense of the gif, it doesn't show the full cycle.

Wandering Sine

This widget plays a sine wave out of one speaker and a slightly pitch-shifting sine wave of nearly the same frequency out of another speaker. Very simple. Very satisfying.