1) The author tried to create evolutionary music by generating intermediate 10 second audio samples that moved from an initial sample towards a target sample using different arrangements of notes, but the initial attempts failed to produce good results.
2) The second attempt used Python for its audio libraries but a homebrew evolutionary algorithm still only generated noise and got stuck in local minima.
3) A third try using a genetic algorithm library still failed with the program terminating early due to average fitness, likely because the author lacked knowledge of music theory needed to evaluate fitness.
2. What was I trying to do?
● Start with a 10 second sample of audio
(“target”)
● And a bunch of “notes” (arbitrary samples)
● Generate a series of intermediate 10 second
samples moving towards the target
– Using the “notes” in different positions
● Play the intermediates
● (Profit!)
3. 1st try: Go
● Really, really fast
– I thought this was useful
● Really, really hard
– Library support is crap
● No audio handlers, generally lacking in
libraries
4. 2nd try: Python
● Really, really easy
– Built in wav support!
● NumPy for the win
– http://www.numpy.org/
– Blindingly fast
● Scikits.audiolab also for the win
– http://cournape.github.io/audiolab/
– Audio file → numpy array
– Also plays stuff (patch for record heading upstream)
5. 2nd try: Python
● But, it didn't work
– Homebrew evolutionary algorithm
– Generated lots of noise
– Hit lots of local minima
● Did find the University of Iowa Electronic
Music Studios
– http://theremin.music.uiowa.edu/MISpiano.html
– Massive note recording library
6. 3rd try: Python (with genetic
algorithm)
● Plugged in inspyred
– http://inspyred.github.io/
– Looks not bad
– But, hard to use
– Not sure why it's breaking
● “Terminated due to average_fitness_termination”
7. Reasons for failure
● Don't know any music theory
– Noise is confusing
– To quote Ben Goldacre "I think you’ll find it’s a bit
more complicated than that…"
– i.e. I don't know why, or enough to know where to
look next
8. Conclusions
● Nice idea, but I can't get it working
● Good to try, learnt a few things
● Anyone got any better ideas?