August 12, 2004
Use the Aharmony Java application to evolve a collection of songs.
Under many Java installations, you will be able to start up Aharmony simply by double-clicking the jar. Otherwise, execute
java -cp Aharmony.jar com.revfad.aharmony.Mainat the command line.
Our evolutionary algorithm acts on a collection of neural networks that have in turn been used to produce the songs. The user's musical tastes serve as the fitness function. We use single tournament selection, dividing the population into groups of four. As a user, you see each of these groups as a windowful of songs: A, B, C, D. The two losing members of each tourney are replaced by the children of the winners. The children are produced through uniform crossover and mutation.
Each note is produced by feeding the last two notes played back to the net. This arrangement has a strong tendency to get the net's output stuck at a fixed point. We feed the network a random value and a sinusoidal value that varies with the number of notes produced to help keep it from getting stuck. The influence of the sinusoidal value is evident in alternating runs of notes within the songs.
I am not altogether satisfied with the performance of the neural nets so I will investigate other automata for the next major release.
Aharmony requires JDK 1.4 or above.
The source code for Aharmony is available in the source directory. An Ant build.xml file is included.
David Faden
As of August 12, 2004, I am on the lookout for full time employment. A portfolio of my work is available at http://homepages.isunet.net/faden/david/portfolio.html.
This work is licensed under the Creative Commons Attribution-ShareAlike License. To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/2.0/ or send a letter to Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.