Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    text
    copied!<p>Start by using a low-pass filter to trim out some of the higher-order harmonics. If the piano recordings that you are trying to process were recorded within a 3 octave range, that should help substantially.</p> <p>Next, try adjusting your wave amplitude. Here's an article that discusses how harmonic distortion degrades a signal, and how you can exchange signal-to-noise ratio for harmonic distortion.</p> <p><a href="http://www.mathworks.com/help/signal/examples/analyzing-harmonic-distortion.html" rel="nofollow">http://www.mathworks.com/help/signal/examples/analyzing-harmonic-distortion.html</a></p> <p>If you want more of a home-built solution without signal filtering, here's what I'd try, assuming that the maximum signal amplitude corresponds either to the fundamental, 2nd harmonic, or 3rd harmonic 1) Find the frequency f of the maximum signal 2) If the signal at f/2 or f/3 is much greater than the noise floor, call that frequency your fundamental</p> <p>Alternatively, 1) Find the frequency f of the maximum signal 2) Search above in the interval [f/2, 2*f] and find the peak nearest f. 3) Assume the difference between f and the nearest peak is 1 the fundamental frequency.</p> <p>You'll need to adapt these methods to your data. Make sure your data doesn't exhibit only odd order harmonics or has very strong high-order harmonics. These methods won't work well if multiple notes are played simultaneously.</p> <p>You could also try correcting your data for human ear sensitivity, as that may be the reason why the 2nd harmonics are louder on an FFT than what the ear detects relative to the fundamental. See <a href="http://en.wikipedia.org/wiki/Absolute_threshold_of_hearing" rel="nofollow">http://en.wikipedia.org/wiki/Absolute_threshold_of_hearing</a></p>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload