Archive: beat enchancer


24th February 2004 04:09 UTC

beat enchancer
Here's a nifty preset that shows a bit of beat enchancing code to AVS. What it does is help prevent against erroneous or skipped beats. It works best in songs that have a regular beat, but occassionally have sounds thrown in that usually make AVS give a beat that wasn't supposed to be there, or for when you are using a menu in AVS (it estimates the next beat for you). In the preset, hold HOME and tap END to the beat to "train" the enchancer. This is sometimes necessary. I will probably post more detailed info later.

Also, I think UnConeD said he did some kind of beat modifying thing in one of his presets. What was the method that you used? I used gmegabuf to find the average BPM and then only admit beats that fell near an expected range according to that BPM/make a beat if one is expected but not recieved. I also made user interaction an impoartant part of the process.

I plan to use this technique in certain future presets, by the way (I'll make it optional, though).

Keep in mind that this is not a perfect solution to beat detection. It relies on the fact that AVS will generate accurate results at least most of the time, and will not work correctly on many songs or genres. That's why I am going to make it optional in my presets.


25th February 2004 02:41 UTC

I don't think it worked with some of my music. But nice idea.


25th February 2004 12:14 UTC

What I did in License to Chill is try to calculate the average BPM (with some tweaks to make it stick to the current bpm when it's homed in). That wasn't hard.

The difficultly was that I needed a steady beat for the dancing. So I made a variable 't' which advanced with the current bpm speed in radius, and used that for all the moves (which were mostly cosine/sine based). Whenever a beat hit, it would calculate whether not its predicted beat was on phase, and if not, it would softly accelerate or decelerate for a moment in order to get back on track. The nudge factor was calculated as:

-sin(bt*2)/abs(cos(bt))

for 'bt' the current position in radians.

The advantage is that when a beat was missed, it would keep on dancing, only just slow down a bit afterwards. When an extra beat was added, it would speed up a bit. However thanks to the nudge factor, the rhythm would easily get back on track when 2 or 3 good beats followed.


26th February 2004 01:59 UTC

Its a nice idea, it seemed to work well with a lot of my music. Definately a good idea to make it optional in presets though.


26th February 2004 03:40 UTC

Yeah, I'm planning to do something similar, only it "normalizes" songs. That way, I'll get accurate beat response, even on quite songs. It works something like this:

bt=if(abs(above(v,n*0.5),1,0)

Where 'n' is the highest volume the song has reached so far. That way, I can listen to all my non-normalized classical and jazz songs with AVS