This project uses aleatoric processes to produce generative music and poetry from 3 predefinied collections of musical tones and word. The implementation of chance within pattern is the primary design consideration. I have been very intrigued by the correspondence drawn between the Greek musical modes and the elements of alchemy in ancient music theory, philosphy, esotericism. By utilizing javaScript to drawing a synesthetic parallel between words relating to the elements of air, water, and earth along with their corresponding musical modes (lydian, dorian, and mixolydian respectively) this work paints an imaginative realtime landscape using three panels of text and three associated sine wave oscillators.

Some works which inform the realization of this project are the algorithmic poetry of Margaret Masterman from the Cybernetic Serendipity show (ICA London, 1968) along with the procedural word landscapes of games researcher Ben Spalding. The writings of Kyle Gann were helpful in locating fitting small integer fractions for populating the arrays with intervals in just intonation. The chance operations which inform the music John Cage are a tremendous inspiration. The choice to strip away all visuals other than the textual component was informed by the works of the Fluxus movement and conceptual art in general. I stripped away all unnecessary and baroque stylings so that the concept might carry the work.

Click Here :


Working with Wed Audio API for sound was definitely a bit of a struggle. This project is still not functioning on mobile devices due to precautions implemented in mobile browsers. These setbacks could be overcome in a new iteration that includes an ontouchend event to begin the audio. Variable scope between functions, setintervals, and settimeouts took some time to sort out. The inability to return variables from setinterval led me to put an entire synthesizer in each callback function so that the words and tones might always be associated with the same random number being called. Initially, the sine oscillators produced very harsh clicks when moving from an ampltude of 0 to 1. By creating a gain node and attaching an ADSR envelope to smooth these transitions these artifacts were brought under control. Nesting setintervals and settimeouts within one another was the biggest revelation while working on this project. I was able to achieve some buildup and release of complexity using setinterval to establish a brief pattern and clearinterval to make space for a new emergent pattern to spawn and grow.

View a .txt file of the source code