Sto cercando di implementare un gioco di canto che analizzerà l'input di microfono crudo e dirà al giocatore quanto sta cantando bene. Questo deve essere fatto in tempo reale.
Mi sono imbattuto in molti thread che hanno posto la stessa domanda, ma non ne ho ancora abbastanza, probabilmente a causa della mia mancanza di esperienza nel campo e delle conoscenze matematiche poco profonde. Ho implementato un algoritmo basato sull'articolo del pitch shift del sito Web DSPDimension: http://www.dspdimension.com/admin/pitch-shifting-using-the-ft/
Estraggo la vera frequenza e magnitudine proprio come spiega l'articolo, ma non so trovare la frequenza fondamentale con questo. Ho cercato di ottenere il bidone con la massima magnitudine, ma ciò mi dà solo i risultati giusti per i segnali di tonalità più alta, non importa quale fattore di sovracampionamento che uso ottengo ancora dati cattivi per segnali a bassa frequenza. Questo approccio è completamente sbagliato o sono sulla buona strada ma mi manca qualcosa?
Grazie in anticipo,
EDIT: Ho dimenticato di menzionare che sono interessato solo alla classe di pitch, quindi va bene se manca il fondamentale ma ho un forte tono nel campione.
EDIT2: Grazie a tutti, ho appena finito una versione dell'algoritmo che funziona come un fascino. Il problema di stima del tono basso era dovuto al mio test di input. Quando ho cantato la nota, la corrispondenza è corretta. Inoltre, sto prendendo in considerazione tutte le armoniche ora, non solo il picco più alto.