Sí, ¡de esto se trata la FFT! Para darle el espectro de frecuencia de los datos que alimenta. La parte difícil son los detalles de la implementación, como ha mencionado.
Dependiendo de lo que quieras hacer, exactamente, cambia la respuesta.
Si solo desea analizar su propia música, ya hay software para hacerlo. Puede ver los ecualizadores que muestran la respuesta (básicamente la FFT) u obtener un "ecualizador musical" que muestre los tonos también. Puede obtener audio para midi VST que convierte lo que toca en las notas midi correctas. Si su teclado es midi, simplemente omita los VST y grabe el midi directamente.
Si quieres enseñarte a ti mismo la FFT y cómo se relaciona con la música, entonces es mejor obtener algo como Matlab, donde puedes calcular la FFT de cualquier información. Tiene la capacidad de grabar y reproducir junto con la lectura de archivos wav y demás. Estos entonces para ser realmente fácil de usar. Puede graficar el audio y hacer todo tipo de análisis con bastante rapidez si conoce la sintaxis.
Si quieres construir un dispositivo para hacer tal cosa, entonces es bastante complejo. Necesitará un uC / dsp / fpga / etc para hacer los cálculos. La mayoría de los dispositivos populares ya vienen con código FFT, por lo que no tendrá que codificarlo usted mismo (también es complicado).
Necesitarás construir los circuitos y todo eso. No es difícil, pero dependiendo de su experiencia / conocimiento, puede llevar bastante tiempo y tiene una curva de aprendizaje muy pronunciada. También depende de la calidad del producto final.
Matemáticamente, una nota musical ideal consiste en una serie geométrica de lo "fundamental".
Supongamos que F0 es la frecuencia fundamental, entonces la mayoría de las notas musicales se aproximarán por F (t) + F0 * suma (a_k e ^ (2 ^ k F0 * pi i t)) = F0 + a_1 * F1 + a_2 * F2 + ....
Los a_k son solo la fuerza de esas frecuencias más altas F_k y F_k es solo un múltiplo de F0. Si a_k = 0 para todo k, entonces tenemos una sinusoide pura. El tono de esto es fácil de detectar. Simplemente encuentre el máximo de la FFT y esa frecuencia es la fundamental del tono = la nota musical.
Cuando tomas la FFT, terminas con datos que, y solo haces matemáticas. Es básicamente cálculo.
Todo lo que es relativamente fácil.
Algunos problemas con los que tendrás que lidiar. Tenga en cuenta que no todos estos están "resueltos".
-
Latencia: si va a hacer cualquier tipo de cosas en tiempo real, esto puede convertirse en un problema.
-
Notas múltiples: es difícil determinar el grupo de notas debido a todos los armónicos adicionales. Si el juego A = 440 hz y A '= 880 hz, la mayoría de los armónicos se superpondrán. Puede obtener fácilmente el A = 440 hz, pero obtener el A '= 880 hz es más difícil. Cuando piensas en acordes, ejecuciones rápidas, etc., puede ser muy difícil obtener toda la información con precisión (notas). Si bien en general todo es matemáticamente posible, los datos en sí tienen errores y anomalías, y en algunos casos las ecuaciones están poco definidas.
-
Ruido: el ruido en la señal puede dar resultados falsos. Si se produce un ruido musical puede arruinar sus resultados. Entonces se requerirían mejores algoritmos = tiempo + dinero + conocimiento.