waveform
2nd December 2001 14:38 UTC
Beat Detection Suggestions
I've got a couple of suggestions for the beat detection algorithm in AVS. Apologies if this post should go in the WinAmp suggestions / wish-list forum...
One of these I'm certain you'll have heard before, the other maybe not :
1) Would it be possible to have the beat detection algorithm automatically (or on demand) save detected BPM rates to a file? Note sure quite how useful this would be unless a stream of BPM data were saved (as opposed to a single value). On re-loading the values probably shouldn't be used literally but rather to "hint" to the algorithm the direction it should take at regular intervals? I was thinking of something along the lines of the Equalizer's auto-load preset functionality...
2) I've got quite a few songs where the beat detection never *quite* gets it right... Would it be possible to add a "manual" beat detection mode whereby the user tapping a key on the keyboard or clicking away on the mouse in time to the music would either set the BPM rate or give the algorithm a really strong "hint" about the kind of speed it should be looking at. Combined with the auto-load function above this could be quite powerful.
Finally, thanks to NullSoft and all the AVS coders for such an awesome piece of kit and a pile of fantastic presets (oh, BTW, love the new fullscreen overlay mode - even my rather underpowered laptop can now run fullscreen with decent fps!)
Cheers,
Dave.
geozop
4th December 2001 10:59 UTC
fantasizing
I was looking through the APE discussion, and then looked at the how-to for writing APEs. Because there already is an affect that can change the beat, why couldn't an APE be written for forcing the beat? I know a bit of C, but I doubt I'll be able to come up with anything by myself any time soon. Just a thought.
waveform
5th December 2001 00:06 UTC
Interesting idea! Unfortunately I can't seem to locate the bit in the APE discussion that mentions changing beat detection - could you point it out please?
On a wider note, I was thinking more along the lines of an addition to the beat detection algorithm inside WVS itself, since this would remove the need to add the APE to all the presets one wanted manual(ish) beat detection in.
I've had a quick butchers at the APE docs to see if I could bash together something like your suggestion relatively quickly. However, I'm a Delphi programmer by trade (Pascal based OO language) and it looks as though the APE structure makes use of C++ classes to talk to it's owning process. Though I'm usually pretty adept at translating C into Delphi I've drawn a blank on this one (I haven't often had to get down and dirty with C++ specifics when doing translations).
I'm not sure it's actually possible to emulate a C++ object from within Delphi especially given the differences in hierarchy structures (Delphi is similar to Java with single inheritance classes, multiple inheritance interfaces - though interfaces are mainly used for COM/OLE interaction).
Of course - I might be reading this completely wrong - feel free to correct my incompetence if this is the case! Either that, or I might be missing some obvious way around this (maybe C++ objects aren't as horribly mangled at the binary level as I've heard? :confused: )
However, all this does still leave the point that manual(ish) beat detection would probably be better implemented in WVS itself since it would then automatically apply to all presets (I think it semantically fits there a bit better, too).
Anyway - thanks for the reply, I'll be interested to see what replies this generates (aside from "God! Can't you write a short msg?!" ;) )
Dave.
geozop
7th December 2001 09:06 UTC
indeed
I took a real look at the build files for ape, and there is no mention of doing anything other than drawing to the framebuffer, so there actually is nothing there to help with beat manipulation.
for a more integrated form of beat manipulation, I'd recommend the mailing list for dev stuff on winamp and the avs plugin [winamp.com -> development (top right) -> mailing list (left side)]. I'd think starting a discussion there would be more helpful for you.
An idea: What if you were to make an app that controlled the variable that is the beat? You may have to find the address whilst looking at the memory, and looking for a byte (or worse, a bit) that is changing with the beat. Then, you could add in your beat rate/stream file (one per song) idea for the app. Though, it would be some work and very less an integration of you idea for avs.
Good luck
JSwing
12th March 2003 18:22 UTC
Does anyone know how to write a beat detection in java? Or any suggestion on how to write it using Java???
Thank you,
JSwing
anubis2003
12th March 2003 21:15 UTC
Holy crap, This thread is old!!! Please do not revive old threads. Also, another thread was just started about this. Look at it.
Rovastar
14th March 2003 20:59 UTC
Clunk