Sì, questo è l'FFT! Per darti lo spettro di frequenza dei dati che fornisci. La parte difficile sono i dettagli di implementazione, come hai già detto.
A seconda di cosa vuoi fare, esattamente, cambia la risposta.
Se vuoi solo analizzare la tua musica, ci sono già dei software là fuori per farlo. Potresti guardare gli EQ che mostrano la risposta (fondamentalmente la FFT) o ottenere un "EQ musicale" che mostra anche i toni. Puoi ottenere l'audio di VST MIDI che convertono ciò che suoni nelle note MIDI corrette. Se la tua tastiera è midi, salta semplicemente i VST e registra direttamente il midi.
Se vuoi insegnare a te stesso la FFT e come si collega alla musica, allora è meglio ottenere qualcosa come Matlab in cui è possibile calcolare la FFT di qualsiasi dato. Ha la capacità di registrare e anche riprodurre insieme alla lettura di file WAV e simili. Questi poi sono davvero facili da usare. È possibile rappresentare graficamente l'audio ed eseguire tutti i tipi di analisi piuttosto rapidamente se si conosce la sintassi.
Se vuoi costruire un dispositivo per fare una cosa del genere, allora è piuttosto complesso. Avrai bisogno di un uC / dsp / fpga / etc per fare i calcoli. I dispositivi più popolari sono già dotati di codice FFT, quindi non dovrai codificarlo da solo (anche complicato).
Dovrai costruire i circuiti e tutto il resto. Non è difficile ma a seconda della tua esperienza / conoscenza potrebbe richiedere parecchio tempo e ha una curva di apprendimento ripida. Dipende anche dalla qualità del prodotto finale.
Matematicamente, una nota musicale ideale consiste in una serie geometrica del "fondamentale".
Supponiamo che F0 sia la frequenza fondamentale, quindi la maggior parte delle note musicali sarà approssimata da F (t) + F0 * sum (a_k e ^ (2 ^ k F0 * pi i t)) = F0 + a_1 * F1 + a_2 * F2 +. ...
Gli a_k sono solo la forza di quelle frequenze più alte F_k e F_k è solo un multiplo di F0. Se a_k = 0 per tutto k, allora abbiamo una sinusoide pura. Il tono di questo è facile da rilevare. Basta trovare il massimo della FFT e quella frequenza è fondamentale per il tono = la nota musicale.
Quando prendi la FFT, finisci con i dati e fai solo i conti. Fondamentalmente è un calcolo.
Tutto ciò è relativamente semplice.
Alcuni problemi che dovrai affrontare. Si noti che non tutti questi sono "risolti".
Latenza - Se hai intenzione di fare qualsiasi tipo di cose in tempo reale, questo può diventare un problema.
Note multiple - È difficile determinare il gruppo di note a causa di tutte le armoniche extra. Se si gioca A = 440hz e A '= 880hz, la maggior parte delle armoniche si sovrapporranno. Puoi facilmente ottenere A = 440hz, ma ottenere A '= 880hz è più difficile. Quando pensi ad accordi, corse veloci, ecc., Può essere molto difficile ottenere con precisione tutte le informazioni (note). Mentre tutto è generalmente matematicamente possibile, i dati stessi hanno errori e aberrazioni e le equazioni sono sotto definite in alcuni casi.
Rumore - Il rumore nel segnale può dare risultati spuri. Se si verifica un rumore musicale può rovinare i risultati. Sarebbero quindi necessari algoritmi migliori = tempo + denaro + conoscenza.