Detecting pitch automatically - The intuition behind the YIN pitch detection algorithm

preview_player
Показать описание
Sound is messy and difficult to deal with, yet with some simple techniques, we are able to write a short program which deals well with pitch detection in many real cases of monophonic audio. This video covers the main steps used in the YIN pitch detection algorithm [1] and visualizes the underlying concepts with various animations.

[1]: De Cheveigné, A., & Kawahara, H. (2002). YIN, a fundamental frequency estimator for speech and music. The Journal of the Acoustical Society of America, 111(4), 1917-1930.

Corrections:
- The 2 samples played at 0:40 are not actually the same pitch, but 1 octave apart, specifically 110 Hz and 220 Hz respectively.

_____
Music by:
Cursedsnake

Nicolaj Valsted:

Рекомендации по теме
Комментарии
Автор

Excellent job! It's wonderful how you lay out all the code for the tactics you describe. I also love the overall narrative structure of developing partial solutions that don't generally work but slowly refining the main idea until there's a final impressive (and at this point quite understandable) tactic.

bluebrown
Автор

Implementing this sounds like a great exercise when wanting to learn SIMD programming and in general program optimization, since the math can more or less be done independently for each sample in the window

perli
Автор

why this is the only video you have bro just keep up !!!

yusufcan
Автор

Hope all is well and that you return. Great clip.

errorpagenotfound.
Автор

Just Amazing!!

11:10 It takes a lot of time to run in G-colab, for an 8 second input .wav file. 30 mins + still running. I am dropping this for now. Anyways many thanks.

ananthakrishnank
Автор

Thanks for covering this topic. I've always enjoyed the overlap of music theory and mathematics, and this kind of thing immediately (though much less formally defined) came to mind when I first learned about Fourier transforms. But now there's a well made video that really gets into a practical way this is actually done, with or without that knowledge, and for much more complicated - and closer to reality - cases.
I really liked how you included multiple approaches and how they could fail or have issues, and how you went about to get a better process.

sinewavey
Автор

Very nice video! I liked the graphics and the explainations! The final part with the real voice was amazing!! Thank you for the video!

MATHsegnale
Автор

This is a wonderful video and explains things very clearly. I was wondering, is there any possibility of you sharing your final code? Also, what changes could be made when taking a continuous signal, such as real-time input from a microphone (instead of a wav file)? I hope to see more from you!

mikehedges
Автор

Can’t believe I’m gonna be the third subscriber of this channel.

botam
Автор

Hi... i'm thank You for this. I've tested it, you explined this beautifuly. Just gonna accupy my self with this for a week. THANK
Reading the original paper with no math background is a pain (sorry..). The math symbol is abstract to me(third world country education system). WE NEED PEOPLE LIKE YOU To populate the internet.

ericadruin
Автор

Hey! I don't know if you're still active here, but I optimized the code you shared on Github to probably be good enough for real time and added the option of parabolic interpolation (step 5 in the original YIN paper). If you're interested in it, let me know how to contact you (I don't want to share anything that's based on your work here without your approval).

Thanks for the awesome video! Your modular implementation of the steps described in the paper was great for understanding it :)

pablosml
Автор

How are you making these animations? They're beautiful!

reportdabug
Автор

Thank you very much for this useful video!
By the way, is detecting polyphonies much different from this?

porkypooky
Автор

I cannot find what I'm doing wrong in the first step. I keep getting an output of 0.49 rather than the expect 0.98, any thoughts?

computergeek
Автор

I am slightly confused at the absolute threshold step. The paper says to look for minima (first in the sequence) that is below the threshold, but the way you implemented it does not consider if it is a minima. If the value is less than the threshold, you are considering that to be the period. Could you please explain this.

ankitanand
Автор

0:55, I don't hear the same pitch. Maybe the piano, if it is a real piano, is out of tune. Or the guitar. But I hear two distinct notes.

technofeeliak
Автор

Great video. I just didnt understand why limiting the lag values through the bound parameter limits the frequency we can detect?

kikodasneves
Автор

How do I give you money for this masterpiece?

recluse-audio
Автор

can you send me a link to your code please?

atharvasaney
Автор

Does anyone know of a way to do this in C?? Thank you!

marshallchadbourne