Sono sorpreso da tutte le risposte qui suggerendo l'uso di FFT, dato che FFT non è generalmente abbastanza preciso per il rilevamento del passo. È può essere, ma solo con una finestra FFT non molto grande. Ad esempio, per determinare il fondamentale con 1/100 di precisione semitono (che è ciò che serve per il rilevamento preciso del pitch) quando il fondamentale è attorno al concerto A (440 Hz), è necessaria una finestra FFT con 524.288 elementi. 1024 è una dimensione FFT molto più tipica - il tempo di calcolo diventa progressivamente peggiore quanto più grande è la finestra.
Devo identificare l'intonazione fondamentale dei file WAV nel mio sintetizzatore software (dove una "miss" è immediatamente udibile come uno strumento fuori sintonia) e ho trovato che l'autocorrelazione è di gran lunga il miglior lavoro. Fondamentalmente, faccio scorrere ogni nota nella scala dei 12 toni su un intervallo di 8 ottave, calcolando la frequenza e la lunghezza d'onda di ogni nota, e poi eseguo un'autocorrelazione usando quella lunghezza d'onda come ritardo (una autocorrelazione è dove si misura la correlazione tra un insieme di dati e lo stesso insieme di dati sfalsati di una certa quantità di ritardo).
La nota con il punteggio più alto di autocorrelazione è quindi approssimativamente la tonalità fondamentale. Ho quindi "perfezionato" il vero fondamentale iterando da un semitono in basso a un semitono su 1/1000 di un semitono, per trovare il valore di autocorrelazione del picco locale.Questo metodo funziona in modo molto accurato e, cosa più importante, funziona per un'ampia varietà di file di strumenti (archi, chitarra, voci umane ecc.).
Questo processo è estremamente lento, tuttavia, soprattutto per le lunghe file WAV, quindi non poteva essere usato come un prodotto per un'applicazione in tempo reale. Tuttavia, se hai usato la FFT per ottenere una stima approssimativa della fondamentale, e poi hai usato l'autocorrelazione per azzerare il valore reale (e ti accontentavi di essere meno accurato del 1/1000 di un semitono, che è assurdamente eccessivo preciso) avresti un metodo che è stato relativamente veloce ed estremamente accurato.
... E si desidera sapere quali librerie e componenti utilizzare? – FrustratedWithFormsDesigner
Penso che tu abbia bisogno di chiarire la tua domanda. Hai affermato un desiderio generale, non domande specifiche. – CrimsonX
deve essere in sintonia o dovrebbe consentire note false? – Abel