1D Cellular Automata Music

Wolfram's Rule 90

Fig. 1 - Wolfram's Rule 90



A cellular automaton is a collection of "cells" in a grid that have individual states and interact over a period of discrete time steps according to a predefined set of rules. The simplest kind of cellular automata are known as elementary cellular automata. These cellular automata lie accross only one dimension and have only two possible states: "on" or "off". Depending on the ruleset, a cellular automaton can reflect some very interesting behavior.


Of the "classic" rules of cellular automata there exist two that particularly stand out to me - Wolfram's Rule 30 and Rule 90. The time-space diagram of Rule 90 (Fig. 1) results in a fractal pattern which resembles a Sierpinski triangle and the time-space diagram of Rule 30 (Fig. 2) results in a chaotic pattern that is similar to what can be seen reflected in nature via the shell pattern of the Conus textile snail (Fig. 3).

Wolfram's Rule 30

Fig. 2 - Wolfram's Rule 30


I believe that the repeating patterns and the semi-structured chaos of Rules 90 and 30, respectively, could potentially offer an interesting source of data to drive an algorithmic composition. Using Matlab, I reproduced Wolfram's Rules 90 and 30. I then assigned each cell to a musical note made from enveloped sinusoidal pure tones on the C major scale. With each time progression of 0.2 seconds, I would play the notes of the "on" cells.

Conus Textile Shell

Fig. 3 - Conus Textile Shell


I have included the short samples that I generated using Rules 90 and 30. As you can imagine, Rule 90 resulted in a much more structured musical piece than Rule 30. Unfortunately, due to the fractal nature of Rule 90, the pattern will repeat itself and the music will then become redundant (and in my opinion boring). The chaos of Rule 30 solves this problem and shares the interesting (and beautiful) triangular character seen in Conus Textile snail shells.


I later used elementary cellular automata in structured music that varries the time between each note and introduces key changes. In this way I use a simple 12 bar blues progression and generate more conventionally sounding music.


Rule 90 Music:



Rule 30 Music:



Download Code