I wrote a blog post a while ago about how to use FFT to find the pitch of an instrument. As I mention in the post, this is hardly the best way, but I think it's suitable for many applications. For example, you could write a perfectly serviceable guitar tuner with this.
The post links to code and includes some discussion of specific issues of time/frequency resolution and so on. I've been wanting to write about other methods, but... maybe when I retire :) http://blog.bjornroche.com/2012/07/frequency-detection-using-fft-aka-pitch.html On Thu, Jan 26, 2017 at 12:36 PM, Evan Balster <e...@imitone.com> wrote: > Philosophy rant: Frequency is a model. You can use tools that build on > that model to describe your signal in terms of frequency, but none of them > are going to be perfect. A pure 10hz tone is a mathematical abstraction > which you'll not find in any digital signal or measurable phenomenon. But, > *ooh > boy!* is that abstraction useful for modeling real things. > > If you have an extremely clean signal and you want an extremely accurate > measurement, my recommendation is to forgo fourier transforms (which > introduce noise and resolution limits) and use optimization or measurement > techniques in the time domain. In your example, *zero crossings are the > easiest and best solution* as Steffan suggests. > > Another interesting approach, which I mention for scholarly purposes, > would be to design a digital filter with a sloping magnitude response (even > the simplest one-pole lowpass could do) and apply it across the signal. > You can measure the change in the signal's power (toward the end, because > the sudden beginning of a sine wave produces noise) and find the frequency > for which the filter's transfer function produces that attenuation. This > filter-based technique (and related ones) can generalize to other problems > where zero-crossings are less useful. > > – Evan Balster > creator of imitone <http://imitone.com> > > On Thu, Jan 26, 2017 at 9:20 AM, STEFFAN DIEDRICHSEN <sdiedrich...@me.com> > wrote: > >> At that length, you can count zero-crossings. But that’s not a valid >> answer, I’d assume. >> But I found a nice paper on determining frequencies with FFTs using a >> gaussian window. Pretty accurate results. >> >> Best, >> >> Steffan >> >> >> On 26.01.2017|KW4, at 15:24, Theo Verelst <theo...@theover.org> wrote: >> >> Say the sample length is long enough for any purpose, like 10 seconds. >> >> >> >> _______________________________________________ >> dupswapdrop: music-dsp mailing list >> music-dsp@music.columbia.edu >> https://lists.columbia.edu/mailman/listinfo/music-dsp >> > > > _______________________________________________ > dupswapdrop: music-dsp mailing list > music-dsp@music.columbia.edu > https://lists.columbia.edu/mailman/listinfo/music-dsp > -- Bjorn Roche @shimmeoapp
_______________________________________________ dupswapdrop: music-dsp mailing list music-dsp@music.columbia.edu https://lists.columbia.edu/mailman/listinfo/music-dsp