I began writing software nine years ago, and have found that over the course of those nine years I've enjoyed writing software in C, C++, Objective C, Python, Javascript, and PHP/MySQL. I also know Scheme but I'm not extremely interested in using it outside of Academia.

Maschine Work

Download Soundwrite 0.06 for Mac

Recently I've been very interested in lowering the barrier of entry to composing intuitive and engaging music without sacrificing flexibility. Take, for example, a video game like Guitar Hero or Rock Band: people enjoy playing these games because of the connection between their ability to time button presses correctly and the music that is generated from the game. However, this does not give people the access to the creative process of composing a unique piece of music, a process that I feel non-music oriented users can have access to.

Process music in the twentieth century has a bad reputation: it quickly transitioned from an interesting study at how music is created to a series of byzantine intellectualisms. While these intellectual pursuits are fascinating in their own right, I believe that the other side of process music has been largely neglected; Creating a powerful and intuitive framework for the procedural generation of music.

I believe that language can be used as a valid basis for procedural generation of music. Language is both expressive and universal- The United States now has a 99% literacy rate, and the English language is extremely diverse in possibilities of syntax and semantics alike. Ergo, I will be creating a program that will parse text into MIDI pitch values. My core design principals are that there will be no random elements or fixed characters; i.e. the character 'm' will not always be an A sharp. Text will be interpreted into chords based on it's context within a paragraph, akin to how a word's meaning and intent changes based on it's context.

This is the procedure in which the program will parse text into pitches:

The program is given a dictionary of interval values for each character in the alphabet, and a dictionary of key values for each character in the alphabet. Characters will represent more consonant intervals based on how commonly they appear in the English language. For example, e will represent the most consonant interval (the octave) and z and q will represent the most dissonant intervals. Some divergences from this correlation will be made: For example, Q's interval will be assigned knowing that it will almost always be performed in conjunction with U's interval.

1. The body of text is split at every paragraph.
2. Each paragraph is assigned a key, based on the final character in the paragraph.
3. each paragraph is split into separate words. Each word will become a chord.
4. The first character of each word becomes the root of the chord, based on (the character's intervallic value + the key of the paragraph).
5. each successive character in the word becomes a pitch within that chord based on (the character's intervallic value + root pitch)

The current version of Soundwrite is 0.06. This version includes live performance of interval values as you type, a redesigned user interface created in conjunction with graphic designer Molly Bolten, various methods of visual feedback, an implementation of the SoundDrawing mechanic, wherein you can actively draw to shape the timbre of the performance, and the ability to export text and SoundDrawings as audio or Max Binary files to replay later or share with other SoundWrite users.


Download Wind Machine 0.2 for Mac

Wind Machine is an application for generating stereophonic wind noises based on motion in a .mov file. In it's current state it is extremely performance heavy, so I recommend not running it on the first generation Macbook Air for now.


Download Sounden Crypt 0.01 for Mac

Sounden Crypt is a demonstration of XOR encryption. It takes a WAV audio file and a string, and segments the string into rolling 24-bit masks derived from the combined ASCII values of the string. You can "decrypt" an "encrypted" WAV file buy running it through Sounden Crypt with the same mask string that you originally used to encrypt it.


Download source and executable for Sound Peaks

Sound Peaks is an openGL visualizer inspired equally by the TV show Twin Peaks and sndpeek by Ge Wang. There are plenty of ways to alter what is going on onscreen, including a puzzle wherein four pitches must be sustained in order to agitate the cube equally.


I made this static website using the magic of html5 and a bunch of open source code. For the audio players I used SoundManager2 (BSD) and Bernie's Better Animation by Bernie Sumption (2006). For the gallery I use galleria. For the cool text shadows I used OKFocus's OKShadow.

I made with a lot of the same code and a bunch of PHP/MySQL. For it I built a basic CMS so that the members of the band can post to a blog. I also implemented ZenPhoto so that they can upload images.