MUS 256A, Stanford University
HW 3 (Milestone 3)
Video Demo: LINK
The Terryng Automata is a generative sequencer that combines a Turing Machine eurorack module and elementary cellular automata with a twist. Cellular automata are generally a "zero-player game" that starts from a single cell and evolves based on a simple set of rules. The Terryng Automata takes this model and makes it interactive and musical. The user can co-create alongside cellular life catching cells and looping them with "infinite tape." This interaction generates sequences and visual patterns sonifying cells into beats. The different patterns of notes and rhythms can be perfect crystal lattices or chaotic and unpredictable.
Yellow cells are Terryng looped cells. Pink cells are Automata-evolving cells. Cells continually come to life or die off. Time always moves forward. The music never stops.
- Use the mouse to interact with the Terryng Automata
- Right click or hit space to toggle the menu UI
The most challenging part of making this generative sequencer was coming up with algorithm for cellular automata
sonification. I spent three days just trying to think of a way to turn a grid of cells into sound.
I finally stumbled across eurorack modules, making sound purely through variation in control and voltage. I
discovered the Turing Machine eurorack module while researching generative sequencers. This module was quite
simple yet clever in its use of binary encoding to create generative sequences and loops. It can run fully
autonomous or be manipulated with user input.
After spending a couple more days hammering out my own Terryng Automata algorithm, building everything else was pretty smooth. I accidentally built the entire model 3 times in C++, C#, and finally ChucK but each time, my implementation got more efficient.
The hardest part was recording the video demo since there's so much sound to explore so a lot of my recordings were way too long as the sequencer is unpredicatable but still a lot of fun to use.
Game of Life - http://www.scholarpedia.org/article/Game_of_Life
Elementary Cellular Automaton - https://mathworld.wolfram.com/ElementaryCellularAutomaton.html
Elementary Cellular Automaton C++ - https://rosettacode.org/wiki/Elementary_cellular_automaton#C++
Elementary Cellular Automaton Demo - https://devinacker.github.io/celldemo/
Turing Machine Eurorack Module - https://www.youtube.com/watch?v=va2XAdFtmeU
2d Terryng Automata (Mac)
Video Demo: LINK
I call it Terryng Automata. It's build off of two coupled algorithms, Elementary Cellular Automata and a Turing
Machine (a generative eurorack module inspired by the real Turing Machine).
I have the core functionality of everything working, and mostly it's just finishing features of filter
control, clock speed, a bit flipper, and fairly minor things. I want to integrate a bit of camera movement
or something to fit in more UI without jamming everything together. Currently it's only monophonic (I only use 8
out of 32 bits
to generate sound), but I'm not if I should or how to add more sound, outside of filters and stuff.
Fun Fact: I wrote the code three times, cpp for pseudocode, csharp then realized it wasn't tightly clocked, then chucK. Since there's no array syncers in Chunity, I got creative and bit packed my board array into 2 32 bit integers which I encode and decode like network packets.
The chickencer tutorial was kinda boring to follow, it was just a lot of copying code. But I will give it props
for being very novel and I got to see how to share global variables. I liked the layer of abstraction that was
presented over just a grid of 2 float arrays
concering pitch and gain. Working with the textures/animations were pretty straight forward and weren't too
difficult to manage.
In doing my sequencer research, I watched a lot of videos on hardware sequencers, most of which were buttons and knobs. I went down a rabbit hole of generative sequencers and thought these were pretty cool. I don't have any clear ideas for how I want to abstract my sequencer design in Unity but below are some of the cool and unique interfaces I came up with for a sequencer based on some of the research I did.