2011-11-06 11 views
7

Per determinare la ricchezza di un suono, vorrei per determinare il numero di armoniche in un campione di musica. Per questo, sto usando Elaborazione con la libreria Minim che mi offre uno spettro completo con un FFT. Mi chiedo come contare tutti i picchi nello spettro prodotto dalla FFT, non sono nemmeno interessato alla frequenza fondamentale.armoniche in un campione di musica

risposta

3

Ci sono molti modi di realizzare questa seconda delle esigenze.

Se si desidera contare ogni picco, è necessario scorrere tutte le frequenze dello spettro ricordando se l'intensità è aumentata o diminuita. Ogni volta che si nota il cambio di direzione da aumento a diminuzione, si aumenta il contatore di picco. Si noti tuttavia che questo includerà anche picchi molto deboli che potrebbero o meno essere ciò di cui si ha bisogno. È possibile impostare un limite minimo su quanto deve essere necessario aumentare o diminuire per registrare un picco.

In alternativa, è possibile trovare una linea di base per l'intensità del segnale (utilizzando la media nel caso più semplice) e quindi contare il numero di valori anomali positivi (con qualche deviazione minima configurabile dalla linea di base). Probabilmente otterrete risultati migliori se modificate questo approccio per utilizzare la baseline dipendente dalla frequenza e il minimo per tenere conto della diminuzione graduale dell'intensità alle frequenze più alte (di nuovo, dipende dal vostro particolare segnale e ha bisogno se questo sarebbe utile). Un modo semplice per farlo è quello di dividere lo spettro in bande (abbastanza piccolo da poter assumere una distribuzione di energia più o meno piatta in ogni banda) e utilizzare una linea di base e un valore minimo per ogni banda.