projects | grooves | beats

Beats: evolutionary beat counting

This is a work in progress

I was recently reminded of my grooves idea: use evolving cellular automata to try an capture aspects of music. This was a wacky idea that I really don't have the time or expertise to follow up, although I'm sure it has some merit.

"Beats" is a much simpler idea: determine the tempo (beats per minute) of music through evolutionary means.

Beats

A Beat is represented by its tempo (BPM), and its start time.

Beats listen for a short period each time they expect a beat to occur. They respond to the volume (amplitude?) of the sound. The louder it is, the more energy they are given.

Beats require energy to live. Each time they listen costs a constant amount of energy.

If a Beat has enough energy, it may breed. Its offspring are clones, which may mutate slightly. Possible mutations:

Evolution at work

  1. Start playing some music.
  2. While there are less than some number (say, five hundred) Beats in the system, continue to add Beats of random BPM and offset. This keeps the system active.
  3. Beats will breed and die. Beats that are not in time will die off, and those that are in time (or just lucky) will breed.
  4. the BPM of the song should be the BPM of the Beat with the largest number of clones (or near-clones; taking into account those with very similar BPMs)

Commentary

The only assumption that this system makes is that the music is louder on the beat than off the beat. I think that this is a fair assumption to make.

The most appealing aspect of this project is that, if it is successful, the resulting system will work while having almost no "smarts" at all - it's just dumb evolution at work. It should also be robust enough to deal with changing tempo over time.

If you have any comments you would like to add, please mail beats@caseyporn.com.

Copyright caseyporn.com, 2001. All rights reserved. Contact caseyporn.

Moruya restaurant