Bug #870

Tony and PYIN are out of sync in terms of timestamps

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

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

0%

Category:-
Target version:-

Description

This has been mentioned by Rachel somewhere, but I can't find it any more.

When Tony sends the audio to pyin for candidate output, pyin does what it always does: because it has time-domain input, the timestamp is the beginning of the frame, and pyin re-adjusts that to a quarter through the frame, where the YIN algorithm has it's main weight.

Tony doesn't "know" this, and so the returned pitch estimates are "later" than Tony expected them to be. As a result, there's a gap between the existing pitch track on the left and the candidates, and on the right, the existing pitch track might actually overlap with the candidates — that's obviously not a good state to be in. -- What could be done to alleviate it?

I assign to Chris because I think the obvious solution (for now) may be to send audio to pyin that starts an appropriate time interval before the selection.

pyin.dylib 239 KB, downloaded 8 times Matthias Mauch, 2014-02-19 06:22 PM

History

#1 Updated by Matthias Mauch almost 6 years ago

  • File pyin.dylib added
  • Assignee changed from Chris Cannam to Matthias Mauch

Re-assigned to myself.

I did two things:

  • make sure that the times that Tony puts out to pyin are 256-samples quantised
  • actually give more audio to pyin, such that now (I think!) there should be no more gaps between the original and the candidate pitch tracks

For me it works, but I also made quite significant changes to pyin, so please find the new binary attached. I'll also commit in time.

#2 Updated by Matthias Mauch almost 6 years ago

But.... beware, there must be a bug somewhere in pyin now... it has some random glitches that I can't trace yet... I'll keep you updated.

#3 Updated by Chris Cannam almost 6 years ago

Somewhat offtopic, but it breaks my heart to read things like "please find the new binary attached. I'll also commit in time".

I really hope you aren't trying to distribute and test code that you haven't even committed yet -- you'll never manage to keep track of what you've done if you have no record of what was in the build.

If you don't push your commits, I can't test them at all, since I'm not using the same platform as you. And if someone has problems with the build you've posted, they can't act on that because they have no idea what code it was built from.

Committing and pushing is far easier than building and uploading a platform binary. Please, do it as a matter of course when (or before) you tell us what you've been doing. If I can't see the code, the work hasn't happened.

(Yes, I'll be back in the office tomorrow, being annoying. Grumble ends for tonight)

#4 Updated by Matthias Mauch almost 6 years ago

Haha, yesyes. I didn't mean to break your heart, Chris!

Pyin updates are now pushed, but still not very well tested.

Matthias

#5 Updated by Chris Cannam 20 days ago

  • Status changed from New to Closed

Also available in: Atom PDF