¿Cómo determina un algoritmo el tono / nota de un solo sonido?

La forma más fácil de hacer esto es usar la transformación de Fourier en un clip de sonido (probablemente desee usar el algoritmo de Transformación rápida de Fourier porque es, bueno, rápido).

Lo que te da esta transformación es qué frecuencias componen el sonido en ese clip.

  • Las frecuencias más altas no serán útiles. Básicamente, le están diciendo más sobre el ruido introducido por el micrófono y el equipo particular utilizado.
  • las frecuencias más bajas pueden no ser útiles. Si el sonido cambia en todo el clip, estas frecuencias le dirán cómo cambia. Supongo que su clip es de una sola nota, se mantiene bastante estable.
  • Hacia el extremo inferior, debería notar un pico claro en alguna frecuencia, seguido de picos cada vez más pequeños en múltiplos enteros de esa misma frecuencia. Esa frecuencia te da la nota que se está reproduciendo. Por ejemplo, si la frecuencia es de 440Hz, está escuchando una A (puede encontrar tablas para estas frecuencias o incluso calcularlas usted mismo).
  • Los picos en múltiplos de la frecuencia de la nota te dan los armónicos . La fortaleza de cada uno de ellos depende del instrumento en particular. Cada instrumento tiene un perfil diferente, por lo que una A tocada en una trompeta suena diferente de una A tocada en un violín.