55 comments

[ 8.7 ms ] story [ 81.6 ms ] thread
Very nice!

I remember Native Instruments had a Game of Life-based drum pattern sequencer in one of their Reaktor packages.

Yup, it's called Newskool. Awesomeness in a box!
This seems like a great idea for background music for a game. Repetition shouldn't be a problem at least.
Equilibria can occur - run Flow's program for a minute or so: http://news.ycombinator.com/item?id=2454842
Indeed. Another fascinating approach to generative music is to code it out, and add some randomness, like this guy who does a pretty good stab at imitating Keith Jarrett: http://homepage.mac.com/digego/study_in_keith.mov (25MB mov file)

This really shouldn't have the problem of repetition. You even make events in the game affect the music, to make it less monotone, and add to the mood of the game. It has been tried, but as far as I know no one has actually published something like this yet.

> You even make events in the game affect the music

This is really what makes it _very_ interesting in my opinion. The whole super compressed non-looping music is nice, but having music that responds to your actions in real time can be amazing. More than having music for each level you can have music for each bad guy and even better how the bad guy is "feeling". Speed up the sequencer when they are mad. Start out with a bunch of cells and remove them as a way of showing the health left.

Really pleasing sound and interesting idea!
Awesome; only suggestion I might add is a way to step back - or go to beginning (without copying the link I guess)
This is pretty neat, but the idea is by no means new:

http://www.youtube.com/watch?v=5u5vBAMcLUE

Using cellular automata to generate music may not be new, but I haven't seen this specific method used. Nor have I seen anything that compares to the way it subtly changes as it develops while still maintaining a steady beat without resorting to resetting the pattern as in your example. (Correct me if I am wrong though; I'm not a musician.)
This is the classic one from 1990 I believe: http://tamw.atari-users.net/camus.htm

I do think the one linked in this post is a particularly nice one, and yeah the way it develops while maintaining a beat I think is fairly unusual.

Amazing.

It would be really cool to be able to change the number of rows and columns and also the instruments and tones/chords for each row/column.

It's fun opening more than one browser tab and having more than one of these going at once. I refer you to my comment about needing to be able to change the instruments.

See also: Wolfram's Tones

http://tones.wolfram.com/

The problem I have with WolframTones is it tries too hard to sound like traditional human music and fails pretty badly at it. Procedurally generated music systems that don't attempt to emulate previous kinds of music fare far better (including the original link). An older example would be the original drum machines and keyboard synthesizers -- they were originally meant to function as affordable replacements for real instruments (a drum kit, piano or string quartet) and sounded pretty terrible when used in that fashion. Only when people started viewing them as instruments in their own right did they work well (and create previously unheard sounds and genres in the process).
This is quite fun to play around with! Many of the other CA-based music generators I've seen have sounded rather atonal and random compared to this one. Here's one I made using symmetric initial conditions (doing this makes for somewhat interesting visual patterns as well): http://www.earslap.com/projectslab/otomata?q=0q1q2q3q8w8y8p8...
That's partially the result of the chosen scale. Run a set of "up" arrows from the top left to the lower right and it will play the scale. Then go back to just playing around, and you'll hear how that choice colors the results. A different scale choice would have different results. This would combine well with bajsejohannes's idea; you could exert some control over the scale while letting the automata run free.
(comment deleted)
I hope this gets made into an iphone/android app. I would definitely play around with this on long trips.
Thanks a lot - this is the first time I actually create a melody that sounds good and it is sooo easy
Is there any way to interact with this programmatically via SetVariable calls made in javascript? I have some ideas for alternate input methods...
A surprisingly short loop:

http://earslap.com/projectslab/otomata/?q=3z3o43503s

and some lame attempt at "chaos":

http://earslap.com/projectslab/otomata/?q=1h4o2n

(though of course these are just finite state machines and they all loop eventually)

http://earslap.com/projectslab/otomata/?q=8g804u08022p4q4s

I like this one because the two left-right components switch the period of the beat on the 5th and 9th rows (themselves also alternating pitch and period) while not breaking the base beat.

I do with the "make link" would let you 'bookmark' a phase: the way it started out went through some cool sequences before stabilizing into this.

(comment deleted)
I know these kinds of comments are typically frowned upon... but I can't help it.

THIS IS FREAKING AWESOME!

As a professional musician (and computer engineer) I can pretty much immediately pick up/follow/regurgitate nearly any musical pattern... which leads to 99.9% of music boring the crap out of me. But with this after clicking a few dozen times randomly... the music actually sounds great and doesn't bore me... it's soothing even!

Math is beautiful.

What part of music theory is applied to something to like this which makes all of the tones sounds very nice with each other?
It seems to be using the pentatonic scale, which is generally easy to deal with. It is also quite limited though, with only 5 pitches available out of the standard 12 in an octave.
All 12 pitches would sound horrible, you need at least a diatonic scale.

Q: Which scale is used in this? How did you come up with it? A: D A Bb C D E F A C are the pitches. I used the scale some models of Hang drums are tuned into.

Changing the scale could be a nice feature...