Domanda

Voglio creare un programma che rileva la nota che viene giocata di fronte al microfono. Sto testando la funzione FFT di Naudio, ma con i test che ho fatto in Audacity sembra che FFT non rilevi correttamente il tono. Ho suonato un C5, ma la scelta più alta era all'E7.

Ho cambiato la prima casella a discesa nella finestra dell'analisi della frequenza in "Autocorrelazione incantata" e successivamente la scelta più alta è stata a C5.

Ho cercato su Google "Autocorrelation Enchaced" e non ho avuto fortuna.

È stato utile?

Soluzione

Il picco più alto in uno spettro audio non è necessariamente il tono musicale in quanto un essere umano lo perceperebbe, specialmente in un suono con forti sfumature. Questo perché il tono è un fenomeno psico-percettivo umano, il cervello spesso deduce frequenze che non sono nemmeno presenti in una forma d'onda.

Metodi di auto-correlazione dell'auto di frequenza o stima del passo (approssimativamente, trovando quanto lontano anche una forma d'onda dall'aspetto divertente e/o non-sinusoidale nel tempo) è di solito una corrispondenza migliore per ciò che un essere umano chiamerebbe il tono. Il motivo di vari miglioramenti all'algoritmo di autocorrelazione è che la semplice autocorrelazione troverà un numero quasi infinito di lunghezze d'onda ripetute (ad esempio se si ripete ogni 1 secondo si ripete anche due volte ogni 2 secondi, ecc.) In qualche modo statisticamente meglio abbinare ciò che un essere umano indovinerebbe la stessa forma d'onda.

Altri suggerimenti

Probabilmente ti stai buttando via dalle armoniche. Hai provato a testare con un'onda sinusoidale per vedere se la FFT del tuo Naudio è nel campo da baseball?

Vedi questi riferimenti:http://cnx.org/content/m11714/latest/

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

Riga 48 in Spectrum.cpp Nel codice sorgente audacia sembra essere vicino a quello che vuoi. Fanno anche riferimento a un Carta IEEE di Tolonen e Karjalainen.

Bene, se riesci a vivere con GPLV2, perché non dare un'occhiata al codice sorgente di audacia?

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top