Investigation of Genetic Algorithm Methods using Audio Output
Matthew Thompson
Introduction
Genetic algorithms use feedback resulting from evaluating data sets to optimize these data sets for the best performance as defined by the user. The main data
processing is done in LISP. The creation of audio files is done using Csound. A simple shell script serves as a frontend.

Background
A genetic algorithm is a method of optimizing a data set by taking the existing set and combining desirable traits of members of the set. In this project, the goal was to
create a data set which resulted in an acoustically pleasing melody.
The initial data set used for testing is composed of randomly generated values. These are unlikely to sound particularly good, but there will be portions of the melodies
generated that are desirable. By crossing set members that have desirable traits, the resulting member should create a melody that is superior to its �parents.�

Basic List Crossover Method:
Parent 1
Parent 2
crossover point
Child 1
Child 2
Methodology
Because this project was an investigation into various forms of genetic algorithms, the same basic program style was run using many different types of genetic algorithms. The algorithms differed in data structure, crossover method, and mutation method. Data
was collected on the improvement of the data set over a repeated number of trials for each different algorithm. 
Figure 1: A screenshot of the command-line interface of
the program. Output is produced by Csound as it parses the data into an audio file. Input is then entered by the user regarding the user's opinion of the audio files produced.
This input is used to determine which data set members will be used as parents in the reproduction function. 
Matrix Crossover Method
Parent 1
Parent 2