# BitBreeder

An evolutionary system that evaluates noisy expressions (bytebeat-style functions of time) according to desired audio characteristics and cross-breeds and mutates the best ones.

Original blog post: BitBreeder (2013).

# 1 Streaming

Occasionally (or by appointment), bitbreeder.mathr.co.uk is online, streaming from my desktop at home, with a shared control interface web page.

# 2 Fitness

# 2.1 Audio Descriptors


overall volume level.


whether the sound has pitched components or is more noisy.


whether the sound is generally low or high frequency.


whether the sound has a narrow or wide frequency spread.


the skewness of the spectral distribution.


the kurtosis of the spectral distribution.


preference of the age of generated expressions.

# 2.2 Modifiers


mean value over 2 minutes or so.


measure of deviation from the average.


measure of how variable the variability is, or something.

# 3 Current Version

# 3.1 Web Interface

The bitbreeder program has a WebSocket server for control parameters. Open bitbreeder.html as a file in your web browser to connect to bitbreeder running on localhost.

# 4 Previous Version

# 4.1 GTK Interface

BitBreeder control

Tabs add multiple populations to interbreed.

Left column is preferred quantile relative to population of expressions.

Right column is weight of preference.

# 4.2 OpenGL Display

BitBreeder expression

As of January 2024, I added stereo support but there is no glyph for the channel variable yet.

As of February 2024, it’s no longer built by default, and probably needs some love to get working again.

# 5 Recordings

# 6 Performances

  • TOPLAP20, Saturday 24th February, 01:30 - 01:45 UTC, streaming online.
  • Festival Audioblast #12 : Resonant Futurs, Monday 19th February 2024, 00:00 - 23:00 CET, streaming online.
  • Slave To The Algorithm launch, Saturday 13th April 2013, London, UK.

# 7 Source Code

Requires Haskell toolchain at compile time (tested with GHC 9.0 through 9.8), and C toolchain at both compile time and runtime.


git clone https://code.mathr.co.uk/bitbreeder.git
cd bitbreeder
cabal install
mkdir o
bitbreeder +RTS -N$(nproc)