This page is outdated. More coming soon!

Leap The Dips

This rolling ball sculpture invites participants to test their skill at "leaping the dips" on a copper model of the world's oldest operating roller coaster. The project's aesthetic draws from a practice certainly much older than the roller coaster: teenage rebellion, and the ensuing adult panic over the activities of "kids these days." Marbles roll over tracks and supports that are fashioned out of soldered copper wire. The tracks feature dips that cause the marbles to lift off the track and crash back down, as was possible in early roller coasters without up-stop wheels on the underside of the track. Take care in the placement of your marble not to cause the marbles to completely fly off the track! The dips are fitted with sensors that drive an algorithm in Max/MSP for giving aural feedback and a cultural experience to the users.

VR Experiences: waVR, Glowsualizer

Two projects exploring the limits of musical and artistic applications for virtual reality. waVR is an interactive ocean experience that lets you make music by making waves with arm movements, and allows you to explore the depths of the ocean to experience whales with beautiful underwater binaural recordings. Glowsualizer is a general music visualizer that displays frequency and loudness information with vibrating, glowing, rainbow strings.

The Precipice of the Uncanny Valley

Timbre mimicking is the development of algorithms for imitating the timbre of existing sounds. It's often used to recreate known sounds, like those of acoustic instruments, using new synthesis techniques. I used genetic algorithms to mimic the timbre of a target sound using granular synthesis with a source sound. The algorithm breaks the source sound into short grains. Then, it rearranges them randomly in order to generate a population of organisms — estimate solutions that approximate the target sound. The organisms are evaluated for how well they mimic the target sound, or how high their fitness is. Organisms that perform well are kept, mated, and mutated over time. After many generations, the population evolves to have a high fitness, and the organisms mimic the target timbre very closely.

Inter-String Time Delay Zither

The Inter-String Time Delay Zither is a plucked string instrument that changes its sound based on how fast you pluck it. Its strings are arranged into note pairs (groups of two strings that are tuned to the same note), and using a system of pickups under two bridges, it detects the difference in pluck time for the left and right strings of each note pair. The strings’ vibrations are picked up with piezos and routed through some audio processing in Max/MSP, where the inter-string time delay is used to drive audio effects like beating and distortion. The interaction of manipulating sound via the speed at which you pluck each note thus affords an additional level of control beyond those present in a traditional zither.


Chorest (chord forest) is a world populated by glowing strings, which grow and create sound based on your voice. The world remembers the changes you make and even shows you ghosts of your past actions, which can be heard and viewed from top-down, third-person, or first-person perspectives. This work was a precursor to my later work on virtual reality.

UC Berkeley


NoteScript is a domain-specific language for quickly writing down melodies and hearing them back. My team and I created constructs for notes, chords, rests, rhythm, articulations, keys, transposition, and functions with arguments. We desugared some constructs to a core language of chords, rests, and rhythms, then compiled this core language to ChucK to synthesize the sound. The language is capable of playing any number of parts, each using a different oscillator and performing at a different tempo, at once.

Adventures in Patchblocks

I created a series of patches for musical exploration on small interlocking synth hardware blocks, and documented my learning process and the new control gestures I created on a Tumblr blog. Programming for the blocks involved a combination of a high-level Max/MSP-like visual programming language and creating new modes of operation by programming in C. Two of the gestures I created are using a knob to ‘flick’ a parameter with inertia, and holding down a button to cause a change over time. I also ran a series of experiments where I subjected new users to the hardware blocks to gestures of varying complexity, documented their exploration process, and reported my findings on the blog.

Remix Novelty Ranker

The Remix Novelty Ranker is a suite of unsupervised machine learning algorithms that rank a particular music label’s remix releases based on how novel they are when compared to their respective original mixes. The algorithms used include k-means, gaussian mixture models, kernel density estimation, and principal component analysis. Feature vectors for songs are formed using music information retrieval techniques to obtain rhythm and pitch histograms, and also use the mel-frequency cepstral coefficients as a measure of timbre.

The Melody Stochaster

The Melody Stochaster is meant for playing stochastic, or random, melodies, that are based around a melody you feed it. These melodies are played back with a timbre that randomly moves through a space of square, saw, and triangle waves. However, you can also play the instrument like a traditional synthesizer using this random timbre movement.