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.)
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.
Starting working on a JS version so I can use it on an iPad. It's pretty rough right now, but on its way. Need to add in the html5 audio and more complete collision detection. http://www.zmitri.com/static/automataJS.html
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.
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.
made this one by playing with the url itself. interesting format, each note is two characters describing X position and Y+direction it looks like so XYXYXYXY.
I built a table of the Y, the X are just 0 indexed numbers
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.
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.
Comments
If the grid is numbered
1 2 3 4 5 6 7 8 9
10 11 12 ...
I had to investigate the primes
Primes less than 20
all up: http://earslap.com/projectslab/otomata/?q=1q2q4q6q1t3t7t
all right: http://earslap.com/projectslab/otomata/?q=1w2w4w6w1y3y7y
all left: http://earslap.com/projectslab/otomata/?q=1r2r4r6r1i3i7i
all primes up : http://earslap.com/projectslab/otomata/?q=1q2q4q6q1t3t7t0o4o...
all right : http://earslap.com/projectslab/otomata/?q=1w2w4w6w1y3y7y0p4p...
all down : http://earslap.com/projectslab/otomata/?q=1e2e4e6e1u3u7u0a4a...
So many ideas... there goes my Sunday afternoon...
On my setup it sounds better if I don't have too many notes going off on the same beat. Try:
http://earslap.com/projectslab/otomata/?q=0o1l2a3t584x6v72
to see what I mean
http://earslap.com/projectslab/otomata/?q=2e3e4e5e6e7u8s8h8z... Making things not only auditory appealing but visually appealing also. This one has some interesting patterns.
This was very interesting, look what I made after 5 mins of tinkering: http://earslap.com/projectslab/otomata/?q=06020n0j89796949
That was cool, but unfortunately it starts to loop pretty quickly.
"That was cool, but unfortunately it starts to loop pretty quickly."
Have you listened to modern pop music??? :D
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.
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.
Starting working on a JS version so I can use it on an iPad. It's pretty rough right now, but on its way. Need to add in the html5 audio and more complete collision detection. http://www.zmitri.com/static/automataJS.html
It's working decently now, same link as above, if you'd like to try it out.
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...
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.
And another: http://www.earslap.com/projectslab/otomata?q=0q0o88801y1f7b7...
That one is excellent - visually as well as auditorily pleasing.
In terms of interesting evolution I keep coming back to this one I just sort of randomly put together: http://www.earslap.com/projectslab/otomata?q=04046g043q515p3...
http://www.earslap.com/projectslab/otomata?q=0q2q4q6q8q0z2z4...
made this one by playing with the url itself. interesting format, each note is two characters describing X position and Y+direction it looks like so XYXYXYXY.
I built a table of the Y, the X are just 0 indexed numbers
http://www.earslap.com/projectslab/otomata?q=0q0q8r8r8888070...
another interesting one visually and acoustically
http://www.earslap.com/projectslab/otomata?q=0q0q8r8r8888070...
an otherwise impossible to construct (i suspect) beat.
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.
I want this as a VST.
This is a really great project! Here's one that I made: http://www.earslap.com/projectslab/otomata?q=1n204g7b7b6x6q4...
What a beautiful and fun idea.
Here's one I did that develops really nicely.
http://www.earslap.com/projectslab/otomata?q=062m4l6s8q2p610...
http://earslap.com/projectslab/otomata/?q=025q511184446t5j22
Is there any way to interact with this programmatically via SetVariable calls made in javascript? I have some ideas for alternate input methods...
Awesome; only suggestion I might add is a way to step back - or go to beginning (without copying the link I guess)
I hope this gets made into an iphone/android app. I would definitely play around with this on long trips.
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.
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!
I accidentally created my most interesting one the first time and lost it forever.
Some excellent work there, and interesting Supercollider projects too. Nice one!
Supercollider projects? Googled that, but I'm just getting the cancelled particle accelerator...
http://en.wikipedia.org/wiki/SuperCollider
click about on his website a bit..
http://earslap.com/projectslab/otomata/?q=06122n3x4j5d6o7t8q...
Very fun!
Really pleasing sound and interesting idea!
Thanks a lot - this is the first time I actually create a melody that sounds good and it is sooo easy
This is awesome!
I want this as a monome app.
There is some discussion about this app on the monome forum: http://post.monome.org/comments.php?DiscussionID=11648
http://earslap.com/projectslab/otomata/?q=8k1q5q6k