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