Tony and PYIN are out of sync in terms of timestamps
|Assignee:||Matthias Mauch||% Done:|
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.
#1 Updated by Matthias Mauch over 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.
#3 Updated by Chris Cannam over 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)