Bug #868

funny candidate pitch track glitches

Added by Matthias Mauch almost 6 years ago. Updated 20 days ago.

Status:ClosedStart date:2014-02-04
Priority:NormalDue date:
Assignee:Matthias Mauch% Done:

0%

Category:-
Target version:-

Description

We observe that very often, the candidate pitch tracks obtained from pYIN are displayed incorrectly (or at least very implausibly) with large short upward bursts.

Why does this happen? Resolve it :)

Screen shot attached.

tony_pyin_glitch.png 86.9 KB, downloaded 18 times Matthias Mauch, 2014-02-04 06:05 PM

pyin.dylib 249 KB, downloaded 6 times Matthias Mauch, 2014-02-04 10:37 PM

Screen Shot 2014-02-18 at 1.42.36 PM.png 115 KB, downloaded 20 times Justin Salamon, 2014-02-18 06:54 PM

Screen Shot 2014-02-18 at 4.20.07 PM.png 54.1 KB, downloaded 23 times Justin Salamon, 2014-02-18 09:36 PM

History

#1 Updated by Matthias Mauch almost 6 years ago

  • Assignee set to Matthias Mauch

#2 Updated by Matthias Mauch almost 6 years ago

Much improved now! There still are some glitches, but they also have to do with Tony not knowing how pYIN changes timestamps -- we'll have to take account of that sometime.

I upload a new version of pyin, will soon push to pyin repo as well.

#3 Updated by Chris Cannam almost 6 years ago

Did you push your latest changes? I'd like to test.

I notice the code currently in the repo has a nasty case of the unsigned-comparison bug:

https://code.soundsoftware.ac.uk/projects/pyin/repository/entry/LocalCandidatePYIN.cpp#L352

(Comparing an unsigned value against -1 for the loop termination condition. See e.g. http://soundsoftware.ac.uk/c-pitfall-unsigned for more on this subject)

#4 Updated by Matthias Mauch almost 6 years ago

I notice the code currently in the repo has a nasty case of the unsigned-comparison bug:

https://code.soundsoftware.ac.uk/projects/pyin/repository/entry/LocalCandidatePYIN.cpp#L352

That was indeed nasty. Made it less nasty. but it's still kinda a hack.

(Comparing an unsigned value against -1 for the loop termination condition. See e.g. http://soundsoftware.ac.uk/c-pitfall-unsigned for more on this subject)

Ok thanks.

I really want to find a more principled solution to the problem of multiple pitch tracks. Haven't yet.

#5 Updated by Justin Salamon almost 6 years ago

I was trying out Tony with a real 'test-case' - imagine pYin misses a small bit of melody, creating a discontinuity in the f0 curve, and I want to use Tony to fill in the missing gap, even if it's very small. I just tried doing this, and got the following back (see image attached). Any idea what's going on?

#6 Updated by Justin Salamon almost 6 years ago

Also, still some glitches? (see attached)

#7 Updated by Matthias Mauch almost 6 years ago

Yes, that's sad but true.

I think there are two things we need to do here:

  • get a more principled approach to actually obtaining the candidates -- this is a bit silly to do with pyin as it is, actually, so I will need to think about it more clearly.
  • make Tony understand the timestamps that pyin is using (pyin, knowing how YIN uses the spectrum, shifts the timestamps forward to coincide with where the temporal centroid of the YIN analysis is, i.e. one quarter block-size into the frame, and hence also returns them shifted forward... Tony doesn't know that yet).

So this is work for me and Chris respectively, I think. I hope I can work on this soon.

Cheers,
Matthias

#8 Updated by Matthias Mauch almost 6 years ago

I think I've done both now, see: https://code.soundsoftware.ac.uk/issues/870

Maybe that needs a review by Chris though...

#9 Updated by Chris Cannam 20 days ago

  • Status changed from New to Closed

Also available in: Atom PDF