djNEAT
djNEAT
Introduction
djNEAT is a system for dynamically generating sound effects by combining techniques from both neuroevolution and sound synthesis. The process is guided by user interaction — ratings are given by the user to the sound effects that the system generates in order to produce better effects in subsequent iterations. I developed this system in conjunction with Brendon Moore as a term project for the course CAP 6938 — Topics in Neuroevolution and Developmental Encoding, which was taught by Dr. Stanley. The program is an application of the NEAT algorithm created by Dr. Stanley.
Here are some notable features:
- Audio synthesis — Create new and interesting sound effects.
- Portable NEAT — NEAT code is platform neutral and should compile on GNU/Linux, Mac OS X, and Microsoft Windows platforms.
- Network visualization — View neural networks using the GUI.
Download
Available here for Linux: Download.
Installation
Follow these steps to get djNEAT up and running.
Dependencies
There are a few external library requirements, so download and install these libraries if they are not already on your system:
- Boost — Download version 1.33 or higher here.
- FFTW — Download version 3.1 or higher here.
- Qt — Download version 4.2.1 or higher here.
After installing Qt, be sure to set the QTDIR environment variable. For example,
setenv QTDIR '/usr/local/Trolltech/Qt-4.2.1'
in csh, or
QTDIR='/usr/local/Trolltech/Qt-4.2.1'; export QTDIR
in bash. You can add these commands to your start-up shell file, such as .cshrc or .bashrc, so they get executed each time you login.
There are also a few internal library requirements. These libraries are included in the download for convenience but are otherwise independent of djNEAT.
- TinyXml
- STK
- ws_tools — Library for file name parsing, directory traversal, random number generation, etc.
- nn_view — Neural network viewer that uses a simple XML format.
Note that STK under Linux requires the ALSA library.
Compiling
Here are the directions for Linux at the command-line. Follow these steps.
- Download djNEAT.
- Extract the file and enter the directory:
tar -xzf djNEAT.tar.gz
cd djNEAT - Configure and compile the code:
./configure && make
Running
Here are the directions for running the program.
- Start the program:
./gui/djNEAT - Press
Runto generate a list of audio tracks. - Click a track and press the
Playbutton to listen to it; give ratings to each track through the side menu. - Press
Runagain to generate a new list using your track ratings. - View a neural network by clicking on an audio track and selecting
View->Championfrom the top menu.
Change the parameters for the system by selecting NEAT->Edit parameters from the top menu. Try these settings:
- Under the
Populationsettings tab, selectGaussianforActivation function. - Under the
Mutationsettings tab, enter.3forWeight update probability. - Under the
Mutationsettings tab, enter.3forNew node probability. - Under the
Mutationsettings tab, enter.4forNew link probability.
Click OK after making all changes.
Note that you should change the mutation probabilities in the order given above since the sum of all the probabilities must be 1, e.g., you can’t raise the link probability if the total probability is already 1.
If the system is taking too long after hitting Run to generate new tracks, try lowering the Audio length in seconds field, found under the DJ settings tab.
Screenshots
Here are some screenshots of the program during a sample run.

djNEAT user interface.

Neural network representation of a genome.

Dialog window for changing NEAT parameters.