Pregunta

Quiero hacer un programa que detecte la nota que se juega frente al micrófono. Estoy probando la función FFT de Naudio, pero con las pruebas que hice con audacia parece que FFT no detecta el tono correctamente. Jugué un C5, pero la elección más alta fue en E7.

Cambié el primer cuadro desplegable en la ventana de análisis de frecuencia a "autocorrelación encendida" y después de eso, la elección más alta fue en C5.

Busqué en Google "Autocorrelación encendida" y no tuve suerte.

¿Fue útil?

Solución

El pico más alto en un espectro de audio no es necesariamente el tono musical, ya que un humano lo percibiría, especialmente en un sonido con conmovidos fuertes. Esto se debe a que el tono es un fenómeno psicoperceptual humano, el cerebro a menudo deducirá frecuencias que ni siquiera están presentes en una forma de onda.

Los métodos de correlación de auto-correlación de frecuencia o estimación de tono (aproximadamente, encontrar qué tan separado incluso una forma de onda de aspecto divertido y/o no sinusoidales se repite a tiempo) suele ser una mejor coincidencia para lo que un humano llamaría tono. La razón de varias mejoras en el algoritmo de autocorrelación es que la autocorrelación simple encontrará un número casi infinito de longitudes de onda de repetición (por ejemplo, si se repite cada 1 segundo, también se repite dos veces cada 2 segundos, etc.), por lo que el truco es ponderar la correlación De alguna manera, estadísticamente mejor coincide con lo que un humano supondría sobre la misma forma de onda.

Otros consejos

Es probable que los armónicos lo sientan. ¿Has intentado probar con una ola sinusoidal para ver si el FFT de tu naudio está en el estadio?

Ver estas referencias:http://cnx.org/content/m11714/latest/

http://www.gamedev.net/community/forums/topic.asp?topic_id=506592&whichpage=1�

Línea 48 en Spectrum.cpp En el código fuente de Audacity, parece estar cerca de lo que desea. También hacen referencia a un IEEE Paper de Tolonen y Karjalainen.

Bueno, si puedes vivir con GPLV2, ¿por qué no echar un vistazo al código fuente de Audacity?

http://audacity.sourceforge.net/download/beta_source

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top