Pergunta

Quero fazer um programa que detecte a nota que está sendo tocada na frente do microfone. Estou testando a função FFT de Naudio, mas com os testes que fiz no Audacity, parece que a FFT não detecta o tom corretamente. Eu joguei um C5, mas a escolha mais alta foi no E7.

Alterei a primeira caixa suspensa na janela de análise de frequência para "autocorrelação encantada" e, depois disso, a escolha mais alta foi no C5.

Pesquisei no Google "autocorrelação encantada" e não tive sorte.

Foi útil?

Solução

O pico mais alto de um espectro de áudio não é necessariamente o tom musical, pois um humano o perceberia, especialmente em um som com fortes conotações. Isso ocorre porque o tom é um fenômeno psico-perceptivo humano, o cérebro geralmente deduz frequências que nem estão presentes em uma forma de onda.

Métodos de correlação automática de estimativa de frequência ou afinação (aproximadamente, encontrar o quão distante até mesmo uma forma de onda de aparência engraçada e/ou não sinoidal as repetições no tempo) é geralmente uma correspondência melhor para o que um humano chamaria de tom. A razão para vários aprimoramentos no algoritmo de autocorrelação é que a autocorrelação simples encontrará um número quase infinito de comprimentos de onda repetidos (por exemplo, se repetir a cada 1 segundo, ele também repete duas vezes a cada 2 segundos, etc.), então o truque é ponderar a correlação para De alguma forma, estatisticamente combina melhor o que um humano adivinharia sobre a mesma forma de onda.

Outras dicas

Você provavelmente está sendo expulso por harmônicos. Você já tentou testar com uma onda senoidal para ver se a FFT do seu Naudio está no estádio?

Veja estas referências:http://cnx.org/content/m11714/latest/

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

Linha 48 in Spectrum.cpp No código -fonte do Audacity, parece estar próximo do que você deseja. Eles também fazem referência a um Papel IEEE de Tolonen e Karjalainen.

Bem, se você pode morar com GPLV2, por que não dar uma olhada no código -fonte do Audacity?

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top