7

I'm building a rhythm-based game, and facing a lot of problems with rhythm-detection. I receive the current spectrum of a playing song. It looks like a float array with 512 floats. 256 for left and right channel representation. FFT is also available. But I have no idea how to work with that data, I've made some experiments with visualizing, but it gave me very few information. I've googled for some ready algorithms, but there is nothing. Please, can someone help me with, maybe, some references, materials, articles connected with rhythm detection, working with audio spectrum. Code will also be very helpful. Thanks.

xdegtyarev
  • 135
  • 1
  • 8
  • There are many software apps which already do that, so I am guessing the algorithm should be pretty straight forward, hoping to see some interesting comments here.. – notthetup Mar 27 '11 at 17:00
  • Just saw this googling for "audio beat detection algorithm".. Hope it helps.. http://www.flipcode.com/misc/BeatDetectionAlgorithms.pdf – notthetup Mar 27 '11 at 17:02

3 Answers3

4

Maybe you didn't use the right search-terms. Try to google 'tempo detection' or 'beat detection', together with 'code' or 'algorithm'. There are lots of papers, references, code examples, etc.

Just a few hits:

http://www.cs.princeton.edu/~lieber/cos325/final/

http://www.clear.rice.edu/elec301/Projects01/beat_sync/beatalgo.html

Itamar Katz
  • 9,544
  • 5
  • 42
  • 74
4

You might want to check out the source and project report for the Dancing Monkeys project. Dancing monkeys automatically generates stepfiles for DDR, and it does so using some rather sophisticated beat detection. It's written in matlab.

Nick Johnson
  • 100,655
  • 16
  • 128
  • 198
2

You should have a look at the beat spectrum algorithm: http://www.rotorbrain.com/foote/papers/icme2001/icmehtml.htm.
It extracts information about rythm and musical structure by computing the similarity of small samples' spectrograms. It is relatively easy to implement and allows robust information to be retrieved.

jeremy-george
  • 1,171
  • 1
  • 9
  • 20