On Wed, Jan 14, 2009 at 06:39:48PM +0100, [email protected] wrote: > I have noticed that often peaks do not coincide with real beat starts: > peaks are detected "right shifted", that is some time after beat really > starts. This could be due to two reasons: 1) the LP filter cuts too low: > typically kick drums peaks at about 100 Hz, but if kick drum is not > present at the begin of a track also higher frequency range should be > considered. 2) the envelope of a typical kickdrum waveform: there is a > short raise time before peak is reached. This raise time (some tens ms) > could be subtracted to peak positions.
The envelope-follower part of the algorithm is supposed to have this effect, by predictively starting to rise upto 512 samples before the signal. But by the time it's gone through two LPFs, who knows what it looks like? Yes it is difficult to do BPM detection well, but it is definitely not impossible, because Pioneer do it very well. CDJs correctly detect BPM in about 99% of my tracks, which cover both 4/4 and stuff like breaks and drum'n'bass (the latter sometimes detected as half the actual BPM, but effectively the same) Unfortunately we stand little chance of figuring out how they do it (or, if we can from a patent, being able to copy it because it's patented). But clearly it is possible. The biggest thing missing from mixxx's BPM handling is manual beat marker placement (and auto-filling between the manual marks.) This could and should be as easy as using the Tap Tempo button to make marks, and then hunting for a peak within a few samples of the taps. But the Tap Tempo button needs to be on the GUI and able to be MIDI controlled which it wasn't last time I checked. Ben ------------------------------------------------------------------------------ This SF.net email is sponsored by: SourcForge Community SourceForge wants to tell your story. http://p.sf.net/sfu/sf-spreadtheword _______________________________________________ Mixxx-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/mixxx-devel
