August 19, 2015



Oubliette is a computer game that involves players traversing a complex dungeon with advanced monsters.  The player needs to defeat their adversaries and other obstacles in order to acquire the treasure that is hidden in the depths of the dungeon.  The dungeon and its monsters learn and adapt to the players skill sets, as the player becomes more powerful, the dungeon becomes more complex and the monsters become more intelligent.  Artificial intelligence algorithms are used to create more complex levels of the dungeon, and monsters become more competitive to the players skill sets.  The players gain strength and skill by defeating monsters, avoiding poison, and finding hidden treasure.



I am currently developing a new application called, “TuskTM“, which creates music compositions, baed on existing melodic sequences.  This uses an artificial intelligent process called, “cellular automata” or “CA”, where a user-created melody is propagated using a rule-based system.  The software creates a piece of music and is played back to the user.  Depending upon the rule system and initial conditions used for the CA routine, the music can go back and forth from a normal melody or harmony to a more chaotic structure.

The following describes how cellular automata can be applied to music composition:

I have an affinity for dissonance and ninths have always attracted my attention. I thought it would be interesting to come up with a piece that concentrated on major ninths, but toggles back and forth from minor to major to augmented ninths. Here is an example using ninths in combination with Rule 30 (a one-dimensional binary cellular automaton) and the twelve-tone technique. Rule 30 produces complex patterns from simple rules. In this example one-dimensional arrays will be calculated using the properties cellular automaton and only two states is considered. The two states are represented as the directions: up or down (1 semitone up and 1 semitone down, respectively). At specific time intervals each cell takes on a new state based on its current state and the state of its two neighbors along a one-dimensional array. Rule 30 represents a set of rules as to how these transformations take place. The following table describes the steps taken by Rule 30. Let down = 0 and up = 1.

Tonal Pattern 111 110 101 100 011 010 001 000
New Tonal State 0 0 0 1 1 1 1 0

For visualization of the states and pattern of tones: Let 0 = grey and 1 = blue. The following is a representation of how the state changes take place.

Applying Rule 30 the following pattern starts to emerge, and after 12 cycles of automation the pattern looks like this.


Start with an initial condition of a twelve-tone row populated with major ninths:

P0 = C D E F# G# A# C# D# F G A B (0 2 4 6 8 10 1 3 5 7 9 11)

Calculating the 12 primes, 12 retrogrades, 12 inversions, and 12 retrograde inversions, the following matrix is created:

0 2 4 6 8 10 1 3 5 7 9 11
10 0 2 4 6 8 11 1 3 5 7 9
8 10 0 2 4 6 9 11 1 3 5 7
6 8 10 0 2 4 7 9 11 1 3 5
4 6 8 10 0 2 5 7 9 11 1 3
2 4 6 8 10 0 3 5 7 9 11 1
11 1 3 5 7 9 0 2 4 6 8 10
9 11 1 3 5 7 10 0 2 4 6 8
7 9 11 1 3 5 8 10 0 2 4 6
5 7 9 11 1 3 6 8 10 0 2 4
3 5 7 9 11 1 4 6 8 10 0 2
1 3 5 7 9 11 2 4 6 8 10 0

notice there are no invariant forms. The next step is to choose some interesting forms. Lets choose P5 and the inversion, I5.

P5 = 5 7 9 11 1 3 6 8 10 0 2 4
I5 = 5 3 1 11 9 7 4 2 0 10 8 6

For a set class with “x” number of pitches, if any number n appears x times in the body of that set’s normal matrix, then T(n)I will contain the same notes as the original set. For P5 and I5 have x = 12, it turns out that every number appears 12 times, meaning that T(j)I where j = 0, 11 should consist of the same pitches as the original. This property is referred to as combinatoriality.

Now lets apply these two rows to the pattern we created with Rule 30. If we take P5 = 5 7 9 11 1 3 6 8 10 0 2 4 and assume that 5 to 7 ( or 9 to 11, etc…) represents a major ninth (14 semitones or an octave plus a second), then every blue square will generate an augmented ninth (or interval with 15 semitones) and every grey square will generate a minor ninth (13 semitones).

Here is how it works. The following represents the first row of the pattern that was generated using cellular automation with Rule 30.


The series P5 original (rows 1 and 3) + I5 original (rows 2 and 4) look like this:


and after the first row of automation using Rule 30 has been applied to the first interval of each measure of P5 original + I5 original, and hence, transforming the original piece to P5 automated + I5 automated. The following represent the new rows of music, the modifications in the interval structure are shown in blue and grey:


The P5 + I5 melody should be used as a foundation for building a more detailed harmonic structure. Or, you could just improvise around the foundation of the ninths, etc…




QuasarTM is a software application that involves the use of Wang tiles to create periodic and aperiodic patterns.  Some examples of an aperiodic patterns are quasicrystals or Penrose tilings.  Wang tiles can also be used to simulate complex molecules, this same process could be used to create fractal-like 2D textures, or melodic lines for a piece of music.  For example, fractals can be created by an initial pattern then a method can be used to propagate the pattern in a self-similar manner.  This software program, “Quasar”, is used to create various types of patterns, with application in the graphics industry, movie industry, and in music composition.  The use of artificial intelligence is critical in producing the patterns that are created and propagated.  This project is currently being developed for the motion picture industry as a 2D application, and will also be available in the near future in a light-version for mobile devices.




Orbit uses a genetic algorithm to optimize for a set of pre-determined quantitative dissonances that are derived from set theory. Using combinatorial techniques, six membered note sets are chosen for the calculation, and later assembled into a 12-tone set. These sets are iterated until the desired dissonance is obtained. Then a tone is chosen to act as sort-of a center-of-mass, and the dissonant sets are places around this tone, giving a quasi-tonal sound to the piece of music. A two-dimensional Tonnetz is used as a map for calculating the melody. Using some elements of group theory the melody is iterated many times using the genetic algorithm to find an optimal value of dissonance with respect to the above sets. Orbit can be applied to many fields such as background music for the motion picture industry, video games, advertising, and simply listening to the music.





Dynamix is a video game that uses several elements of AI.  Specifically, this game uses steering, cellular automata, and finite state machines.  These elements of AI are used to extend the user-defined patterns and bring them to life in motion and sound.  The strategy is to create 2D designs that eventually get translated to colorful designs and musical compositions.  A balance between position and velocity is used to map the melodic contour. DynamixTM is being developed as an app for mobile devices.


1 thought on “Projects

Leave a Reply

Your email address will not be published.