Breakage logoBreakage

General
About
Download
History
 
Docs
Introduction
Tutorial
User manual
MIDI sync
FAQ
 
Extra
MIDI Data Miner
Japanese日本語

 
Latest news
1.12.06
Breakage v23 released
3.11.06
Breakage v22b released
23.10.06
Breakage v22 released
20.10.06
Breakage v21 released
4.10.06
Breakage v20 released
3.10.06
Added a poll - what next for Breakage?
Introducing Breakage

So Breakage is "an artificially intelligent drum machine". What does this mean?

Drum machines

First and foremost, Breakage is a software drum machine, like FLStudio or HammerHead. Drum machines are musical instruments for composing drum beats. A drum beat is drawn in a pattern grid (known as a pattern), which is made up of channels and steps.

A hardstep pattern in Breakage

A hardstep pattern in Breakage

Each horizontal row is a channel, representing one drum sound. This pattern has four channels: kick, snare, closed hat and open hat. Each circle is a step, representing the volume of the the channel, and each vertical columnis a point in time. A red circle means the drum will sound on that step; this is known as a hit. Black circles do not sound.

This patterns has two kick, two snare and four closed hat hits, and it sounds like this:

These are the essentials of composing breakbeats. There are more features (like soloing and muting channels), and other ways to do it (like cutting an existing break), but the basic step sequencing approach shown here is how Breakage works.

See also: Drum Machine

Artificial intelligence

Breakage is also research project. Using techniques from data mining, knowledge representation and statistics, Breakage is an ongoing experiment in bringing artificial intelligence into step sequencing. So what does this do for breakbeat composition?

Consider these three patterns:

There is clearly a correlation between the hits on the kick, snare and closed hat channels here. The number of kick hits corresponds to the number of closed hat hits. With a traditional step sequencer we can see that relationship in the display but we can't work with it. We have tools to edit individual steps and store / recall patterns, and perhaps some channel level functions like turning every other step on, but no tool to compose using the relationship itself. We know a correlation exists, but the drum machine doesn't.

Breakage uses a neural network to detect these relationships between channels. To do this, first we store the patterns to the database, then use the database to train the net. The net considers the kick and snare channels "input" and the hi hats "output" (this is show by the channel's colours) and learns how the all they relate to each other. When the net is trained and presented with a new input (by editing the kick and snare hits), it generates a suitable output (it adjusts the closed and open hat hits).

We measure how well trained the net is by its error. An error of 1 means the net is untrained; its output has no correlation to the input, which is obviously unhelpful. Vice versa, an error of 0 means the output is over-trained, outputting perfectly correlating patterns. Less obviously, the over-trained network is unhelpful because it is brittle and unable to adapt to new patterns. It's very "uncreative", not producing new outputs but only reproducing what it has already seen.

An error of 0.2 is usually a reasonable target. Trained to 0.2, presenting the original kick channels gives the closed hat outputs we expect - it has learned the patterns well. If we present the net with a new kick arrangement, it returns a new and appropriate closed hat output.

Net's output to a previously unseen input

The output is intuitive and useful. Note that the brightness of a hit shows its volume, from 0 to 100. It's particularly interesting in that people tend to compose breaks with on or off hits, where as the net's mathematical nature leads it to produce outputs that use the whole volume range.

See also: Artificial Neural Network, Overfitting

Summary: how to do this with Breakage

Start Breakage. Create some patterns and store them to the database. Train the neural net, watch the error go down. When the error stops changing, turn on 'auto generate'. Edit the input channels (use the channel's popup menu to set inputs and outputs), and see the outputs changing. See the tutorial for a more detailed guide.

Breakage © Ollie Glass 2006, ollieglaskovik [at] gmail [dot] com