Example code for making Whitney Music Boxes in various languages (BASIC, ChucK, Flash AS2, HTML5/JS, perl, nyquist, processing, pyo, sonic pi, supercollider, syd)
JavaScript Pure Data Processing HTML Perl Visual Basic Other


This is a collection of examples of Whitney Music Boxes. Some of them are purely visual representations of Whitney's "Incremental Drift" concept. Some use the visual to trigger sounds, and some produce sound or sound files, only.

Whitney Music Box

The motion graphics used in these examples was developed and popularized by John Whitney (Sr), who described it in his 1980 book "Digital Harmony". Whitney's book contained example code in the BASIC programming language, written by Paul Rother.

Amazon has a listing for this book here:


The "Whitney Music Box", in which the spiral form of this animation is used to trigger closely related musical sounds was created by Jim Bumgardner in 2006. Jim's first blog article can be found here:


The processing/digital_harmony_examples directory contains ports of the sample code from the book. The programs have ported in a fairly straightforward manner from BASIC to Processing.

  This directory contains the original BASIC examples by Paul Rother, intended for the Apple II.
The program "Column BC" is the basis for the animation in the Whitney Music Box.

  Sample ChucK version.

  Sample Flash versions which sync to pre-generated audio.

  Sample HTML5/Canvas version

  Sample MIDI effect w Jitter preview for Max for Live.

  Sample MIDI versions, generated by the perl script in the /perl directory.

  Sample program for Nyquist, a lisp-based language. Very elegant!

  Audio patches for Puredata.

  Scripts to generate MIDI sequences that match the animation.

    Ports of Paul Rother's original sample code from the book.

    Versions which trigger MIDI instruments (both rwmidi and midibus libaries)

    Versions which talk to PD (puredata) and response to OSC.

    Versions which use the BEADS library

    Versions which generate visuals only.

  Sample pyo version.

  Sample versions for Sonic Pi contributed by David Rees

  Sample versions in Supercollider

  Patch for Jim Bumgardner's Syd software synthesizer.

All code licensed under a creative-commons (Attribution-NonCommercial-ShareAlike) 3.0 unported license.

If you'd like to help maintain this code, drop me a note. - jbum