A musically interactive and evolutionary
"zero-player game"

"Incredibly versatile and beautifully balances user control and randomness" - Julia
"I have no clue how this exactly works but it is so mesmerizing to both watch and listen to–so fleshed out and amazing" - Anthony
"Every screenshot is like its own abstract art piece" - Alyssa

description

A "Terryng Automata" is a generative music sequencer that twists together the logic of a Turing Machine (TM) eurorack module with Elementary Cellular Automata (ECA) mathematics. Cellular automata, generally a "zero-player game," start from a single state of cells and autonomously evolve and die based on a simple set of rules. The Terryng Automata takes this model one step further to introduce interactivity through loop controls and musical feedback. Co-create alongside cellular life with limitless combinations of Turing machine tape. With (un)predictable pseudo-random evolution, no patterns are quite the same; organic human interaction alters traditional ECA to create something completely unique. Terryng Automata is a collaborative exploration of finding, building, and sonifying unique rhythms and sequences—some perfect crystal lattices and others unpredictable and chaotic or dead.

8-Step Sequence Loop alongside ECA Rule 110
Figure 1: Terryng Automata Running an 8-Step Sequence Loop alongside ECA Rule 110

Terry Automata uses a 16 row x 33 column grid of cells for processing. Row 1 is the current generation of cells and previous generations of ECA move downwards. Yellow cells are Terryng looped cells that employ Turing Machine register shift right logic. Pink Automata cells on the other hand will evolve according to the current ECA rule number which can be changed in the top right corner. Learn more about Elementary Cellular Automata rules here.

Changing the Loop Size on the Fly for Different Patterns
Figure 2: Rapidly Changing the Loop Size Over Time for Different Patterns

sound generation

Everything in Terryng Automata is binary-encoded and thus everything is simulated with bits. An alive cell is on, 1 and a dead cell is off, 0. This binary mapping, in addition to generating visuals, controls the 2 main sounds, a kick (the beat) and a supersaw (the pitch).
kick
synthesis - The kick sound is emulative of the Roland TR-808 kick drum. Digitally synthesized and recreated in ChucK, this is made by down sweeping a sine wave, adding noise, and having a very sharp attack in the ADSR envelope.
trigger - The kick is triggered every time the top leftmost cell comes alive.
supersaw

synthesis - The supersaw is synthesized in ChucK by stacking 5 sawtooth oscillators together. The first oscillator acts as the center fundamental frequency (F0) and subsequent oscillator pairs are slightly detuned in frequency symmetrically above and below F0 to create a supersaw chorus effect (F0 ± ΔHz). The farther away from F0, the lower the gain of the oscillator. My supersaw is not phase-locked and thus, has cool artifacts :D

pitch - Supersaw pitch is determined by the first 8 cells on the top left. These 8 cells binary encode an 8-bit integer (0-255). Note that this number is binary encoded from right to left, Least Significant Bit to Most Significant Bit (Figure 3). This 8-bit integer is scaled with PITCH (Figure 2: bottom left) which has a continuous range of 1.0 - 4.0, giving the supersaw a pitch range of 0.0 - 1020.0 Hz. Additionally, FILTER (Figure 2: bottom right) applies a lowpass filter to the supersaw for manual effects.

11100111 in automata bits
Figure 3: First 8 Cells on the Top Left DETERMINE Pitch Frequency
(Right to Left: LSB-MSB) binary: 11100111
Integer DECODING: 231
terryng loop
Figure 4: A Binary-Decoded 8-bit Integer loop Sequence
(Bottom To Top, Oldest to Newest) 1, 2, 4, 8, 16, 32, 64, 128, 1


Terryng Automata

download


controls

  • Use the mouse to interact (ECA Rule, Pitch, Loop, Filter)
  • Right click or hit [space] to toggle the menu (Clock Tempo, Reset)

acknowledgements & credits

This project was made in CCRMA Music 256A: Music, Computing, Design taught by Professor Ge Wang
Terryng Automata is built in Chunity (ChucK + Unity) and prototyped in C++.

References and resources that made this project possible:
http://www.scholarpedia.org/article/Game_of_Life
https://mathworld.wolfram.com/ElementaryCellularAutomaton.html
https://rosettacode.org/wiki/Elementary_cellular_automaton#C++
https://devinacker.github.io/celldemo/
https://www.youtube.com/watch?v=va2XAdFtmeU

tags

audiovisual programming, algorithms, mathematical theory, chuck, unity, sequencer