Pergunta

Como acompanhamento do meu anterior pergunta, se eu quero que meu aplicativo para smartphone detecte uma certa nota musical, e só preciso saber se o som de entrada é essa nota musical ou não, com uma certa quantidade de prejudicação, para permitir que a nota seja fora de chave por X centavos .

Dado isso, existe um método superior sobre os outros para velocidade e precisão? Ou seja, sabendo que a nota que você está procurando é, digamos, um #C3, qual a melhor forma de saber se essa nota está presente ou não? Suponho que procurar uma única nota seria mais fácil do que separar todas as formas de onda e, em seguida, olhar para os resultados para a frequência fundamental.

Nas respostas à minha pergunta original, um entrevistado sugeriu que a autocorrelação poderia funcionar bem se você souber que as notas estão dentro de um determinado intervalo. Gostaria de saber se a autocorrelação funcionaria ainda melhor, se você precisar verificar a presença ou ausência de uma determinada nota (+/- x centavos).

Esses métodos são:

  • Beijar fft
  • Fftw
  • Transformação de wavelet discreta
  • autocorrelação
  • Análise de cruzamento zero
  • Filtros com espaços de oitava
  • Dwt

Qualquer pensamento seria apreciado.

Foi útil?

Solução

Ao descrever, você só precisa determinar se um determinado tom está presente. Um detector muito simples (rápido) apenas registraria o equivalente a um período da forma de onda, depois registraria outro período e os correlacionou, como uma autocorrelação simplificada demais (LAG único). Se houver uma partida alta, você sabe que a forma de onda está repetindo no mesmo período, ou um harmônico dela.

Por exemplo, para detectar 1 kHz, registre 1 ms de áudio (48 amostras a 48 kHz), depois registre mais 1 ms e compare -as (correlato = multiplique todas as amostras e soma). Se eles se alinham (correlação acima de algum limite), você estará ouvindo 1 kHz, 2 kHz, 3 kHz ou algum outro múltiplo. Fazer vários períodos daria mais confiança na partida.

Uma verdadeira autocorrelação diria qual harmônico, especificamente, se isso for importante para você.

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