Difference between revisions of "Evolutionary Music"
Line 27: | Line 27: | ||
-[https://github.com/ilknuricke/birdsong_generator_CPG Matlab implementation of birdsong simulation] | -[https://github.com/ilknuricke/birdsong_generator_CPG Matlab implementation of birdsong simulation] | ||
+ | |||
+ | -[https://ccrma.stanford.edu/software/snd/index.html Snd homepage] |
Revision as of 19:06, 17 April 2021
Week 2 Update
This week was mostly about settling on a feasible and well-defined project. I'm interested in both evolutionary models and birdsong, so I've been leaning towards something that can combine both. The tough thing when it comes to designing an evolutionary model of music production is coming up with a fitness function. A genetic algorithm needs access to some way to map a genotype to a fitness value, and it's not clear how this can be done when a genotype is a piece of music. What makes good music? Between two snippets, how can you decide which is better?
Well, one thing you can do is ask how similar the piece of music is to pieces of music you know are good! There are more quantitative metrics of similarity than there are of quality. But rather than measure similarity directly, you could also get to it by asking how easy it is to tell the generated piece from one of the good pieces. This is the logic behind GANs, or generative adversarial networks. A GAN consists of two systems: a generator and a discriminator. The job of the generator is to take a set of data and try to produce more examples of that dataset. For instance, you might feed the generator a punch of Picasso paintings and ask it to generate more. The job of the discriminator is to take one of the generator's outputs alongside an example from the original dataset and try to determine which is which. The two systems encourage each other to get better, and eventually the goal is to have the performance of the discriminator fall to just random chance. At that point, there's no way to tell (from the computer's perspective, at least) the generated outputs from the original dataset. The canonical GAN is used on images, but Stanford's very own Chris Donahue helped develop the WaveGAN, which works over raw waveforms.
I'm interested in seeing if I can get WaveGAN to work for birdsong. I'm also interested in seeing if evolving the weights of WaveGAN (using the discriminator error rate as the fitness function) can achieve comparable results to the canonical learning algorithm, but given the finicky-ness of GAN training, that might need to be a project for another day.
In the next week I'm hoping to lock down a dataset of birdsong (there seem to be multiple options!) and start digging into the WaveGAN paper. I haven't ever worked with GANs before, so I'm looking forward to it!
Week 3 (Mini) Update
Just starting off the week with a bunch of links related to birdsong that I'm following.
-A paper on an evolutionary model of birdsong
-A paper modeling syringeal vibrations in songbirds
-An old MUSIC220A song on birdsong
-A pitch tracing application (for cleaning up birdsong field recordings)
-Bill Schottstaedt's page on music generation (including birdsong)
-A Csound synthesizer for birdsong