# 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

Loudness

overall volume level.

Tonality

whether the sound has pitched components or is more noisy.

Centroid

whether the sound is generally low or high frequency.

Variance

whether the sound has a narrow or wide frequency spread.

Skewness

the skewness of the spectral distribution.

Kurtosis

the kurtosis of the spectral distribution.

Novelty

preference of the age of generated expressions.

# 2.2 Modifiers

Average

mean value over 2 minutes or so.

Variability

measure of deviation from the average.

Granularity

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.

code.mathr.co.uk/bitbreeder

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