I am working on a guitar hero like game prototype. and now I am looking for a tool that is able to extract the key beats of a song in addition to the height of the tune. is there something like this?

  • what do you mean by "height"? are you referring to amplitude? – Joshua K Sep 26 '09 at 17:20
  • 4
    just as another tip, you're probably going to need to learn a little about the math, physics, harmonic relationship, and concepts behind waveforms in order to expertly accomplish what you're looking to do with regards to the big picture of the game. good luck. stackoverflow will be a helpful resource. Also, as far as beat extraction, look at ReCycle by Propellerheads and the beatslicer included in FruityLoops. I'm sure there are open source analogs. – Joshua K Sep 26 '09 at 17:24
  • By 'beats' are you referring to Beats-Per-Minute (BPM)? or are you actually trying to extract the 'notes' from the song? Would those notes be from a piano? guitar? drums? cymbals? Each likely has a very different waveform pattern. An interesting challenge indeed! If just BPM, there seems to be several tools that do this out there. Please clarify – ericslaw Sep 27 '09 at 4:01
  • i am refering to the notes. and for the instrument, yes it may be any of those. usually the most significant one. if you played guitar hero, those notes are what i need as data. – clamp Sep 28 '09 at 17:52
  • You sound confused. "Extracting beats" and "extracting notes" are totally different things. Anyway, this sounds like a question for Stack Overflow: stackoverflow.com/questions/657073/… stackoverflow.com/questions/294468/note-onset-detection stackoverflow.com/questions/761397/… – endolith Oct 11 '09 at 15:33

To do this, you can invert the signal and then add them together. This extracts most vocal elements. Then use EQ to filter any remaining artifacts. This is usually effective in stripping it down to the beat. You'll have the hardest time maintaining the integrity of the extreme high's in hi-hats using this method, but it'll still sound good.

Here are more details:

| improve this answer | |
  • I suspect you know what you're doing, but this description doesn't make sense. A+(-A)=0, no? Perhaps you could be a little more precise. – dmckee --- ex-moderator kitten Sep 26 '09 at 17:09
  • I have added links demonstrating the technique and more. – Joshua K Sep 26 '09 at 17:15
  • 1
    Aha. Stereo folding, which means it works with many but not all tracks. Very good. – dmckee --- ex-moderator kitten Sep 26 '09 at 17:17
  • rockbox.org 'karaoke' mode does exactly this on my sansa mp3 player. It removes the 'shared' waveforms between the left and right stereo sound, because 'most' song mixes have vocals in the center. – ericslaw Sep 27 '09 at 3:55
  • You mean "invert one channel of a stereo sound file", and this doesn't remove "vocal elements", it removes anything that's common to both channels. And it's a very poor way to estimate the beat. – endolith Oct 11 '09 at 15:27

If you use Audacity, you should be able to see what you want.

alt text

If you are talking about actual integrating this into your program, your question would be better on Stack Overflow.

| improve this answer | |
  • thanks! well what i want is to redirect the output to some datafile that can be used by my program. – clamp Sep 26 '09 at 13:44
  • 2
    The picture doesn't help because it doesn't tell how to accomplish the task. The link is just a link to software. It is like a guy asking how to build a house and being handed a hammer. He is going to need it, but it doesn't answer the question. – Joshua K Sep 26 '09 at 17:18
  • Well, thanks a lot for that... I did not know exactly what he wanted from his original question and I thought he just wanted to visualise it and then build a program around it... for example, I can clearly see where the peaks are with relation to time. – William Hilsum Sep 26 '09 at 17:36

You should look at The Echo Nest's Analyze API. It's pretty easy to get an API key, and then you can just call the get_beats API. (Disclaimer: I've worked on the Analyze API for The Echo Nest).

If you are looking for code that you can run locally and modify, you might want to check out Marsyas.

| improve this answer | |
  • 1
    The Echo Nest API no longer works unfortunately. – dionyziz Jan 16 '17 at 1:15

Just use the BeatBox - Drum replacer http://mda.smartelectronix.com/ you can feed it audio, help it identify the different drum components via sliders and then map your drum sounds to the beat you just ripped. easy.

| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.