| \_/ | \_/ | ||||
| >Many optimizations have been done to the [YIN] algorithm for frequencies between 29-360Hz. | >Many optimizations have been done to the [YIN] algorithm for frequencies between 29-360Hz. | ||||
| >>While its still using a brute force method ( n<sup>2</sup> ) for finding the fundamental frequency f<sub>o</sub>, it is tuned to skip certain <b>tau</b> (<img src="http://rogercortesi.com/eqn/tempimagedir/eqn2874.jpg"/>) values and focus mostly on frequencies found in the bass and guitar. | |||||
| >>While its still using a brute force method ( n<sup>2</sup> ) for finding the fundamental frequency f<sub>o</sub>, it is tuned to skip certain <b>tau</b> (<img src="http://rogercortesi.com/eqn/tempimagedir/eqn7483.png"/></img>) values and focus mostly on frequencies found in the bass and guitar. | |||||
| >>>The input is double buffered so while you are processing one buffer it is filling the other to double throughput. | >>>The input is double buffered so while you are processing one buffer it is filling the other to double throughput. | ||||
| >>>>There are a few parameters that can be adjusted to "dial in" the algorithm for better estimations. The defaults are what I found that have the best trade off for speed and accuracy. | >>>>There are a few parameters that can be adjusted to "dial in" the algorithm for better estimations. The defaults are what I found that have the best trade off for speed and accuracy. | ||||
| <div> | <div> | ||||
| <b>YIN Algorithm</b> | <b>YIN Algorithm</b> | ||||
| <ol> | <ol> | ||||
| <li><b>Difference Function -</b> Squared difference of the (signal - signal lag(<img src="http://rogercortesi.com/eqn/tempimagedir/eqn2874.jpg"/>))</li> | |||||
| <li><b>Difference Function -</b> Squared difference of the (signal - signal lag(<img src="http://rogercortesi.com/eqn/tempimagedir/eqn7483.png"/></img>))</li> | |||||
| <img src="http://rogercortesi.com/eqn/tempimagedir/eqn1752.png" /> | <img src="http://rogercortesi.com/eqn/tempimagedir/eqn1752.png" /> | ||||
| <li><b>Cumulative Mean Normalized Difference Function -</b> Calculate the cumulative mean on the normalized difference signal</li> | <li><b>Cumulative Mean Normalized Difference Function -</b> Calculate the cumulative mean on the normalized difference signal</li> | ||||
| <img src="http://rogercortesi.com/eqn/tempimagedir/eqn3269.png" /> | <img src="http://rogercortesi.com/eqn/tempimagedir/eqn3269.png" /> | ||||
| <li><b>Absolute Threshold -</b> Fix for subharmonic error with Autocorrelation, choose (<img src="http://rogercortesi.com/eqn/tempimagedir/eqn2874.jpg"/>) that gives a minimum <img src="http://rogercortesi.com/eqn/tempimagedir/eqn3518.png"/></li> | |||||
| <li><b>Absolute Threshold -</b> Fix for subharmonic error with Autocorrelation, choose (<img src="http://rogercortesi.com/eqn/tempimagedir/eqn7483.png"/></img>) that gives a minimum <img src="http://rogercortesi.com/eqn/tempimagedir/eqn3518.png"/></li> | |||||
| </ol> | </ol> | ||||
| </div> | </div> | ||||