Skip to content

Categories:

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:

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 Run to generate a list of audio tracks.
  • Click a track and press the Play button to listen to it; give ratings to each track through the side menu.
  • Press Run again to generate a new list using your track ratings.
  • View a neural network by clicking on an audio track and selecting View->Champion from the top menu.

Change the parameters for the system by selecting NEAT->Edit parameters from the top menu. Try these settings:

  • Under the Population settings tab, select Gaussian for Activation function.
  • Under the Mutation settings tab, enter .3 for Weight update probability.
  • Under the Mutation settings tab, enter .3 for New node probability.
  • Under the Mutation settings tab, enter .4 for New 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.

djNEAT user interface.

Neural network representation of a genome.

Neural network representation of a genome.

Dialog window for changing NEAT parameters.

Dialog window for changing NEAT parameters.