¬¬ index  ¬¬ research  ¬¬ publications  ¬¬ development  ¬¬ blog  ¬¬ music  ¬¬ contact

My PhD thesis (available here) is about controlling sound synthesizers using evolutionary computation. There are two main parts to this project: first, by defining computational measures of distance (conversely, similarity) between sounds, we can run non-interactive EC to match target sounds. Second, we can run interactive EC, where fitness and/or selection are determined by the user. Both of these ideas have been tried plenty of times, but there are still lots of questions to be answered.

The main contributions are these. We define a new, low-dimensional, highly semantic representation for sounds, based on research in the fields of psychoacoustics and music information retrieval. We derive a distance measure from it, and show that it is better correlated with human judgements of similarity than other computational distance measures. We use it to study the search space in all sorts of ways that are impossible otherwise. We then compare its performance to that of other fitness functions, adding a stronger experimental approach than is typical in this area. We apply the standard EC measures of problem difficulty to this domain for the first time.

We introduce a new EC operator, a user-controlled interpolation between members of the population, to allow fast audition of many individuals and help alleviate the fitness evaluation bottleneck. We also introduce the technique of background evolution, running a non-interactive evolution in parallel with the interactive one, in a type of multi-deme arrangement. We define a set of more or less objective measures of success on the task of matching a target sound, and use them to run controlled usability experiments comparing these new EC techniques (and variations on them) with typical interactive EC and non-EC methods of controlling synthesis. Again, this is an experimental approach lacking in much existing interactive EC research.

This operator -- called "sweeping" in the thesis -- is demonstrated in 1- and 2-dimensional versions here and here. Compare the interaction with a discrete population here.

I'm a fan of the idea of making experimental software available for reproducibility. This contains a C library for comparing sounds; a set of C++ programs for running EC non-interactively; and a set of Python scripts and bits and pieces for running experiments of various types. Requires cli-dssi-host, analysi-dssi (both here), libsndfile, libfftw3, liblo, Python (2.4+), GAlib (2.46), and DSSI. This is the GUI software I used for the interactive EC experiments. Requires the above software, PyGTK, and probably some other stuff, and is likely to be difficult or impossible to run other than under UNIX (Linux or OSX). All of this is experimental in both senses of the word, and the copy hosted here isn't always up-to-date, so please mail me if you have any problems with it.