onset detection questions

paul santa clara kesserich1 at comcast.net
Wed Mar 21 19:49:52 CET 2007


Hi all,
	After perusing both the C and python code, I've run into a couple of  
conceptual questions about the transient detection functionality of  
aubio.  The first thing that puzzles me is that there seems to be an  
implicit 4 frame delay built into the peak picker algorithm.  In the  
case of my specific test files, for instance, this translate into an  
onset with a "now" value of 39 being reported during the processing  
of the 43rd frame read.  I assume this is because the peak picker can  
not read ahead, and thus can only identify a true peak AFTER the fact  
ie. the amplitude of subsequent frames must decline.  So, for my   
first question: I am right in this assumption? :)
	
The other thing aspect of the peak picker which has me scratching my  
head is that my tests have a revealed what looks like a one-off error  
to me. The typical scenario seems to be that something like this:

Frame        Onset Value
77                       0
78                       17324
79                       19192034
80                       3486258
81                       3955739                   <---isonset  
returns true

At this point, the peak picker will return that it is has located an  
onset  at frame 77 which is, I reckon, a pretty good call.  It does,  
however, specify a "now" value of .4469(77 * the hopsize/sample rate)  
which strikes me as a bit odd because that time actually represents  
the END of the 77th frame(or the beginning of the 78th). I guess it's  
a minor point but it seems like a recipe for an infamous one-off  
error to me.   Am I off base here?  Please correct me if i'm missing  
something. :)

Finally, i have noticed that PP sometimes significantly jumps the gun  
by a frame or two.  Please bear with me through another example of mine:

Frame              Onset Value
118                        0
119                        0
120                        11493177
121                        3928404
122                        729485                   <--isonset  
returns true

Here the reported time is .684 or the end of the 118th frame.  Up  
until i saw this, i was under the impression that the PP selected the  
last frame prior to the onset with a weighting of 0.0 as the local  
peak, but this clearly proves me wrong.  Visual analysis of the  
waveform indicates that the actual transient doesn't occur for one or  
even two more hops.  Could someone please explain to me the basics of  
the logic utilized by the PP algorithm?

My queries aside, i think this is great a library.  Thanks for all  
the hard work!

regards,
-paul


-- 
To unsubscribe, send mail to aubio-unsubscribe at piem.org.




More information about the aubio-user mailing list